<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'>
  <id>tag:blogger.com,1999:blog-20280042
  </id>
  <updated>
    2020-09-08T16:26:13.668-07:00
  </updated>
  <title type='text'>EMACSPEAK  The Complete Audio Desktop
  </title>
  <subtitle type='html'>
    Here is where I plan to Blog Emacspeak tricks and introduce new
    features as
    I implement them.
  </subtitle>
  <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://emacspeak.blogspot.com/feeds/posts/default'/>
  <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default?max-results=1000'/>
  <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/'/>
  <link rel='hub' href='http://pubsubhubbub.appspot.com/'/>
  <author>
    <name>T. V. Raman
    </name>
    <uri>
      http://www.blogger.com/profile/03589687652590194428
    </uri>
    <email>noreply@blogger.com
    </email>
    <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
  </author>
  <generator version='7.00' uri='http://www.blogger.com'>Blogger
  </generator>
  <openSearch:totalResults>
    168
  </openSearch:totalResults>
  <openSearch:startIndex>1
  </openSearch:startIndex>
  <openSearch:itemsPerPage>1000
  </openSearch:itemsPerPage>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5507747641266165893</id><published>
      2024-03-18T20:53:00.000-07:00
    </published>
    <updated>2024-03-18T20:53:22.701-07:00</updated><title type='text'>
      Smart Media Selector For The Emacspeak Audio Desktop 
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Smart Media Selector For The Audio
      Desktop&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org15514aa&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org15514aa&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Overview&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      This blog article outlines the media selector implementation in
      Emacspeak  and shows how a small amount of Lisp code built atop
      Emacs&#39; 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&#39;s laptops,
      especially
      given the speed of disk access.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org9a3ab1b&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org9a3ab1b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; User
      Experience&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      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!
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org1acff4f&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org1acff4f&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.1.&lt;/span&gt;
      Pre-requisites for content selection and playback&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-1&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Launch either MPV (via package
      &lt;code&gt;empv.el&lt;/code&gt;) or
      &lt;code&gt;mplayer&lt;/code&gt; via
      Emacspeak&#39;s &lt;code&gt;emacspeak-mplayer&lt;/code&gt; with a
      few keystrokes.&lt;/li&gt;
      &lt;li&gt;Media selection uses &lt;code&gt;ido&lt;/code&gt; with
      &lt;code&gt;fuzzy&lt;/code&gt; matching.&lt;/li&gt;
      &lt;li&gt;Choices are filtered incrementally for efficient eyes-free
      interaction; see the relevant blog article on
      &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2018/06/%20effective-suggest-and-complete-in-eyes.html&quot;&gt;Search, Input, Filter, Target&lt;/a&gt; for additional background.&lt;/li&gt;
      &lt;li&gt;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
      &lt;i&gt;play-list&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;Searching and filtering can also occur across the list of
      all
      9,100+ media files spread across 700+ directories.&lt;/li&gt;
      &lt;li&gt;Starting point of the SIFT process should be influenced by
      one&#39;s current context, e.g., default-directory.&lt;/li&gt;
      &lt;li&gt;Each step of this process should have reasonable
      fallbacks.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgb044db1&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgb044db1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; Mapping Design
      To Implementation&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Directory where we start AKA &lt;i&gt;context&lt;/i&gt; is
      selected by function  &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-m-player.el#L357&quot;&gt;emacspeak-media-guess-directory&lt;/a&gt;.
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;If default directory matches
      emacspeak-media-directory-regexp,use it.&lt;/li&gt;
      &lt;li&gt;If default directory contains media files, then use
      it.&lt;/li&gt;
      &lt;li&gt;If default directory contains directory emacspeak-media
      &amp;#x2014; then use it.&lt;/li&gt;
      &lt;li&gt;Otherwise use emacspeak-media-shortcuts as the
      fallback.&lt;/li&gt;
      &lt;/ol&gt;&lt;/li&gt;
      &lt;li&gt;Once we have selected the context, function
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-m-player.el#L426&quot;&gt;emacspeak-media-read-resource&lt;/a&gt;uses &lt;code&gt;ido&lt;/code&gt; style interaction with
      fuzzy-matching to pick the file to play.&lt;/li&gt;
      &lt;li&gt;That function uses Emacs&#39; built-in
      &lt;code&gt;directory-files-recursively&lt;/code&gt;
      to build the &lt;code&gt;collection&lt;/code&gt; to hand-off to
      &lt;code&gt;completing-read&lt;/code&gt;; It
      uses an Emacspeak provided function &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-speak.el#L92&quot;&gt;ems&amp;#x2013;subdirs-recursively&lt;/a&gt; to
      build up the list of 755+ sub-directories that live under
      &lt;span
      
      class=&quot;underline&quot;&gt;$XDG&lt;sub&gt;MUSIC&lt;/sub&gt;&lt;sub&gt;DIR&lt;/sub&gt;&lt;/span&gt;.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org471fc48&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org471fc48&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Resulting
      Experience&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;I can pick the media to play with a few
      keystrokes.&lt;/li&gt;
      &lt;li&gt;I use Emacs&#39; &lt;code&gt;repeat-mode&lt;/code&gt; to
      advantage whereby I can quickly
      change volume etc  once content is playing before going back to
      work.&lt;/li&gt;
      &lt;li&gt;There&#39;s &lt;b&gt;no&lt;/b&gt; media-player UI to get
      in my way while working, but I
      can stop playing media with a single keystroke.&lt;/li&gt;
      &lt;li&gt;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!&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org091f582&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org091f582&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; The Lisp
      Code&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      The hyperlinks to the Emacspeak code-base are the source of
      truth. I&#39;ll  include a snapshot of the  functions mentioned
      above for completeness.
      &lt;/p&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org0433a76&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org0433a76&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1.&lt;/span&gt; Guess
      Context&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-5-1&quot;&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;  (&lt;span
      style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color:
      #7fce5f;&quot;&gt;emacspeak-media-guess-directory&lt;/span&gt; ()
      &lt;span style=&quot;color: #99bfcf; font-style:
      italic;&quot;&gt;&quot;Guess media directory.&lt;/span&gt;
      &lt;span style=&quot;color: #99bfcf; font-style: italic;&quot;&gt;1.
      If default directory matches emacspeak-media-directory-regexp,use
      it.&lt;/span&gt;
      &lt;span style=&quot;color: #99bfcf; font-style: italic;&quot;&gt;2.
       If default directory contains media files, then use
      it.&lt;/span&gt;&lt;span style=&quot;color: #99bfcf; font-style:
      italic;&quot;&gt;3. If default directory contains directory
      emacspeak-media --- then use it.&lt;/span&gt;
      &lt;span style=&quot;color: #99bfcf; font-style: italic;&quot;&gt;4.
      Otherwise use emacspeak-media-shortcuts as the
      fallback.&quot;&lt;/span&gt;
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;cl-declare&lt;/span&gt; (special
      emacspeak-media-directory-regexp
      emacspeak-media emacspeak-m-player-hotkey-p))
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;let&lt;/span&gt; ((case-fold-search t))
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;cond&lt;/span&gt;
      ((&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;or&lt;/span&gt; (eq major-mode &#39;dired-mode) (eq
      major-mode &#39;locate-mode)) nil)
      (emacspeak-m-player-hotkey-p   emacspeak-media-shortcuts)
      ((&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;or&lt;/span&gt;                              
      &lt;span style=&quot;color: #eaa4a4; font-style: italic;&quot;&gt;; 
      &lt;/span&gt;&lt;span style=&quot;color: #eaa4a4; font-style:
      italic;&quot;&gt;dir  contains media:&lt;/span&gt;
      (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))))
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org932506f&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org932506f&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.2.&lt;/span&gt; Read
      Resource&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-5-2&quot;&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(&lt;span
      style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color:
      #7fce5f;&quot;&gt;emacspeak-media-read-resource&lt;/span&gt;
      (&lt;span style=&quot;color:
      #41bf4f;&quot;&gt;&amp;amp;optional&lt;/span&gt; prefix)
      &lt;span style=&quot;color: #99bfcf; font-style:
      italic;&quot;&gt;&quot;Read resource from minibuffer.&lt;/span&gt;
      &lt;span style=&quot;color: #99bfcf; font-style: italic;&quot;&gt;If
      a dynamic playlist exists, just use it.&quot;&lt;/span&gt;
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;cl-declare&lt;/span&gt; (special
      emacspeak-media-dynamic-playlist
      emacspeak-m-player-hotkey-p))
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;cond&lt;/span&gt;
      (emacspeak-media-dynamic-playlist nil) &lt;span style=&quot;color:
      #eaa4a4; font-style: italic;&quot;&gt;; &lt;/span&gt;&lt;span
      style=&quot;color: #eaa4a4; font-style: italic;&quot;&gt;do nothing
      if dynamic playlist&lt;/span&gt;
      (emacspeak-m-player-hotkey-p (emacspeak-media-local-resource
      prefix))   (t                               &lt;span
      style=&quot;color: #eaa4a4; font-style: italic;&quot;&gt;;
      &lt;/span&gt;&lt;span style=&quot;color: #eaa4a4; font-style:
      italic;&quot;&gt;not hotkey, not dynamic playlist&lt;/span&gt;
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;let*&lt;/span&gt; ((completion-ignore-case t)
      (read-file-name-completion-ignore-case t)
      (filename
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;when&lt;/span&gt; (memq major-mode &#39;(dired-mode
      locate-mode))
      (dired-get-filename &#39;local &#39;no-error)))
      (dir (emacspeak-media-guess-directory))
      (collection
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;or&lt;/span&gt;
      filename                   &lt;span style=&quot;color: #eaa4a4;
      font-style: italic;&quot;&gt;; &lt;/span&gt;&lt;span
      style=&quot;color: #eaa4a4; font-style:
      italic;&quot;&gt;short-circuit expensive call&lt;/span&gt;
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;if&lt;/span&gt; prefix
      (ems--subdirs-recursively  dir) &lt;span style=&quot;color: #eaa4a4;
      font-style: italic;&quot;&gt;;&lt;/span&gt;&lt;span
      style=&quot;color: #eaa4a4; font-style: italic;&quot;&gt;list
      dirs&lt;/span&gt;
      (directory-files-recursively dir emacspeak-media-extensions)))))
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;or&lt;/span&gt; filename (completing-read &lt;span
      style=&quot;color: #65d5a8;&quot;&gt;&quot;Media:
      &quot;&lt;/span&gt;  collection))))))
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      
      &lt;div id=&quot;outline-container-org4cb0687&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org4cb0687&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.3.&lt;/span&gt; Helper:
      Recursive List Of Sub-directories&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-5-3&quot;&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;
      &lt;span style=&quot;color: #eaa4a4; font-style:
      italic;&quot;&gt;;;; &lt;/span&gt;&lt;span style=&quot;color:
      #eaa4a4; font-style: italic;&quot;&gt;Helpers: subdirs&lt;/span&gt;
      
      
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;defconst&lt;/span&gt; &lt;span style=&quot;color:
      #2fd0db;&quot;&gt;ems--subdirs-filter&lt;/span&gt;
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;eval-when-compile&lt;/span&gt;
      (concat (regexp-opt &#39;(&lt;span style=&quot;color:
      #65d5a8;&quot;&gt;&quot;/..&quot;&lt;/span&gt; &lt;span
      style=&quot;color: #65d5a8;&quot;&gt;&quot;/.&quot;&lt;/span&gt;
      &lt;span style=&quot;color:
      #65d5a8;&quot;&gt;&quot;/.git&quot;&lt;/span&gt;)) &lt;span
      style=&quot;color: #65d5a8;&quot;&gt;&quot;$&quot;&lt;/span&gt;))
      &lt;span style=&quot;color: #99bfcf; font-style:
      italic;&quot;&gt;&quot;Pattern to filter out dirs during
      traversal.&quot;&lt;/span&gt;)
      
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;defsubst&lt;/span&gt; &lt;span style=&quot;color:
      #7fce5f;&quot;&gt;ems--subdirs&lt;/span&gt; (d)
      &lt;span style=&quot;color: #99bfcf; font-style:
      italic;&quot;&gt;&quot;Return list of subdirs in directory
      d&quot;&lt;/span&gt;
      (cl-remove-if-not #&#39;file-directory-p (cddr (directory-files d
      &#39;full))))
      
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color:
      #7fce5f;&quot;&gt;ems--subdirs-recursively&lt;/span&gt; (d)
      &lt;span style=&quot;color: #99bfcf; font-style:
      italic;&quot;&gt;&quot;Recursive list of  subdirs&quot;&lt;/span&gt;
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;cl-declare&lt;/span&gt; (special
      ems--subdirs-filter))  (&lt;span style=&quot;color: #70a0ff;
      font-weight: bold;&quot;&gt;let&lt;/span&gt; ((result (list d))
      (subdirs (ems--subdirs d)))
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;cond&lt;/span&gt;
      ((string-match ems--subdirs-filter d) nil)                          
         &lt;span style=&quot;color: #eaa4a4; font-style:
      italic;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #eaa4a4;
      font-style: italic;&quot;&gt;pass&lt;/span&gt;
      (t
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;cl-loop&lt;/span&gt;
      for dir in subdirs
      if (not (string-match ems--subdirs-filter dir)) do
      (&lt;span style=&quot;color: #70a0ff; font-weight:
      bold;&quot;&gt;setq&lt;/span&gt; result  (nconc result
      (ems--subdirs-recursively dir))))))
      result))
      
      
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5507747641266165893'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5507747641266165893'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2024/03/smart-media-selector-for-emacspeak.html' title='Smart Media Selector For The Emacspeak Audio Desktop '/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6583907408650234123</id><published>
      2023-12-19T17:58:00.000-08:00
    </published>
    <updated>2023-12-19T17:58:22.407-08:00</updated><title type='text'>
      Emacspeak: Hidden Holiday Gems 
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Emacspeak HHG: Hidden Holiday
      Gems&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org00cfc27&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org00cfc27&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Introduction&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      This is an Emacspeak-specific follow-on to my article &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2023/12/emacs-hidden-holiday-gems.html&quot;&gt;Emacs: Hidden
      Holiday Gems&lt;/a&gt;.  This article extends its predecessor by:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Adding Emacspeak-specific details for each gem; the
      earlier article
      purposely avoided anything Emacspeak-specific.&lt;/li&gt;
      &lt;li&gt;Where appropriate, I&#39;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.&lt;/li&gt;
      &lt;li&gt;As before, the goal is not to be exhaustive; &amp;#x2014;
      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 
      &lt;a
      
      href=&quot;https://mail.emacspeak.net/sympa/arc/emacspeak/2023-12/msg00004.html&quot;&gt;Emacspeak Mailing List&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;All topics covered here are already well-documented in the
       Emacs
      and Emacspeak manuals, and this article will not attempt to replace
      those.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org798900a&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org798900a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Emacspeak:
      Hidden Holiday Gems&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;dl class=&quot;org-dl&quot;&gt;
      &lt;dt&gt;Selective Display&lt;/dt&gt;&lt;dd&gt;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;
      &lt;i&gt;selective-display&lt;/i&gt; provides the same affordance
      when you cannot
      see the display.&lt;/dd&gt;
      &lt;dt&gt;Registers&lt;/dt&gt;&lt;dd&gt;Easily becomes part of
      muscle-memory, especially when
      moving text around, duplicating content in multiple locations. For
      more complex use-cases, I use &lt;i&gt;yasnippets&lt;/i&gt;, which
      is one of Emacs&#39;
      many template libraries.&lt;/dd&gt;
      &lt;dt&gt;Bookmarks&lt;/dt&gt;&lt;dd&gt;Emacspeak builds heavily on
      Emacs&#39; built-in
      bookmarks to provide:
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Persistent bookmarks when reading EPub and Bookshare
      books.&lt;/li&gt;
      &lt;li&gt;Audio Marks (AMarks) within org-mode buffers for
      marking locations  in audio streams such as Podcasts.&lt;/li&gt;
      &lt;li&gt;An Emacspeak &lt;i&gt;browser&lt;/i&gt; for browsing saved
       &lt;i&gt;eww-marks&lt;/i&gt; and
      &lt;i&gt;a-marks&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;Together, the above make a very useful &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2022/10/learn-smarter-by-taking-rich-hypertext.html&quot;&gt;note-taking&lt;/a&gt; extension to
      org-mode.&lt;/li&gt;
      &lt;/ol&gt;&lt;/dd&gt;
      &lt;dt&gt;Tabulated Lists&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;
      Implements tabulated UIs and is speech-enabled by Emacspeak.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak augments it with additional keyboard
      navigation.&lt;/li&gt;
      &lt;li&gt;This is leveraged in Emacs by a variety of&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      end-user packages including &lt;i&gt;package.el&lt;/i&gt; and its
      asynchronous cousin &lt;i&gt;paradox.el&lt;/i&gt;.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;It is also used to advantage by &lt;i&gt;empv&lt;/i&gt;, a
      powerful&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      interface to the GNU MPv media player.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;AMarks mentioned in
      the previous item, this is my present means of listening to
      tech-talks on Youtube while taking notes using org-mode.&lt;/li&gt;
      &lt;/ul&gt;&lt;/dd&gt;
      &lt;dt&gt;Forms Mode&lt;/dt&gt;&lt;dd&gt;Forms interface used by
      Emacspeak to browse BBC programs.&lt;/dd&gt;
      &lt;dt&gt;Mark Ring&lt;/dt&gt;&lt;dd&gt;Supported by default in
      Emacspeak but something I dont
      use much. Some of its affordances really shine in
      &lt;i&gt;transient-mark-mode&lt;/i&gt; but that facility is somewhat
      counter to
      eyes-free use.&lt;/dd&gt;
      &lt;dt&gt;Undo&lt;/dt&gt;&lt;dd&gt;Both basic  and advanced. However
      a long series of
      undo and redo commands as with  &lt;i&gt;tree-undo&lt;/i&gt; can get
      confusing quickly in
      eyes-free interaction.&lt;/dd&gt;
      &lt;dt&gt;Dired&lt;/dt&gt;&lt;dd&gt;I use
      &lt;i&gt;dired-mode&lt;/i&gt; and its derivatives heavily:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;To browse the file-system as intended.&lt;/li&gt;
      &lt;li&gt;With  &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2023/09/augment-with-zoxide.html&quot;&gt;emacspeak-zoxide&lt;/a&gt;  to rapidly move to far-away portions of
      the file system.&lt;/li&gt;
      &lt;li&gt;With  &lt;i&gt;locate&lt;/i&gt; to search the file
      system.&lt;/li&gt;
      &lt;li&gt;With command 
      &lt;i&gt;emacspeak-m-player-locate-media&lt;/i&gt; to find and play
      local media.&lt;/li&gt;
      &lt;li&gt;With &lt;i&gt;flx&lt;/i&gt; and &lt;i&gt;fuzzy&lt;/i&gt;
      completion to provide a powerful
      interactive UI for finding and playing media such as Internet
      streams.&lt;/li&gt;
      &lt;/ul&gt;&lt;/dd&gt;
      &lt;dt&gt;- Writeable Dired&lt;/dt&gt;&lt;dd&gt;Useful to:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Consistently rename files, especially when confronted with
      filenames with embedded white space.&lt;/li&gt;
      &lt;/ul&gt;&lt;/dd&gt;
      &lt;dt&gt;Org-Mode&lt;/dt&gt;&lt;dd&gt;This margin is too small to
      do it justice; see
      documentation for module
      &lt;span class=&quot;underline&quot;&gt;emacspeak-org&lt;/span&gt;
      for all that Emacspeak does with org.&lt;/dd&gt;
      &lt;dt&gt;Magit&lt;/dt&gt;&lt;dd&gt;As with the previous item, see
      the associated Emacspeak
      documentation for &lt;span
      
      class=&quot;underline&quot;&gt;emacspeak-magit&lt;/span&gt;.&lt;/dd&gt;
      &lt;dt&gt;Forge&lt;/dt&gt;&lt;dd&gt;I use  &lt;span
      class=&quot;underline&quot;&gt;forge&lt;/span&gt; for issue
      tracking, but often revert to
      old habits and use &lt;span
      class=&quot;underline&quot;&gt;gh&lt;/span&gt; at the shell inside
      Emacs.&lt;/dd&gt;
      &lt;dt&gt;EWW&lt;/dt&gt;&lt;dd&gt;See the Emacspeak documentation
      for&lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2014/05/emacspeak-eww-updates-for-complete.html&quot;&gt;&lt;span class=&quot;underline&quot;&gt;emacspeak-eww&lt;/span&gt;&lt;/a&gt;. Highlights include:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Dom filtering,&lt;/li&gt;
      &lt;li&gt;XPath filtering,&lt;/li&gt;
      &lt;li&gt;MPlayer and EMpv integration for playing online
      media,&lt;/li&gt;
      &lt;li&gt;EPub  and Bookshare books,&lt;/li&gt;
      &lt;li&gt;And much, much more.&lt;/li&gt;
      &lt;/ul&gt;&lt;/dd&gt;
      &lt;dt&gt;Elfeed&lt;/dt&gt;&lt;dd&gt;My chosen means of following
      RSS and Atom feeds.&lt;/dd&gt;
      &lt;dt&gt;GNUS&lt;/dt&gt;&lt;dd&gt;For mail, now that Usenet is
      history.
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;I use gnus as an &lt;i&gt;imap&lt;/i&gt; mail reader for
      GMail.&lt;/li&gt;
      &lt;li&gt;Emacspeak implements the equivalent of GMail&#39;s search
      operators.&lt;/li&gt;
      &lt;li&gt;I complement gnus with package &lt;i&gt;vm&lt;/i&gt; for
      reading email delivered
      locally; I use &lt;span
      class=&quot;underline&quot;&gt;fetchmail&lt;/span&gt; to fetch mail
      and &lt;span class=&quot;underline&quot;&gt;procmail&lt;/span&gt; to
      sort
      mail into folders in the background.&lt;/li&gt;
      &lt;li&gt;And finally I use &lt;span
      class=&quot;underline&quot;&gt;notmuch&lt;/span&gt; to search
      locally saved email.&lt;/li&gt;
      &lt;/ul&gt;&lt;/dd&gt;
      &lt;dt&gt;Tramp&lt;/dt&gt;&lt;dd&gt;Accessing and working in the
      Cloud:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;I use &lt;i&gt;tramp&lt;/i&gt; to open remote
      files.&lt;/li&gt;
      &lt;li&gt;Emacspeak wizard   
      &lt;i&gt;emacspeak-wizards-tramp-open-location&lt;/i&gt; to
      quickly open files on servers I access often.&lt;/li&gt;
      &lt;li&gt;If you &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2021/11/emacspeak-in-age-of-cloud-computing.html&quot;&gt;work in the Cloud&lt;/a&gt;, Emacspeak lets you SSH to your
      CloudTop and have Emacs running on the CloudTop speak on your
      local machine.&lt;/li&gt;
      &lt;li&gt;The above can be done using a plain old XTerm with
      &lt;span class=&quot;underline&quot;&gt;screen&lt;/span&gt;,
      &lt;span class=&quot;underline&quot;&gt;dtach&lt;/span&gt;, or
      &lt;span class=&quot;underline&quot;&gt;emacs
      &amp;#x2013;daemon&lt;/span&gt; providing a persistent Emacs
      session at the remote end.&lt;/li&gt;
      &lt;li&gt;Alternatively, you can use wizard
      &lt;i&gt;emacspeak-wizards-remote-frame&lt;/i&gt; to open a
      graphical frame on the
      remote machine.&lt;/li&gt;
      &lt;/ul&gt;&lt;/dd&gt;
      &lt;dt&gt;Eshell&lt;/dt&gt;&lt;dd&gt;A Shell that is deeply
      integrated into Emacs. Fully
      speech-enabled by Emacspeak. Well-suited for running compile, grep
      and friends for starters.&lt;/dd&gt;
      &lt;dt&gt;Comint&lt;/dt&gt;&lt;dd&gt;This is the goto solution for
      software development in
      Emacspeak, be it Common Lisp or Python.&lt;/dd&gt;
      &lt;dt&gt;Zip Archives&lt;/dt&gt;&lt;dd&gt;One more reason you dont
      need to leave  Emacs for
      a text console.&lt;/dd&gt;
      &lt;dt&gt;Calculators&lt;/dt&gt;&lt;dd&gt;From the simple to
      complex, we have it all!
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Simple calculations.&lt;/li&gt;
      &lt;li&gt;Symbolic Algebra.&lt;/li&gt;
      &lt;li&gt;Calc in &lt;i&gt;embedded mode&lt;/i&gt; can directly
      replace a calculation with
      an answer.&lt;/li&gt;
      &lt;li&gt;For even smarter work-flows, leverage
      &lt;i&gt;org-mode&lt;/i&gt; with &lt;i&gt;calc&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;you can even &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2022/12/aster-spoken-math-on-emacspeak-audio_21.html&quot;&gt;audio-format&lt;/a&gt;  computations in Calc output as LaTeX
      using &lt;a
      
      href=&quot;https://github.com/tvraman/aster-math&quot;&gt;AsTeR&lt;/a&gt;.&lt;/li&gt;
      &lt;/ul&gt;&lt;/dd&gt;
      &lt;/dl&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org6e90c5a&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org6e90c5a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt;
      References&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://mail.emacspeak.net/sympa/arc/emacspeak/2023-12/msg00004.html&quot;&gt;Mailing List Discussion&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2023/12/emacs-hidden-holiday-gems.html&quot;&gt;Emacs: Hidden Holiday Gems&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://tvraman.github.io/emacspeak/manual&quot;&gt;Emacspeak Manual&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      &lt;a
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/articles.html&quot;&gt;Emacspeak Blog Articles&lt;/a&gt; as a single page.
      &lt;/p&gt;
      
      &lt;p&gt;
      Note that the Emacspeak blog, the online manual etc., are all
      available locally in the Emacspeak  Git checkout.
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6583907408650234123'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6583907408650234123'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/12/emacspeak-hidden-holiday-gems.html' title='Emacspeak: Hidden Holiday Gems '/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5045172170268110780</id><published>
      2023-12-15T09:12:00.000-08:00
    </published>
    <updated>2023-12-15T09:12:16.159-08:00</updated><title type='text'>
      Emacs: Hidden Holiday Gems
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Emacs HHG: Hidden Holiday
      Gems&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org0bcc376&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org0bcc376&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Overview&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      The acronym &lt;b&gt;HHG&lt;/b&gt; evokes Douglas Adams&#39;
      &lt;i&gt;Hitch Hikers Guide To The
      Galaxy&lt;/i&gt; 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 &lt;i&gt;emacs-devel@gnu.org&lt;/i&gt; list 
      which revealed  the
      somewhat obvious &amp;#x2014; not everyone uses all available
      features in Emacs
      &amp;#x2014; if that were even possible.
      &lt;/p&gt;
      
      &lt;p&gt;
      So without further ado, here is a brie list of hidden gems in Emacs
      as
      a teaser &amp;#x2014; I use many of these on a regular basis, but as
      you&#39;ll see
      there are gems that I know of that I haven&#39;t managed to 
      integrate
      into my workflow, leave alone those gems that I am not even aware
      of.&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org0bc9271&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org0bc9271&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Emacs: Hidden
      Holiday Gems&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;dl class=&quot;org-dl&quot;&gt;
      &lt;dt&gt;Selective Display&lt;/dt&gt;&lt;dd&gt;Collapse/Expand
      content based on
      indentation. Useful in browsing code, as well as structured
      output from various shell commands.&lt;/dd&gt;
      &lt;dt&gt;Registers&lt;/dt&gt;&lt;dd&gt;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.&lt;/dd&gt;
      &lt;dt&gt;Bookmarks&lt;/dt&gt;&lt;dd&gt;Persist various types of
      locations. Note that
      registers can be persisted across Emacs sessions as well.&lt;/dd&gt;
      &lt;dt&gt;Tabulated Lists&lt;/dt&gt;&lt;dd&gt;Build up tabulated UIs
      that behave consistently.&lt;/dd&gt;
      &lt;dt&gt;Forms Mode&lt;/dt&gt;&lt;dd&gt;Leverage underlying syntax 
      e.g., field-delimiters, to enable structured
      editing via a forms-like interface.&lt;/dd&gt;
      &lt;dt&gt;Mark Ring&lt;/dt&gt;&lt;dd&gt;Local and Global mark rings.
      This  is one I&#39;ve been
      aware of for over 30 years but never managed to work into my
      work-flow.&lt;/dd&gt;
      &lt;dt&gt;Undo&lt;/dt&gt;&lt;dd&gt;Both basic  and advanced. I
      myself only use the most
      basic form of undo.&lt;/dd&gt;
      &lt;dt&gt;Dired&lt;/dt&gt;&lt;dd&gt;Surprisingly not everyone
      appears to use &lt;i&gt;dired&lt;/i&gt;, or at
      least  as heavily as I expected.&lt;/dd&gt;
      &lt;dt&gt;Writeable Dired&lt;/dt&gt;&lt;dd&gt;This became part of
      Emacs more than a decade
      ago &amp;#x2014; but often remains undiscovered and
      under-exploited. Ignorance leads to more complex and error-prone
      shell hacks.&lt;/dd&gt;
      &lt;dt&gt;Org-Mode&lt;/dt&gt;&lt;dd&gt;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.&lt;/dd&gt;
      &lt;dt&gt;Magit&lt;/dt&gt;&lt;dd&gt;Another magical gem that I use
      heavily &amp;#x2014; but there
      are more parts of Magit that I dont use than I use &amp;#x2014; 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.&lt;/dd&gt;
      &lt;dt&gt;Forge&lt;/dt&gt;&lt;dd&gt;Interact with Git repositories
      &amp;#x2014;  a powerful tool where I myself have only scratched the
      surface.&lt;/dd&gt;
      &lt;dt&gt;EWW&lt;/dt&gt;&lt;dd&gt;Hard to believe that
      &lt;i&gt;shr&lt;/i&gt; and &lt;i&gt;eww&lt;/i&gt; 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 &amp;#x2014; EWW remains one of the most
      effectivemeans of focusing on the real content of Web
      pages.&lt;/dd&gt;
      &lt;dt&gt;Elfeed&lt;/dt&gt;&lt;dd&gt;With EWW for surfacing the
      content in noisy News
      pages, Elfeed provides the complementary functionality of
      browsing RSS and Atom Feeds &amp;#x2014; which together let you
      focus on
      content as opposed to endlessly mnavigating a Web site.&lt;/dd&gt;
      &lt;dt&gt;GNUS&lt;/dt&gt;&lt;dd&gt;Gnus remains one of the most
      powerful email tools, but
      its potential as an email-reader often gets overlooked.&lt;/dd&gt;
      &lt;dt&gt;Tramp&lt;/dt&gt;&lt;dd&gt;When I first discovered Emacs in
      Grad School,
      &lt;i&gt;ange-ftp&lt;/i&gt; 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
      &amp;#x2014;
      but that functionality quietly turned into something more
      powerful, namely &lt;i&gt;tramp&lt;/i&gt;. 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.&lt;/dd&gt;
      &lt;dt&gt;Eshell&lt;/dt&gt;&lt;dd&gt;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&#39;m still using Bash in Emacs
      shell-mode!&lt;/dd&gt;
      &lt;dt&gt;Comint&lt;/dt&gt;&lt;dd&gt;A Command Interpreter to
      &lt;i&gt;bind&lt;/i&gt; 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
      &lt;b&gt;Emacs&lt;/b&gt; is the platform.&lt;/dd&gt;
      &lt;dt&gt;Zip Archives&lt;/dt&gt;&lt;dd&gt;Emacs can open archive
      files like &lt;i&gt;zip&lt;/i&gt;,&lt;/dd&gt;
      &lt;/dl&gt;
      &lt;p&gt;
      &lt;i&gt;tar.gz&lt;/i&gt; 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).
      &lt;/p&gt;
      &lt;dl class=&quot;org-dl&quot;&gt;
      &lt;dt&gt;Calculators&lt;/dt&gt;&lt;dd&gt;Yes, there is more than
      1;-) The built-in
      not-so-light-weight &lt;i&gt;calculator&lt;/i&gt; and the even more
      powerful (and
      also bundled ) &lt;i&gt;calc&lt;/i&gt; 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 &lt;i&gt;Scratch&lt;/i&gt;
      Buffer. After
      we had considered some options, I typed a few keys to invoke
      &lt;i&gt;Calc&lt;/i&gt; in &lt;b&gt;embedded-mode&lt;/b&gt; and a
      second later she was looking at
      that plain-text display showing the monthly installment for the
      mortgage we were discussing!&lt;/dd&gt;
      &lt;/dl&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org6f0eda8&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org6f0eda8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt;
      Conclusion&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;There are clearly a lot more hidden gems than enumerated
      here;
      otherwise they wouldn&#39;t be &lt;b&gt;Hidden&lt;/b&gt;.&lt;/li&gt;
      &lt;li&gt;These work best when Emacs provides a cleanly defined
      platform
      that enables the creation of these extensions via Emacs
      Lisp.&lt;/li&gt;
      &lt;li&gt;There is an interesting balance between &lt;i&gt;letting a
      thousand
      flowers bloom&lt;/i&gt; vs &lt;i&gt;refactoring to create common
      APIs based on
      developer needs&lt;/i&gt;. 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.&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      vHappy Holidays &amp;#x2014; And Share And Enjoy!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5045172170268110780'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5045172170268110780'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/12/emacs-hidden-holiday-gems.html' title='Emacs: Hidden Holiday Gems'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7170743414313243429</id><published>
      2023-11-21T12:14:00.000-08:00
    </published>
    <updated>2023-11-21T12:14:47.578-08:00</updated><title type='text'>
      Announcing Emacspeak 59.0 (VirtualDog)
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Announcing Emacspeak
      59.0—VirtualDog!&lt;/h1&gt;
      
      &lt;div id=&quot;org124a4e4&quot; class=&quot;figure&quot;&gt;
      &lt;p&gt;&lt;a
      href=&quot;https://tvraman.github.io/tilden-face.jpg&quot;
      alt=&quot;Tilden&quot; height=&quot;96&quot;
      width=&quot;59.33&quot;&gt;&lt;img
      src=&quot;https://tvraman.github.io/tilden-face.jpg&quot;
      alt=&quot;Tilden&quot; height=&quot;96&quot; width=&quot;59.33&quot;
      /&gt;&lt;/a&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;p&gt;
      To express oneself well is impactful, but only when one has
      something impactful to express!  (TVR on Conversational Interfaces)
      &lt;/p&gt;
      
      
      &lt;div id=&quot;outline-container-org0968c5c&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org0968c5c&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      San Jose, CA, (November  22, 2023)
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgb70489c&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orgb70489c&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1.&lt;/span&gt; Emacspeak
      59.0 (VirtualDog)  Unleashed!  🦮&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
      &lt;p&gt;
      &amp;#x2014; Making Accessible Computing Effortless!
      &lt;/p&gt;
      
      &lt;p&gt;
      Advancing Accessibility In The Age Of User-Aware Interfaces
      &amp;#x2014; Zero
      cost of Ownership makes priceless software Universally affordable!
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;
      announces immediate world-wide availability of &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/57.0/emacspeak-57.0.tar.bz2&quot;&gt;Emacspeak 58.0&lt;/a&gt;
      (ErgoDog) 🦮 &amp;#x2014; a non-LLM powered audio desktop that
      leverages
      today&#39;s evolving Data, Social and Assistant-Oriented Internet
      cloud to
      enable working efficiently and effectively from anywhere!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org1c5f25f&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org1c5f25f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Investors
      Note:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      With several prominent tweeters (and mythical elephants) expanding
      coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org87fe96a&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org87fe96a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; What Is
      It?&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org07b2c72&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org07b2c72&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Updated Keybindings  ⌨&lt;/li&gt;
      &lt;li&gt;Smart Buffer Selection ⛏&lt;/li&gt;
      &lt;li&gt;Audio Volume Adjust 🔈&lt;/li&gt;
      &lt;li&gt;Speech-Rate Adjust🚄&lt;/li&gt;
      &lt;li&gt;Twitter Support Removed X marks the spot.&lt;/li&gt;
      &lt;li&gt;BBC Sounds URL Template  📻&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://garfnet.org.uk/cms/2023/10/29/latest-bbc-hls-radio-streams/&quot;&gt;BBC
      HLS Streams&lt;/a&gt;  using MPV 📻&lt;/li&gt;
      &lt;li&gt;ZOxide Integration ⏠ ⏡&lt;/li&gt;
      &lt;li&gt;emacspeak-pipewire ǁ&lt;/li&gt;
      &lt;/ol&gt;
      
      
      &lt;p&gt;
      — And a lot more than will fit this margin. … 🗞
      &lt;/p&gt;
      
      &lt;p&gt;
      Note: This version &lt;b&gt;requires&lt;/b&gt; emacs-29.1 or later. 
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7bfa650&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7bfa650&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a crash-prone
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system from
      the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org52fc559&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org52fc559&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6.&lt;/span&gt; Independent
      Test Results:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;p&gt;
      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 &amp;#x2014; and
      not the
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org4e24c50&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org4e24c50&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1.&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-6-1&quot;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgeb0b328&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgeb0b328&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7.&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from GitHub &amp;#x2014; see
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the
      WWW at &lt;a
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak
      mailing list — &lt;a
      
      href=&quot;http://mail.emacspeak.net&quot;&gt;emacspeak@emacspeak.net&lt;/a&gt;.  The &lt;a href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak Blog&lt;/a&gt; is a good
      source for news about recent enhancements and how to use them.
      &lt;/p&gt;
      
      &lt;p&gt;
      The latest development snapshot of Emacspeak is always available at
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org3888f97&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3888f97&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8.&lt;/span&gt;
      History:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 59 delivers better ergonomics by minimizing the
      need for chording, but sadly, with no  dog to guide its way.
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 58 delivers better ergonomics by minimizing the
      need for chording.&lt;/li&gt;
      &lt;li&gt;Emacspeak 57.0 is named in honor of &lt;a
      href=&quot;https://tvraman.github.io/tilden-face.jpg&quot;&gt;Tilden
      Labrador&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Emacspeak 56.0 (AgileDog) belies its age  to be as agile
      as Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 55.0 (CalmDog) attempts to be as calm as
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 54.0 (EZDog) learns to take it easy from
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 53.0 (EfficientDog)  focuses on 
      efficiency.&lt;/li&gt;
      &lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a
      pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Bigger and more powerful than any smart assistAnt,
      AssistDog provides&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      instant access to the most relevant information at all times.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;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&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      is entirely free of Artificial Ingredients (AI)™.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;
      excellent integration with various programming language
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the
      ability to spatially place multiple audio streams to provide timely
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling
      &lt;a
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing the breadth of
      user tasks that are covered without introducing unnecessary
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of award-winning
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools including full
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA
      LuckyDog continues to innovate via open technologies for better
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to the
      audio desktop—you can&#39;t but be social if you speak!&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA
      FastDog—is the latest in a sequence of upgrades that make previous
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA
      LeadDog—continues the tradition of introducing innovative access
      solutions that are unfettered by the constraints inherent in
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog
      —re-activates open, unfettered access to online
      information.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile in
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0
      —AKA PlayDog —continued the 
      Emacspeak tradition of relying on enhanced
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed to enhance
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user
      productivity and thereby reducing total cost of
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user
      productivity by exploiting today&#39;s evolving WWW
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the follow-up to
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog
      as the next in a continuing  series of award-winning audio desktop
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      the first release of this millennium. 
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak-13.0 &amp;#x2013;codenamed
      YellowLab&amp;#x2013; was the closing release of the
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013; began
      leveraging the evolving semantic WWW to provide task-oriented speech
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went the
      final step in making Linux a zero-cost Internet access solution for
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition of
      award-winning software releases designed to make eyes-free computing
      a
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in the areas
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org6e82691&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org6e82691&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9.&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-9&quot;&gt;
      &lt;p&gt;
      Originally based at Cornell (NY) —
      &lt;a
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on GitHub
      —&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. 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 &lt;a
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s
      National Museum of American History.
      &lt;/p&gt;
      
      &lt;p&gt;
      The Emacspeak mailing list is archived at
      &lt;a href=&quot;https://www.emacspeak.net&quot;&gt;Emacspeak Mail
      Archive&lt;/a&gt; &amp;#x2013;the home of the
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a
      valuable knowledge base for new users.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org2331c32&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org2331c32&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10.&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-10&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      *About This Release:
      &lt;/p&gt;
      &lt;hr /&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  &amp;#x2013;see
      &lt;a
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;postamble&quot; class=&quot;status&quot;&gt;
      &lt;p class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&quot;date&quot;&gt;Created: 2023-11-18 Sat
      07:56&lt;/p&gt;
      &lt;p class=&quot;validation&quot;&gt;&lt;a
      
      href=&quot;https://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7170743414313243429'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7170743414313243429'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/11/announcing-emacspeak-590-virtualdog.html' title='Announcing Emacspeak 59.0 (VirtualDog)'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6579863282797038134</id><published>
      2023-09-26T08:34:00.002-07:00
    </published>
    <updated>2023-09-26T08:34:57.115-07:00</updated><title type='text'>
      Together: The Old And New Work Much Better!
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Together: The Old And New Are 
      Much Better!&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org589c8be&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org589c8be&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      Emacs has had long-standing features like
      &lt;code&gt;outline-mode&lt;/code&gt; and
      &lt;code&gt;outline-minor-mode&lt;/code&gt; that often get forgotten
      in the face of newer
      affordances like &lt;code&gt;org-mode&lt;/code&gt;. At the same
      time, Emacs continues to
      acquire new features &amp;#x2014; in this article, I am specifically
      alluding
      to &lt;code&gt;repeat-mode&lt;/code&gt;. The combinatorial explosion
      that is the result of
      the various ways of bringing these together is mind-boggling
      &amp;#x2014; 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&#39;slong-established habits at the risk of failing to
      significantly
      enhance one&#39;s productivity.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgaac66c5&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgaac66c5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt;
      Background&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Structured navigation is a significant productivity
      enhancer &amp;#x2014;
      especially in my case since I rely exclusively on an auditory
      interface.&lt;/li&gt;
      &lt;li&gt;The above applies to both textual documents and
      programming source.&lt;/li&gt;
      &lt;li&gt;Starting all the way back in 1991, I started using
      &lt;code&gt;folding-mode&lt;/code&gt;
      to organize code into hierarchical containers that could be
      expanded and collapsed; and this is what makes Emacs&#39; eco-system
      amazing; &lt;code&gt;folding-mode&lt;/code&gt; still works and is
      available on melpa in 2023.&lt;/li&gt;
      &lt;li&gt;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
      &lt;code&gt;outline-minor-mode&lt;/code&gt; to expand and
      collapse sections of  code in &lt;code&gt;.el&lt;/code&gt;
      files.&lt;/li&gt;
      &lt;li&gt;At the time I filed this away for &lt;i&gt;later
      use&lt;/i&gt; &amp;#x2014; I was still
      reluctant to  abandon the 30+ year investment in
      &lt;code&gt;folding-mode&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;About a year ago, I discovered
      &lt;code&gt;repeat-mode&lt;/code&gt; in Emacs and started
      leveraging it for everything &amp;#x2014; including
      &lt;code&gt;outline-mode&lt;/code&gt; and
      &lt;code&gt;org-mode&lt;/code&gt; amongst others.&lt;/li&gt;
      &lt;li&gt;Despite the years of investment in
      &lt;code&gt;folding-mode&lt;/code&gt;, it had one
      drawback; keeping the &lt;i&gt;fold-marks&lt;/i&gt; (special
      comments) in sync was
      always a bit of a hastle.
      
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;&lt;p&gt;
      Bringing The Old And New Together
      &lt;/p&gt;
      
      &lt;p&gt;
      This week I brought all of the above context together to:
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      
      &lt;li&gt;Cut over the Emacspeak codebase to stop using
      &lt;code&gt;folding-mode&lt;/code&gt;.&lt;/li&gt;
      
      &lt;li&gt;Turning the &lt;span
      class=&quot;underline&quot;&gt;fold-marks&lt;/span&gt; to comments
      that &lt;code&gt;outline-minor-mode&lt;/code&gt;
      understood  was a trivial application of my &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/etc/typo.pl#L1&quot;&gt;typo.pl&lt;/a&gt;Perl script.&lt;/li&gt;
      
      &lt;li&gt;I had already set up Emacspeak to use
      &lt;code&gt;repeat-mode&lt;/code&gt; for the
      various outline modes.&lt;/li&gt;
      
      &lt;li&gt;Another annoyance with &lt;code&gt;outline&lt;/code&gt;
      that I had fixed over 20+ years
      ago was to pick an easier to press prefix-key for
      &lt;code&gt;outline&lt;/code&gt;; I use
      &lt;span class=&quot;underline&quot;&gt;C-o&lt;/span&gt;.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org925e227&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org925e227&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; The Resulting
      Experience&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;I can now skim the Emacspeak sources (as well as the Emacs
      sources of course) with very few keystrokes.&lt;/li&gt;
      &lt;li&gt;Example: Pressing &lt;span
      class=&quot;underline&quot;&gt;C-o C-n&lt;/span&gt; navigates by
      section headings; when
      skimming, I only need to press &lt;span
      class=&quot;underline&quot;&gt;C-o&lt;/span&gt; the first time
      thanks to
      &lt;code&gt;repeat-mode&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;I also bound &lt;span
      class=&quot;underline&quot;&gt;j&lt;/span&gt; and &lt;span
      class=&quot;underline&quot;&gt;k&lt;/span&gt; in  the outline-mode
      keymaps to avoid
      having to chord when skimming &amp;#x2014; &lt;span
      class=&quot;underline&quot;&gt;j&lt;/span&gt; is easier to press
      than &lt;span
      class=&quot;underline&quot;&gt;C-n&lt;/span&gt;.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org44a3e17&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org44a3e17&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; For The
      Future&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Would be nice to enhance
      &lt;code&gt;outline-minor-mode&lt;/code&gt; to understand
      sectioning comments in other programming languages.
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;The annoyance with the default (and unusable) prefix key
      for the
      outline modes needs to fix in Emacs core.&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6579863282797038134'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6579863282797038134'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/09/together-old-and-new-work-much-better.html' title='Together: The Old And New Work Much Better!'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7816169749967643501</id><published>
      2023-09-16T10:08:00.000-07:00
    </published>
    <updated>2023-09-16T10:08:02.278-07:00</updated><title type='text'>
      Augment Emacs With Zoxide For Efficient File System Navigation
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Augmenting Emacs With ZOxide For
      Efficient File System Navigation&lt;/h1&gt;
      &lt;div id=&quot;outline-container-orgd598038&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd598038&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Background&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      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 &amp;#x2014; &lt;a
      
      href=&quot;https://github.com/ajeetdsouza/zoxide&quot;&gt;Zoxide&lt;/a&gt;, a smarter &lt;span class=&quot;underline&quot;&gt;cd&lt;/span&gt; built in
      Rust.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org72a30ff&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org72a30ff&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Default
      Usage&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      Once installed, &lt;span
      class=&quot;underline&quot;&gt;zoxide&lt;/span&gt; works well in
      Emacs shells, as well as at
      terminals inside or outside Emacs. Read the &lt;span
      class=&quot;underline&quot;&gt;zoxide&lt;/span&gt; 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.&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgbf8abf6&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgbf8abf6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; Working In
      Emacs&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      So with &lt;span class=&quot;underline&quot;&gt;zoxide&lt;/span&gt;
      installed, you can:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Switch to a shell buffer,&lt;/li&gt;
      &lt;li&gt;Execute a &lt;span
      class=&quot;underline&quot;&gt;zoxide&lt;/span&gt; navigation
      command, e.g., &lt;span class=&quot;underline&quot;&gt;z
      &amp;lt;pattern&amp;gt;&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      Once there, you can easily open files, launch &lt;span
      class=&quot;underline&quot;&gt;dired&lt;/span&gt; etc.
      &lt;/p&gt;
      
      &lt;p&gt;
      But given that opening &lt;span
      class=&quot;underline&quot;&gt;dired&lt;/span&gt; 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
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgc58cf4f&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgc58cf4f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Command:
      &lt;code&gt;emacspeak-zoxide&lt;/code&gt;&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      Note: there is nothing emacspeak specific in what follows.
      &lt;/p&gt;
      
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Interactive command &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-wizards.el#start-of-content&quot;&gt;emacspeak-zoxide&lt;/a&gt; prompts for a pattern,
      then launches &lt;code&gt;dired&lt;/code&gt; on the &lt;span
      class=&quot;underline&quot;&gt;zoxide&lt;/span&gt;
      result.&lt;/li&gt;&lt;li&gt;It uses &lt;code&gt;if-let&lt;/code&gt; 
      to  advantage:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;If  &lt;span
      class=&quot;underline&quot;&gt;zoxide&lt;/span&gt; is
      installed,and&lt;/li&gt;
      &lt;li&gt;There is a &lt;span
      class=&quot;underline&quot;&gt;zoxide&lt;/span&gt; result for the
      specified query,&lt;/li&gt;
      &lt;li&gt;Launch &lt;code&gt;dired&lt;/code&gt; on that
      directory.&lt;/li&gt;
      &lt;li&gt;Else, signal the appropriate error.&lt;/li&gt;
      &lt;li&gt;Notice that &lt;code&gt;if-let&lt;/code&gt; expresses this
      clearly.&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-list&quot;&gt;(defun
      emacspeak-zoxide (q)
      &quot;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.&quot;
      (interactive &quot;sZoxide:&quot;)
      (if-let
      ((zoxide (executable-find &quot;zoxide&quot;))
      (target
      (with-temp-buffer
      (if (= 0 (call-process zoxide nil t nil &quot;query&quot; q))
      (string-trim (buffer-string))))))
      (funcall-interactively #&#39;dired  target)
      (unless zoxide (error &quot;Install zoxide&quot;))
      (unless target (error &quot;No Match&quot;))))
      &lt;/pre&gt;
      &lt;/div&gt;
      
      &lt;p&gt;
      In my setup, i bind this  to &lt;span
      class=&quot;underline&quot;&gt;C-; j&lt;/span&gt; which is 
      convenient  to press and is a mnemonic for
      &lt;code&gt;jump&lt;/code&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7816169749967643501'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7816169749967643501'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/09/augment-with-zoxide.html' title='Augment With Zoxide'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-746913157404581580</id><published>
      2023-09-08T08:57:00.002-07:00
    </published>
    <updated>2023-09-08T08:57:39.478-07:00</updated><title type='text'>
      Return To Control_Right Using XModmap And XCape
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;return to control-right using
      xmodmap and xcape&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org26112df&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org26112df&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      background&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      see previous article on
      &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2023/09/emacs-ergonomics-dont-punish-your.html&quot;&gt;dont
      punish your finger tips&lt;/a&gt; that described how to minimize
      chording in
      emacs. that article alluded to possibly using &lt;span
      class=&quot;underline&quot;&gt;return&lt;/span&gt; as an
      additional &lt;span
      
      class=&quot;underline&quot;&gt;control&lt;sub&gt;right&lt;/sub&gt;&lt;/span&gt; key; this article describes   the
      implementation and things i discovered in setting it up.
      &lt;/p&gt;
      
      &lt;p&gt;
      the design described here was discovered by &lt;a
      
      href=&quot;https://www.google.com/search?q=return+control%5fr+xmodmap+xcape&amp;amp;num=25&quot;&gt;this google search&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org95477e4&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org95477e4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; overview of
      changes&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;/div&gt;
      &lt;div id=&quot;outline-container-org48cb184&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org48cb184&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.1.&lt;/span&gt;
      xmodmap&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-1&quot;&gt;
      &lt;p&gt;
      add the following stanza to your xmodmap file to set up the needed
      keys:
      &lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      ! ret as ctrl_r
      remove control = control_r
      keycode 0x69 = return
      keycode 0x24 = control_r
      add control = control_r
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org9508184&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org9508184&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.2.&lt;/span&gt;
      xcape&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-2&quot;&gt;
      &lt;p&gt;
      next, have xcape emit &lt;span
      
      class=&quot;underline&quot;&gt;control&lt;sub&gt;r&lt;/sub&gt;&lt;/span&gt; when &lt;span class=&quot;underline&quot;&gt;return&lt;/span&gt; is held down:
      &lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      control_r=return;\
      &lt;/pre&gt;
      
      &lt;p&gt;
      you can find the complete implementation below:
      &lt;/p&gt;
      
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/stumpwm/xmodmap#l11&quot;&gt;xmodmap&lt;/a&gt; setup.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/xcape.sh#l21&quot;&gt;xcape setup&lt;/a&gt;.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org79a0a89&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org79a0a89&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; lessons
      learn&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;1. the above works &amp;#x2014; i can now hold down
      &lt;span class=&quot;underline&quot;&gt;return&lt;/span&gt; with my
      right hand when hitting keys like &lt;span
      class=&quot;underline&quot;&gt;a&lt;/span&gt; with my left; this 
      makes
      my fingers happy.&lt;/li&gt;
      &lt;li&gt;one  issue that i failed to fix &amp;#x2014; though
      unimportant except for
      my curiosity:&lt;/li&gt;
      &lt;li&gt;the &lt;span
      
      class=&quot;underline&quot;&gt;control&lt;sub&gt;r&lt;/sub&gt;&lt;/span&gt; key on my laptop has now turned into a &lt;span class=&quot;underline&quot;&gt;return&lt;/span&gt;
      key, it produces &lt;span
      class=&quot;underline&quot;&gt;return&lt;/span&gt; in &lt;b&gt;all
      cases&lt;/b&gt;, i.e., whether tapped or
      held-down.&lt;/li&gt;
      
      &lt;li&gt;i still continue to find xmodmap confusing &amp;#x2014;
      though that is
      likely my fault, and not that of xmodmap.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;postamble&quot; class=&quot;status&quot;&gt;
      &lt;p class=&quot;date&quot;&gt;date: 2023-09-08 fri 00:00&lt;/p&gt;
      &lt;p class=&quot;author&quot;&gt;author: t.v raman&lt;/p&gt;
      &lt;p class=&quot;date&quot;&gt;created: 2023-09-08 fri
      08:54&lt;/p&gt;
      &lt;p class=&quot;validation&quot;&gt;&lt;a
      
      href=&quot;https://validator.w3.org/check?uri=referer&quot;&gt;validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;	
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/746913157404581580'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/746913157404581580'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/09/return-to-controlright-using-xmodmap.html' title='Return To Control_Right Using XModmap And XCape'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3329932190031651752</id><published>
      2023-09-02T19:34:00.001-07:00
    </published>
    <updated>2023-09-02T19:34:27.040-07:00</updated><title type='text'>
      Emacs Ergonomics: Dont Punish Your Finger Tips
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Emacs Ergonomics: Dont Punish Your
      Finger Tips&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org099d12d&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org099d12d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      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&#39;t notice these issues because
      myhands then were not the same as what they are now.
      &lt;/p&gt;
      
      &lt;p&gt;
      See earlier articles on this topic for context:
      &lt;/p&gt;
      
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2023/02/enhance-emacs-ergonomics-under-x-happy.html&quot;&gt;Minimize chording using XCape&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2023/07/ergonomic-buffer-selection-on-emacs.html&quot;&gt;Ergonomic Buffer Selection&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;
      So to summarize,  my Emacs uses:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;&lt;b&gt;CapsLock&lt;/b&gt; as
      &lt;i&gt;Control&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;Using XCape, quickly releasing &lt;i&gt;Control&lt;/i&gt;
      emits &lt;i&gt;C-e&lt;/i&gt; &amp;#x2014; the
      eEmacspeak prefix-key.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgd0e879a&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd0e879a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Next, Some
      Finger Tips&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      Note: I&#39;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&#39;s hands, the width of the keyboard etc., all matter.
      For
      the last 3+ years, I&#39;ve exclusively used a laptop keyboard, in
      my case
      a Lenovo.
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Since Caps lock (left pinky) is my
      &lt;i&gt;Control&lt;/i&gt; key, &lt;i&gt;C-s&lt;/i&gt; is  not
      as nice as &lt;i&gt;C-l&lt;/i&gt;; 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 &lt;span
      class=&quot;underline&quot;&gt;qwerty&lt;/span&gt;
      keyboard.&lt;/li&gt;
      &lt;li&gt;One work-around for the above might be to have &lt;span
      class=&quot;underline&quot;&gt;RET&lt;/span&gt; emit
      &lt;i&gt;Control&lt;/i&gt; if held down,  but I haven&#39;t done
      that (yet).&lt;/li&gt;
      &lt;li&gt;On the left-hand, chords that require extending or
      scrunching
      one&#39;s fingres when hitting a chord are more painful. Thus,
      &lt;i&gt;C-z&lt;/i&gt;
      and &lt;i&gt;C-x&lt;/i&gt; are more painful to hit than
      &lt;i&gt;C-d&lt;/i&gt;. Emacs hardly uses
      &lt;i&gt;C-z&lt;/i&gt; and &lt;i&gt;C-c&lt;/i&gt;; but
      unfortunately, &lt;i&gt;C-x&lt;/i&gt; is an important prefix key in
      stock Emacs.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7154a32&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7154a32&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; Now For The
      Finger Tips&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;I have &lt;i&gt;left-shift&lt;/i&gt; and
      &lt;i&gt;right-shift&lt;/i&gt; emit &lt;i&gt;C-s&lt;/i&gt; and
      &lt;i&gt;C-r&lt;/i&gt;
      using XCape.&lt;/li&gt;
      &lt;li&gt;I bound &lt;i&gt;C-l&lt;/i&gt; to &lt;span
      class=&quot;underline&quot;&gt;ctl-x-map&lt;/span&gt; (still
      experimental). This remapping
      fails to take effect in places like &lt;i&gt;Dired&lt;/i&gt; and
      &lt;i&gt;Gnus&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;I additionally bound &lt;i&gt;find-file&lt;/i&gt; to
      &lt;i&gt;C-; o&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;A long time ago, I discovered &lt;i&gt;M-m&lt;/i&gt;
      (back-to-indentation) and I
      never hit &lt;i&gt;C-a&lt;/i&gt; to move to the start of the
      line.&lt;/li&gt;
      &lt;li&gt;When I remap things, I &lt;b&gt;never&lt;/b&gt; take away
      the original Emacs
      bindings; I only provide alternatives.&lt;/li&gt;
      &lt;li&gt;I use &lt;i&gt;C-,&lt;/i&gt;, &lt;i&gt;C-.&lt;/i&gt;,
      &lt;i&gt;C-;&lt;/i&gt;, and &lt;i&gt;C-&#39;&lt;/i&gt; as prefix
      keys. Downside:
      these only work under X, but the time where I only ran Emacs in a
      terminal are long gone.&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      See my 
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L245&quot;&gt;Emacs&lt;/a&gt; Startup File
      for the setup.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org750d581&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org750d581&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt;
      Conclusion&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      There&#39;s likely a lot more to be discovered in this context; time
      will
      reveal all!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;postamble&quot; class=&quot;status&quot;&gt;
      &lt;p class=&quot;date&quot;&gt;Date: 2023-09-01 Fri 00:00&lt;/p&gt;
      &lt;p class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&quot;date&quot;&gt;Created: 2023-09-02 Sat
      19:28&lt;/p&gt;
      &lt;p class=&quot;validation&quot;&gt;&lt;a
      
      href=&quot;https://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3329932190031651752'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3329932190031651752'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/09/emacs-ergonomics-dont-punish-your.html' title='Emacs Ergonomics: Dont Punish Your Finger Tips'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
<id>tag:blogger.com,1999:blog-20280042.post-5415414125614730451
</id>
<published>2023-05-03T11:45:00.002-07:00
</published>
<updated>2023-05-03T11:45:33.305-07:00
</updated>
<title type='text'>Emacspeak 58.0 (ErgoDog) Unleashed
</title>
<content type='html'>&lt;div id=&quot;content&quot; class=&quot;content&quot;&gt;
&lt;h1 class=&quot;title&quot;&gt;Announcing Emacspeak 58.0—ErgoDog!&lt;/h1&gt;

&lt;div id=&quot;org7e5c305&quot; class=&quot;figure&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://tvraman.github.io/tilden-face.jpg&quot; alt=&quot;Tilden&quot; height=&quot;96&quot; width=&quot;59.33&quot;&gt;&lt;img src=&quot;https://tvraman.github.io/tilden-face.jpg&quot; alt=&quot;Tilden&quot; height=&quot;96&quot; width=&quot;59.33&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
To express oneself well is impactful, but only when one has
something impactful to express!  (TVR on Conversational Interfaces)
&lt;/p&gt;


&lt;div id=&quot;outline-container-org11880b3&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org11880b3&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; For Immediate Release:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
&lt;p&gt;
San Jose, CA, (May  4, 2023)
&lt;/p&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org5d54451&quot; class=&quot;outline-3&quot;&gt;
&lt;h3 id=&quot;org5d54451&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;1.1.&lt;/span&gt; Emacspeak 58.0 (ErgoDog)  Unleashed!  🦮&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
&lt;p&gt;
&amp;#x2014; Making Accessible Computing Effortless!
&lt;/p&gt;

&lt;p&gt;
Advancing Accessibility In The Age Of User-Aware Interfaces &amp;#x2014; Zero
cost of Ownership makes priceless software Universally affordable!
&lt;/p&gt;

&lt;p&gt;
Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;
announces  immediate world-wide availability of &lt;a href=&quot;https://github.com/tvraman/emacspeak/releases/download/57.0/emacspeak-57.0.tar.bz2&quot;&gt;Emacspeak 58.0&lt;/a&gt;
(ErgoDog) 🦮 &amp;#x2014; a powerful audio desktop that leverages today&#39;s
evolving Data, Social and Assistant-Oriented Internet cloud to enable
working efficiently and effectively from anywhere!
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org845efc6&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org845efc6&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Investors Note:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
&lt;p&gt;
With several prominent tweeters (and mythical elephants) expanding
coverage of &lt;span class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;, 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.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org08a00ed&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org08a00ed&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; What Is It?&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org923bf90&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org923bf90&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Major Enhancements:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2022/12/aster-spoken-math-on-emacspeak-audio_21.html&quot;&gt;AsTeR&lt;/a&gt;: Audio System For Technical Readings.  🦮&lt;/li&gt;
&lt;li&gt;Updated Keybindings  for better &lt;a href=&quot;https://emacspeak.blogspot.com/2023/02/enhance-emacs-ergonomics-under-x-happy.html&quot;&gt;ergonomics&lt;/a&gt;.  ⌨&lt;/li&gt;
&lt;li&gt;Speech-Enable Package Devdocs. 🗎&lt;/li&gt;
&lt;li&gt;Speech-Enable &lt;code&gt;empv&lt;/code&gt;. 📺&lt;/li&gt;
&lt;li&gt;Speech-Enable Treesitter Navigation.  🐒&lt;/li&gt;
&lt;li&gt;Speech-Enable Tabulated-List-Mode.  ␋&lt;/li&gt;
&lt;li&gt;Speech-Enable FFIP &amp;#x2014; find file  in project. 📁&lt;/li&gt;
&lt;li&gt;Speech-Enable EXWM Emacs Window Manager.  🪟&lt;/li&gt;
&lt;li&gt;Audio Marks (AMarks). 🔉&lt;/li&gt;
&lt;li&gt;Search Wizards. 🪄&lt;/li&gt;
&lt;li&gt;&lt;p&gt;
Media History browser.  ℗
&lt;/p&gt;

&lt;p&gt;
— And a lot more than will fit this margin. … 🗞
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Note: This version &lt;b&gt;requires&lt;/b&gt; emacs-28.2 or later. 
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-orgcd9b218&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgcd9b218&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Establishing Liberty, Equality And Freedom:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
&lt;p&gt;
  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.
&lt;/p&gt;

&lt;p&gt;
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.
&lt;/p&gt;

&lt;p&gt;
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.
&lt;/p&gt;

&lt;p&gt;
On this theme, when once challenged by a proponent of a crash-prone
but well-marketed mousetrap with the assertion &quot;Emacs is a system from
the 70&#39;s&quot;, 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.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-orgda47619&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgda47619&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;6.&lt;/span&gt; Independent Test Results:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
&lt;p&gt;
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 &amp;#x2014; and not the
computer&amp;#x2013; that stops functioning when Emacspeak is uninstalled!”.
&lt;/p&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-orgba59c61&quot; class=&quot;outline-3&quot;&gt;
&lt;h3 id=&quot;orgba59c61&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;6.1.&lt;/span&gt; Note from Aster,Bubbles and Tilden:&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-6-1&quot;&gt;
&lt;p&gt;
UnDoctored Videos Inc. is looking for volunteers to star in a
video demonstrating such complete user failure.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org37d886c&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org37d886c&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;7.&lt;/span&gt; Obtaining Emacspeak:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
&lt;p&gt;
Emacspeak can be downloaded from GitHub &amp;#x2014; see
&lt;a href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the
WWW at &lt;a href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak
mailing list — &lt;a href=&quot;http://mail.emacspeak.net&quot;&gt;emacspeak@emacspeak.net&lt;/a&gt;.  The &lt;a href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak Blog&lt;/a&gt; is a good
source for news about recent enhancements and how to use them.
&lt;/p&gt;

&lt;p&gt;
The latest development snapshot of Emacspeak is always available at
&lt;a href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org5c63405&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org5c63405&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;8.&lt;/span&gt; History:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
&lt;ul class=&quot;org-ul&quot;&gt;
&lt;li&gt;Emacspeak 58 delivers better ergonomics by minimizing the need for chording.&lt;/li&gt;
&lt;li&gt;Emacspeak 57.0 is named in honor of &lt;a href=&quot;https://tvraman.github.io/tilden-face.jpg&quot;&gt;Tilden Labrador&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Emacspeak 56.0 (AgileDog) belies its age  to be as agile as Tilden.&lt;/li&gt;
&lt;li&gt;Emacspeak 55.0 (CalmDog) attempts to be as calm as Tilden.&lt;/li&gt;
&lt;li&gt;Emacspeak 54.0 (EZDog) learns to take it easy from Tilden.&lt;/li&gt;
&lt;li&gt;Emacspeak 53.0 (EfficientDog)  focuses on  efficiency.&lt;/li&gt;
&lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a pleasurable experience.&lt;/li&gt;
&lt;li&gt;Bigger and more powerful than any smart assistAnt, AssistDog provides&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
instant access to the most relevant information at all times.
&lt;/p&gt;
&lt;ul class=&quot;org-ul&quot;&gt;
&lt;li&gt;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&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
is entirely free of Artificial Ingredients (AI)™.
&lt;/p&gt;
&lt;ul class=&quot;org-ul&quot;&gt;
&lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
earlier releases to provide an enhanced  auditory experience.&lt;/li&gt;
&lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to provide
continued end-user value.&lt;/li&gt;
&lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being helpful
while letting users learn and grow.&lt;/li&gt;
&lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart Assistants.&lt;/li&gt;
&lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of Emacs&#39;
excellent integration with various programming language
environments &amp;#x2014; thanks to this, Emacspeak is the IDE of choice
for eyes-free software engineering.&lt;/li&gt;
&lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on the
audio desktop.&lt;/li&gt;
&lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by leveraging the
ability to spatially place multiple audio streams to provide timely
auditory feedback.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling
&lt;a href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
&lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of increasing the breadth of
user tasks that are covered without introducing unnecessary
bloatware.&lt;/li&gt;
&lt;li&gt;Emacspeak 38.0 is the latest in a series of award-winning
releases from Emacspeak Inc.&lt;/li&gt;
&lt;li&gt;Emacspeak 37.0 continues the tradition of
delivering robust software as reflected by its code-name.&lt;/li&gt;
&lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new tools including full
EPub support — hence the name EPubDog.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Emacspeak-33.0 AKA StarDog brings
unparalleled cloud access to the audio desktop.&lt;/li&gt;
&lt;li&gt;Emacspeak 32.0 AKA
LuckyDog continues to innovate via open technologies for better
access.&lt;/li&gt;
&lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the Emacspeak
desktop.&lt;/li&gt;
&lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to the
audio desktop—you can&#39;t but be social if you speak!&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace of
development evinced by Open Source software.&lt;/li&gt;
&lt;li&gt;Emacspeak 27.0—AKA
FastDog—is the latest in a sequence of upgrades that make previous
releases obsolete and downgrades unnecessary.&lt;/li&gt;
&lt;li&gt;Emacspeak 26—AKA
LeadDog—continues the tradition of introducing innovative access
solutions that are unfettered by the constraints inherent in
traditional adaptive technologies.&lt;/li&gt;
&lt;li&gt;Emacspeak 25 —AKA ActiveDog
—re-activates open, unfettered access to online
information.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra mile in
fetching full access.&lt;/li&gt;
&lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users
navigate the Web more effectively than ever before.&lt;/li&gt;
&lt;li&gt;Emacspeak 21.0
—AKA PlayDog —continued the 
Emacspeak tradition of relying on enhanced
productivity to liberate users.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is designed to enhance
user productivity at work and leisure.&lt;/li&gt;
&lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named
GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing user
productivity and thereby reducing total cost of
ownership.&lt;/li&gt;
&lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013; enhances user
productivity by exploiting today&#39;s evolving WWW
standards.&lt;/li&gt;
&lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named CleverDog&amp;#x2013; the follow-up to
SmartDog&amp;#x2013; continued the tradition of working better, faster,
smarter.&lt;/li&gt;
&lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named SmartDog&amp;#x2013;followed up on TopDog
as the next in a continuing  series of award-winning audio desktop
releases from  Emacspeak Inc.&lt;/li&gt;
&lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named TopDog&amp;#x2013;was&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
the first release of this millennium. 
&lt;/p&gt;
&lt;ul class=&quot;org-ul&quot;&gt;
&lt;li&gt;Emacspeak-13.0 &amp;#x2013;codenamed
YellowLab&amp;#x2013; was the closing release of the
20th. century.&lt;/li&gt;
&lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named GoldenDog&amp;#x2013; began
leveraging the evolving semantic WWW to provide task-oriented speech
access to Webformation.&lt;/li&gt;
&lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013; went the
final step in making Linux a zero-cost Internet access solution for
blind and visually impaired users.&lt;/li&gt;
&lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA
Emacspeak-2000) code named WonderDog&amp;#x2013; continued the tradition of
award-winning software releases designed to make eyes-free computing a
productive and pleasurable experience.&lt;/li&gt;
&lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA
Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate in the areas
of speech interaction and interactive accessibility.&lt;/li&gt;
&lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named BlackDog&amp;#x2013; was a major upgrade to
the speech output extension to Emacs.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-orga64edc1&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orga64edc1&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;9.&lt;/span&gt; About Emacspeak:&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-9&quot;&gt;
&lt;p&gt;
Originally based at Cornell (NY) —
&lt;a href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User
Interfaces (AUI) on the WWW,  Emacspeak is now maintained on GitHub
—&lt;a href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. 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 &lt;a href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent
Research Collection&lt;/a&gt; on Information Technology at the Smithsonian&#39;s
National Museum of American History.
&lt;/p&gt;

&lt;p&gt;
The Emacspeak mailing list is archived at
&lt;a href=&quot;https://www.emacspeak.net&quot;&gt;Emacspeak Mail Archive&lt;/a&gt; &amp;#x2013;the home of the
Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and provides a
valuable knowledge base for new users.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id=&quot;outline-container-orgf2c8d9a&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgf2c8d9a&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;10.&lt;/span&gt; Press/Analyst Contact: Tilden Labrador&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-10&quot;&gt;
&lt;p&gt;
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.
&lt;/p&gt;

&lt;p&gt;
*About This Release:
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Windows-Free (WF) is a favorite battle-cry of The League Against
Forced Fenestration (LAFF).  &amp;#x2013;see
&lt;a href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
the ill-effects of Forced Fenestration.
&lt;/p&gt;

&lt;p&gt;
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.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
<link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5415414125614730451'/>
<link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5415414125614730451'/>
<link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/05/emacspeak-580-ergodog-unleashed.html' title='Emacspeak 58.0 (ErgoDog) Unleashed'/>
<author>
<name>T. V. Raman
</name>
<uri>http://www.blogger.com/profile/03589687652590194428
</uri>
<email>noreply@blogger.com
</email>
<gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
</author>
</entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-866016839026380267</id><published>
      2023-03-04T10:11:00.001-08:00
    </published>
    <updated>2023-03-04T10:11:30.165-08:00</updated><title type='text'>
      Training Wheels For Better Ergonomics
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Training Wheels For Better
      Ergonomics&lt;/h1&gt;
      &lt;div id=&quot;outline-container-orgce001e1&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgce001e1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Background&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      In my previous article &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2023/02/enhance-emacs-ergonomics-under-x-happy.html&quot;&gt;Ergonomics Using xcape&lt;/a&gt;
      I described my setup to minimize chording  in Emacs. The setup is
      working well, and in the few weeks of usage, I&#39;ve reduce the
      &lt;code&gt;xcape
      timeout&lt;/code&gt; setting from 250ms to 170ms,  this is the
      timeout that
      controls  the behavior of modifier keys in xcape.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgcdb9067&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgcdb9067&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Training
      Wheels In Emacs&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      Next, I decided that getting some feedback from Emacs and Emacspeak
      when xcape behavior is triggered would act as &lt;i&gt;training
      wheels&lt;/i&gt; while
      getting used to the setup.
      &lt;/p&gt;
      
      &lt;p&gt;
      I considered the following:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Adding  a feature to &lt;code&gt;xcape&lt;/code&gt; that
      produces a sound cue on triggering modified behavior &amp;#x2014;
      would work &lt;i&gt;everywhere&lt;/i&gt; in X.&lt;/li&gt;
      &lt;li&gt;Having Emacs produce some feedback when xcape behavior is
      triggered.&lt;/li&gt;
      &lt;li&gt;Asked on &lt;span
      class=&quot;underline&quot;&gt;emacs-devel&lt;/span&gt; as to how
      one would do this in Emacsand
      was pointed at &lt;code&gt;echo-keystrokes&lt;/code&gt; by one of
      the core Emacs maintainers.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org507b85d&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org507b85d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt;
      Solution&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      I phrased my question on emacs-devel as &lt;i&gt;is there an elisp
      hook&lt;/i&gt; for
      implementing this.  Turns out no new code is needed; Emacs has a
      &lt;code&gt;echo-keystrokes&lt;/code&gt; custom option that controls
      how long Emacs waits
      before displaying an incomplete key-sequence.
      &lt;/p&gt;
      
      &lt;p&gt;
      So now, I have &lt;code&gt;echo-keystrokes&lt;/code&gt; set to
      &lt;span class=&quot;underline&quot;&gt;0.05&lt;/span&gt;
      &amp;#x2014; and Emacspeak
      speaks the resulting incomplete keystroke that  is displayed  by
      Emacs. 
      &lt;/p&gt;
      
      &lt;p&gt;
      Still playing with various values of
      &lt;code&gt;echo-keystrokes&lt;/code&gt; but that is
      easy &amp;#x2014; it&#39;s just one custom setting.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orge94514c&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orge94514c&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt;
      Conclusion&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      To quote &lt;a
      href=&quot;https://en.wikipedia.org/wiki/Larry_Wall&quot;&gt;Larry
      Wall&lt;/a&gt; of Perl fame, 
      &lt;/p&gt;
      &lt;pre class=&quot;example&quot;&gt;
      Lazy programmer equals good programmer!
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/866016839026380267'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/866016839026380267'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/03/training-wheels-for-better-ergonomics.html' title='Training Wheels For Better Ergonomics'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-852290279019377777</id><published>
      2023-02-13T10:39:00.000-08:00
    </published>
    <updated>2023-02-13T10:39:10.299-08:00</updated><title type='text'>
      Enhance Emacs Ergonomics Under X: Happy Hands!
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Enhance Emacs Ergonomics Under X:
      Happy Hands!&lt;/h1&gt;
      &lt;div id=&quot;outline-container-orgd3a7c7e&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd3a7c7e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orge47f788&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orge47f788&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt;
      Background&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;I learn to use Emacs on a TTY (text console) and all my
      habits
      are driven by the keys available on a terminal.&lt;/li&gt;
      &lt;li&gt;Under X you have more keys available, but I resisted
      running X
      until around 2008.&lt;/li&gt;
      &lt;li&gt;Now, I almost never run Emacs on a TTY, except when I need
      to
      rescue a broken X setup.&lt;/li&gt;
      &lt;li&gt;after turning &lt;code&gt;caps_lock&lt;/code&gt; to
      &lt;code&gt;Control&lt;/code&gt; I forgot about the other
      modifier keys; I press &lt;code&gt;Escape&lt;/code&gt; for
      Meta.&lt;/li&gt;
      &lt;li&gt;I also defined &lt;code&gt;C-;&lt;/code&gt; and friends as
      additional Emacs prefix keys.&lt;/li&gt;
      &lt;li&gt;The above saves your hands because you dont chord using
      themodifier keys on the bottom row.&lt;/li&gt;
      &lt;li&gt;But  you waste 6 modifier keys on a
      laptop where keys are in short supply.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgffeebe8&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgffeebe8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; Leveraging
      Current Keyboard&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;The motivation to leverage the laptop keyboard is higher
      now,
      since with the arrival of the pandemic, that has been my primary
      (only) machine.&lt;/li&gt;
      &lt;li&gt;I can chord without thinking  using the modified
      &lt;code&gt;caps_lock&lt;/code&gt;
      as &lt;code&gt;Control&lt;/code&gt;.  But I also noticed that I
      &lt;b&gt;choard a lot&lt;/b&gt;.&lt;/li&gt;
      &lt;li&gt;Chords I use most often as a prefix:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;&lt;code&gt;C-e&lt;/code&gt; &amp;#x2014; Emacspeak
      prefix,&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;C-s&lt;/code&gt; and
      &lt;code&gt;C-r&lt;/code&gt; &amp;#x2014; Isearch,&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;C-c&lt;/code&gt; and
      &lt;code&gt;C-x&lt;/code&gt; &amp;#x2014; emacs command
      prefix.&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;li&gt;Looking at the bottom row of the laptop keyboard, there
      are three
      modifier keys to either side of the spacebar.&lt;/li&gt;
      &lt;li&gt;Adding the left and right &lt;code&gt;Shift&lt;/code&gt;
      modifiers gives 8 keys that
      could  do something useful when not used as a modifier
      key.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org637e065&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org637e065&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; XCAPE: Turn
      Modifiers Into Buttons&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      I discovered &lt;a
      
      href=&quot;https://wiki.archlinux.org/title/Xcape&quot;&gt;xcape&lt;/a&gt; a while ago, but had set it aside for &lt;i&gt;future&lt;/i&gt;
      exploration; The observations made in the previous section indicated
      that that time was now!
      &lt;/p&gt;
      
      &lt;p&gt;
      So here is my &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/xcape.sh&quot;&gt;xcape Setup&lt;/a&gt; and associated &lt;a href=&quot;https://github.com/tvraman/emacspeak/blob/master/stumpwm/xmodmap#L1&quot;&gt;XModmap&lt;/a&gt; as of the time of
      writing:
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org2373c1b&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org2373c1b&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;4.1.&lt;/span&gt; What This
      Does:&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-4-1&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;&lt;code&gt;Control&lt;/code&gt; by itself sends
      &lt;code&gt;C-e&lt;/code&gt;,&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Super&lt;/code&gt; by itself sends
      &lt;code&gt;C-c&lt;/code&gt;,&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Alt&lt;/code&gt; by itself sends
      &lt;code&gt;C-x&lt;/code&gt;,&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Shift_l&lt;/code&gt; by itself sends
      &lt;code&gt;C-s&lt;/code&gt;,&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Shift_R&lt;/code&gt; by itself sends
      &lt;code&gt;C-r&lt;/code&gt;.&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      Note that the &lt;code&gt;XModmap&lt;/code&gt; file does the work of
      changing the &lt;code&gt;&amp;lt;print&amp;gt;&lt;/code&gt;
      key on my laptop to be &lt;code&gt;Super_L&lt;/code&gt; for
      symmetry.  So the bottom row of
      keys now look like this:
      &lt;/p&gt;
      
      
      &lt;table border=&quot;2&quot; cellspacing=&quot;0&quot;
      cellpadding=&quot;6&quot; rules=&quot;groups&quot;
      frame=&quot;hsides&quot;&gt;
      
      
      &lt;colgroup&gt;
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      &lt;/colgroup&gt;
      &lt;tbody&gt;
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Modifier&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Control&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Super&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Alt&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Spacebar&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Alt&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Super&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Control&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Key&lt;/td&gt;
      &lt;td
      
      class=&quot;org-left&quot;&gt;&lt;code&gt;C-e&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;org-left&quot;&gt;&lt;code&gt;C-c&lt;/code&gt;&lt;/td&gt;
      &lt;td
      
      class=&quot;org-left&quot;&gt;&lt;code&gt;C-x&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;org-left&quot;&gt;Spacebar&lt;/td&gt;
      &lt;td
      
      class=&quot;org-left&quot;&gt;&lt;code&gt;C-x&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;org-left&quot;&gt;&lt;code&gt;C-c&lt;/code&gt;&lt;/td&gt;
      &lt;td
      
      class=&quot;org-left&quot;&gt;&lt;code&gt;C-e&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;/table&gt;
      
      &lt;p&gt;
      Looking at the above, it&#39;s tempting to turn the
      &lt;code&gt;SpaceBar&lt;/code&gt; into a
      modifier &amp;#x2014; but I&#39;ve resisted doing that for now.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orge777534&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orge777534&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt;
      Observations&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;A week later, I&#39;m slowly retraining my muscle memory
      &amp;#x2014; I use
      the new affordances described here about 25% of the time.&lt;/li&gt;
      &lt;li&gt;I find myself using the new features in the second half of
      the day
      when my hands are more tired.&lt;/li&gt;
      &lt;li&gt;The effect of &lt;i&gt;thinking&lt;/i&gt; before
      &lt;i&gt;pressing&lt;/i&gt; a key reminds me of
      the time I learn to use &lt;i&gt;dvorak&lt;/i&gt; for text input; I
      still do so
      sometimes to give my hands a break.&lt;/li&gt;
      &lt;li&gt;The new mappings give some surprising results
      &lt;i&gt;e.g.&lt;/i&gt;, &lt;code&gt;alt&lt;/code&gt;
      &lt;code&gt;shift&lt;/code&gt; saves the buffer, but buyer beware,
      &lt;code&gt;alt&lt;/code&gt; &lt;code&gt;super&lt;/code&gt; quits
      Emacs.&lt;/li&gt;
      &lt;li&gt;Am sure more muscle memory will emerge for oft-repeated
      tasks.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/852290279019377777'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/852290279019377777'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2023/02/enhance-emacs-ergonomics-under-x-happy.html' title='Enhance Emacs Ergonomics Under X: Happy Hands!'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6246951876659327244</id><published>
      2022-12-21T07:09:00.002-08:00
    </published>
    <updated>2022-12-21T07:09:29.533-08:00</updated><title type='text'>
      AsTeR: Spoken Math On The Emacspeak Audio Desktop
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;AsTeR: Spoken Math On The
      Emacspeak Audio Desktop&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org7428d59&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7428d59&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Dedication&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;div class=&quot;org-center&quot;&gt;
      &lt;p&gt;
      To My Guiding Eyes
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;p&gt;
      In fond memory of &lt;a
      
      href=&quot;http://emacspeak.sf.net/raman/aster-labrador&quot;&gt;Aster&lt;/a&gt; who first showed the way for 10 years; to &lt;a href=&quot;http://emacspeak.sf.net/raman/hubbell-labrador&quot;&gt;Hubbell&lt;/a&gt; and
      &lt;a
      
      href=&quot;http://emacspeak.sf.net/raman/tilden-labrador&quot;&gt;Tilden&lt;/a&gt; who ably followed her lead over the next 22+ years!
      &lt;/p&gt;
      
      &lt;table&gt;
      &lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;On The
      Internet&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;No one knows you&#39;re not a
      dog!&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;strong&gt;Nor  if you&#39;re the same
      dog!&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;strong&gt;Or even the same
      gender!&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;aster-labrador/&quot;&gt;
      &lt;img
      
      src=&quot;http://emacspeak.sf.net/raman/aster-labrador/aster-geb-graduation.jpg&quot;
      alt=&quot;Aster Labrador&quot; width=&quot;150&quot;
      height=&quot;216&quot; /&gt;&lt;/a&gt;
      &lt;br/&gt;(2/15/1987—12/05/1999)&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;hubbell-labrador/&quot;&gt;
      &lt;img
      
      src=&quot;http://emacspeak.sf.net/raman/hubbell-labrador/hubbell-and-raman.jpg&quot; width=&quot;150&quot; height=&quot;216&quot;
      alt=&quot; Hubbell Labrador&quot; /&gt;&lt;/a&gt;
      &lt;br/&gt;(12/21/1997—4/11/2011)&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;tilden-labrador/&quot;&gt;
      &lt;img
      
      src=&quot;http://emacspeak.sf.net/raman/tilden-labrador/raman-and-tilden-geb.jpg&quot;
      alt=&quot;Tilden Labrador&quot; width=&quot;150&quot;
      height=&quot;216&quot; /&gt;&lt;/a&gt;
      &lt;br/&gt;(8/4/2009—9/3/2022)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/table&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org86c9bc8&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org86c9bc8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt;
      Overview&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      The work describing Audio System For Technical Readings &lt;a
      
      href=&quot;https://emacspeak.sourceforge.net/raman/aster/abstract.html&quot;&gt;(AsTeR)&lt;/a&gt; was
      presented to the Faculty of the Graduate School of Cornell
      Universityon Monday, Jan 17, 1994 for my &lt;a
      
      href=&quot;http://awards.acm.org/award_winners/raman_4110221.cfm&quot;&gt;PhD&lt;/a&gt;.  This release
      is an updated version of AsTeR that uses the Software DECTalk.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org30a965c&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org30a965c&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt;
      Implementation&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;AsTeR &lt;i&gt;audio-formats&lt;/i&gt; 
      &lt;b&gt;TeX&lt;/b&gt; and &lt;b&gt;LaTeX&lt;/b&gt;
      documents.&lt;/li&gt;
      &lt;li&gt;User interface   is implemented in Emacs.&lt;/li&gt;
      &lt;li&gt;It uses  the Emacspeak speech-server
      &lt;code&gt;dtk-soft&lt;/code&gt; to connect to the software
      DECTalk.&lt;/li&gt;
      &lt;li&gt;The  audio-formatter  is implemented in Common Lisp
      (SBCL).&lt;/li&gt;
      &lt;li&gt;Emacs commands call    Common Lisp via
      &lt;i&gt;slime&lt;/i&gt; to communicate with  Aster.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org8b54678&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org8b54678&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt;
      Prerequisites&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Install Emacspeak 57.0 or later from Github.&lt;/li&gt;
      &lt;li&gt;Install  &lt;i&gt;slime&lt;/i&gt; and
      &lt;i&gt;auctex&lt;/i&gt; using &lt;code&gt;M-x
      package-install&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Install &lt;i&gt;flex&lt;/i&gt;,  &lt;i&gt;SBCL&lt;/i&gt; 
      and &lt;i&gt;cl-asdf&lt;/i&gt; using  the  linux  package
      manager.&lt;/li&gt;
      &lt;li&gt;Install  &lt;a
      href=&quot;https://github.com/dectalk/dectalk&quot;&gt;Software
      DECTalk&lt;/a&gt; from Github.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org10a0b30&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org10a0b30&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Building
      AsTeR&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;&lt;code&gt;cd&lt;/code&gt; &amp;lt;emacspeak&amp;gt; to
      change to your &lt;code&gt;emacspeak&lt;/code&gt;
      directory.&lt;/li&gt;
      &lt;li&gt;Get source via git checkout &lt;a
      
      href=&quot;https://github.com/tvraman/aster-math&quot;&gt;https://github.com/tvraman/aster-math&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;cd aster-math/lisp  &amp;amp;&amp;amp;
      make&lt;/code&gt;&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org42bfb20&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org42bfb20&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6.&lt;/span&gt;
      Usage&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Add directory &lt;code&gt;aster-math/ui/&lt;/code&gt; to
      your Emacs &lt;code&gt;load-path&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Run &lt;code&gt;M-x load-library&lt;/code&gt;
      &lt;i&gt;aster&lt;/i&gt;; &lt;code&gt;M-x
      aster&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Aster commands are   on Emacs prefix-key
      &lt;code&gt;C-; SPC&lt;/code&gt; and &lt;code&gt;C-&#39;
      a&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;M-x describe-function aster&lt;/code&gt;
      displays help.&lt;/li&gt;
      &lt;li&gt;To speak math using AsTeR:
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Send a TeX file.&lt;/li&gt;
      &lt;li&gt;Send math content from any Emacs buffer.&lt;/li&gt;
      &lt;li&gt;When  editing LaTeX — including from within org-mode
      buffers.&lt;/li&gt;
      &lt;li&gt;When  browsing Wikipedia pages containing mathematics
      using Emacs&#39;
      EWW browser. (Make sure to first disable
      &lt;code&gt;shr-discard-aria-hidden&lt;/code&gt;).&lt;/li&gt;
      &lt;li&gt;From Emacs  Calculator (calc).&lt;/li&gt;
      &lt;li&gt;From the Emacs interface to Sage &amp;#x2014; a symbolic
      algebra
      system.&lt;/li&gt;
      &lt;li&gt;Papers from &lt;a
      href=&quot;https://arxiv.org/&quot;&gt;arxiv.org&lt;/a&gt;  — see 
      &lt;a
      
      href=&quot;https://info.arxiv.org/about/accessibility_research_report.html&quot;&gt;Arxiv.org Accessibility Report&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;&lt;/li&gt;
      &lt;li&gt;Once Aster starts speaking, you can use Aster&#39;s
      browser to move around.&lt;/li&gt;
      
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgd061514&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd061514&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7.&lt;/span&gt;
      References&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.sourceforge.net/raman/aster/2022-aster.ogg&quot;&gt;Demo recorded in October 2022&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.sourceforge.net/raman/aster/aster-toplevel.html&quot;&gt;Demo recorded in 1994&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      href=&quot;http://emacspeak.sf.net/raman/amsci-96.pdf&quot;&gt;Brian
      Hayes: Speaking Of Mathematics&lt;/a&gt;, American Scientist, March
      1996 — An accessible overview of  AsTeR.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.sourceforge.net/raman/sciam-0996profile.html&quot;&gt;Envisioning Speech:Scientific American&lt;/a&gt;, Wayte Gibbs, September 1996
      — Describes  AsTeR, Audio-formatting and Emacspeak.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.sourceforge.net/raman/publications/rfb-math-workshop/&quot;&gt;Proceedings: RFB Math &amp;amp; Science Symposium&lt;/a&gt;,  May 12 – 13 1994.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.sourceforge.net/raman/phd-thesis/index.html&quot;&gt;PHd Thesis&lt;/a&gt;, January 1994.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6246951876659327244'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6246951876659327244'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/12/aster-spoken-math-on-emacspeak-audio_21.html' title='AsTeR: Spoken Math On The Emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2198261518305009360</id><published>
      2022-12-20T19:06:00.002-08:00
    </published>
    <updated>2022-12-20T19:06:51.438-08:00</updated><title type='text'>
      Toward Accessible Scientific Documents From Arxiv.Org
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Toward Accessible Scientific
      Documents Via Arxiv.Org&lt;/h1&gt;
      &lt;div id=&quot;outline-container-orga229d1f&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orga229d1f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Background&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      I access research papers from &lt;a
      href=&quot;https://arxiv.org&quot;&gt;arxiv.org&lt;/a&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      As the Digital Library of the future, &lt;i&gt;arxiv&lt;/i&gt; is
      committed to
      improving the state of STEM Access; see the  
      &lt;a
      
      href=&quot;https://info.arxiv.org/about/accessibility_research_report.html&quot;&gt;Accessibility&lt;/a&gt; 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 &lt;i&gt;arxiv&lt;/i&gt; a smoother
      experience;
      posting them here so folks in the STEM Accessibility community can
      expand and build on these ideas.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org10567aa&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org10567aa&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt;
      Goal&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      Make &lt;a href=&quot;http://arxiv.org&quot;&gt;Arxiv&lt;/a&gt; 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org31adab2&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org31adab2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; Making The
      Portal Easy To Use&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      A &lt;i&gt;REST&lt;/i&gt; API to automate the download of multiple
      formats.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgfa90fc6&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgfa90fc6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Making The
      Content Progressively Easy To Consume&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Build PDFs using PDFLaTeX rather than the
      DVI-&amp;gt;PS-&amp;gt;PDF pipeline.&lt;/li&gt;
      &lt;li&gt;Ensure that PDFs are one-column layout.&lt;/li&gt;
      &lt;li&gt;Build HTML+Math content from LaTeX using TeX4HT and
      friends.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Allow authors to contribute macros for new notation as it
      gets invented.&lt;/li&gt;
      &lt;li&gt;Incorporate Speech Rules Engine (SRE) from Volker 
      Sorge.&lt;/li&gt;
      &lt;li&gt;Explore ChromeBooks where  ChromeVox is already
      built-in.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgf3c1c72&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgf3c1c72&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Target
      Experience&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      Once we have:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Arxiv: building PDF and HTML the way we desire.&lt;/li&gt;
      &lt;li&gt;Client-side setup recipe &amp;#x2013; initially for a
      ChromeBook or Linux
      running my present environment (see final Teaser
      section).&lt;/li&gt;&lt;li&gt;Mathjax and SRE injected at the right
      points on the backend at &lt;i&gt;arxiv&lt;/i&gt;.&lt;/li&gt;
      &lt;/ol&gt;
      
      
      &lt;p&gt;
      The target audience should be able to:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Search and discover content on arxiv.&lt;/li&gt;
      &lt;li&gt;View and consume content from Arxiv via the browser of
      choice with spoken
      feedback built-in.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org0215591&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org0215591&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6.&lt;/span&gt; Iterate And
      improve&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Test the flow with a few initial members of the target
      audience to discover the pain-points and fix them.&lt;/li&gt;
      &lt;li&gt;Communicate what we learn via arxiv given the traffic and
      start
      publicizing the solution.&lt;/li&gt;
      &lt;li&gt;Rinse and repeat ….&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org864b785&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org864b785&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7.&lt;/span&gt; Research
      Areas&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Graphs &amp;#x2013; start with Graphviz &amp;#x2014; 
      &lt;i&gt;Dot Graphics&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;Graphs as in X-Y plots &amp;#x2014; there has been some
      work on
      data Sonification &amp;#x2014; but it&#39;s still early and
      exploratory.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      
      &lt;div id=&quot;outline-container-org656867a&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org656867a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8.&lt;/span&gt;
      References&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/zorkow/speech-rule-engine/releases&quot;&gt;Speech Rule Engine &lt;/a&gt; from Volker Sorge.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://www.mathjax.org/&quot;&gt;MathJax&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a
      href=&quot;https://tug.org/tex4ht/&quot;&gt;TeX4HT&lt;/a&gt; On
      Debian Linux, this is in package
      &lt;code&gt;texlive-plain-generic.list&lt;/code&gt; &amp;#x2014;
      installed as &lt;code&gt;/usr/bin/xhlatex&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak&lt;/a&gt; &amp;#x2014; includes support for Math via SRE &amp;#x2014; AKA poor man&#39;s AsTeR.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/tvraman/aster-math#start-of-content&quot;&gt;Teaser:&lt;/a&gt; Heard from a bird: Speaking Of Mathematics: #emacspeak #STEM Again DECTalk → Again AsTeR.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2198261518305009360'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2198261518305009360'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/12/toward-accessible-scientific-documents.html' title='Toward Accessible Scientific Documents From Arxiv.Org'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-9200044220140893596</id><published>
      2022-11-23T10:10:00.001-08:00
    </published>
    <updated>2022-11-23T10:10:46.691-08:00</updated><title type='text'>
      Announcing Emacspeak 57.0 (Tilden)
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Announcing Emacspeak
      57.0—Tilden!&lt;/h1&gt;
      
      &lt;div id=&quot;org7596bc9&quot; class=&quot;figure&quot;&gt;
      &lt;p&gt;&lt;a
      href=&quot;https://tvraman.github.io/tilden-face.jpg&quot;
      alt=&quot;Tilden&quot; height=&quot;96&quot;
      width=&quot;59.33&quot;&gt;&lt;img
      src=&quot;https://tvraman.github.io/tilden-face.jpg&quot;
      alt=&quot;Tilden&quot; height=&quot;96&quot; width=&quot;59.33&quot;
      /&gt;&lt;/a&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;p&gt;
      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
      &lt;/p&gt;
      
      
      &lt;div id=&quot;outline-container-orge794566&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orge794566&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      San Jose, CA, (November 23, 2022)
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orge3efd30&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orge3efd30&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1.&lt;/span&gt; Emacspeak
      57.0 (Tilden)  Unleashed!  🦮&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
      &lt;p&gt;
      &amp;#x2014; Making Accessible Computing Effortless!
      &lt;/p&gt;
      
      &lt;p&gt;
      Advancing Accessibility In The Age Of User-Aware Interfaces
      &amp;#x2014; Zero
      cost of Ownership makes priceless software Universally affordable!
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;
      announces  immediate world-wide availability of &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/57.0/emacspeak-57.0.tar.bz2&quot;&gt;Emacspeak 57.0&lt;/a&gt;
      (Tilden) 🦮 &amp;#x2014; a powerful audio desktop that leverages
      today&#39;s
      evolving Data, Social and Assistant-Oriented Internet cloud to
      enableworking efficiently and effectively from anywhere!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgfa9d08b&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgfa9d08b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Investors
      Note:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      With several prominent tweeters (and mythical elephants) expanding
      coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org00a28ff&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org00a28ff&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; What Is
      It?&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orge274b29&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orge274b29&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Speech server for software DECTalk.  📢&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2022/10/learn-smarter-by-taking-rich-hypertext.html&quot;&gt;Learn Smarter&lt;/a&gt; By Taking Rich, Hypertext Notes.  🏫&lt;/li&gt;
      &lt;li&gt;Integrated Youtube player using
      &lt;code&gt;mpv&lt;/code&gt;.  📹&lt;/li&gt;
      &lt;li&gt;Leverage Emacs Repeat-Mode to minimize chording.
      ⌨&lt;/li&gt;
      &lt;li&gt;Speech-Enable NotMuch mail. 📪&lt;/li&gt;
      &lt;li&gt;Screen brightness with module
      &lt;code&gt;light&lt;/code&gt;.  🔅&lt;/li&gt;
      &lt;li&gt;Emacspeak Auditory Display Under Pulseaudio 
      🔊&lt;/li&gt;
      &lt;li&gt;Speciality browsers for various types of bookmarks. 
      📑&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      Sounds Themes Using OGG.  ℗
      &lt;/p&gt;
      
      &lt;p&gt;
      — And a lot more than will fit this margin. … 🗞
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      Note: This version &lt;b&gt;requires&lt;/b&gt; emacs-28.1 or later. 
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org32935e7&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org32935e7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a crash-prone
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system from
      the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org37e63bc&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org37e63bc&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6.&lt;/span&gt; Independent
      Test Results:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;p&gt;
      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 &amp;#x2014; and
      not the
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orga0b7aa2&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orga0b7aa2&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1.&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-6-1&quot;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org1ca0769&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org1ca0769&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7.&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from GitHub &amp;#x2014; see
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the
      WWW at &lt;a
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak
      mailing list — &lt;a
      
      href=&quot;http://mail.emacspeak.net&quot;&gt;emacspeak@emacspeak.net&lt;/a&gt;.  The &lt;a href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak Blog&lt;/a&gt; is a good
      source for news about recent enhancements and how to use them.
      &lt;/p&gt;
      
      &lt;p&gt;
      The latest development snapshot of Emacspeak is always available at
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org5701595&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org5701595&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8.&lt;/span&gt;
      History:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 57.0 is named in honor of &lt;a
      href=&quot;https://tvraman.github.io/tilden-face.jpg&quot;&gt;Tilden
      Labrador&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Emacspeak 56.0 (AgileDog) belies its age  to be as agile
      as Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 55.0 (CalmDog) attempts to be as calm as
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 54.0 (EZDog) learns to take it easy from
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 53.0 (EfficientDog)  focuses on 
      efficiency.&lt;/li&gt;
      &lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a
      pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Bigger and more powerful than any smart assistAnt,
      AssistDog provides&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      instant access to the most relevant information at all times.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;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&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      is entirely free of Artificial Ingredients (AI)™.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;
      excellent integration with various programming language
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the
      ability to spatially place multiple audio streams to provide timely
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling
      &lt;a
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing the breadth of
      user tasks that are covered without introducing unnecessary
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of award-winning
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools including full
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA
      LuckyDog continues to innovate via open technologies for better
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to the
      audio desktop—you can&#39;t but be social if you speak!&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA
      FastDog—is the latest in a sequence of upgrades that make previous
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA
      LeadDog—continues the tradition of introducing innovative access
      solutions that are unfettered by the constraints inherent in
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog
      —re-activates open, unfettered access to online
      information.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile in
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0
      —AKA PlayDog —continued the 
      Emacspeak tradition of relying on enhanced
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed to enhance
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user
      productivity and thereby reducing total cost of
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user
      productivity by exploiting today&#39;s evolving WWW
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the follow-up to
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog
      as the next in a continuing  series of award-winning audio desktop
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      the first release of this millennium. 
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak-13.0 &amp;#x2013;codenamed
      YellowLab&amp;#x2013; was the closing release of the
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013; began
      leveraging the evolving semantic WWW to provide task-oriented speech
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went the
      final step in making Linux a zero-cost Internet access solution for
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition of
      award-winning software releases designed to make eyes-free computing
      a
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in the areas
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgcc1b6cb&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgcc1b6cb&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9.&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-9&quot;&gt;
      &lt;p&gt;
      Originally based at Cornell (NY) —
      &lt;a
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on GitHub
      —&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. 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 &lt;a
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s
      National Museum of American History.
      &lt;/p&gt;
      
      &lt;p&gt;
      The Emacspeak mailing list is archived at
      &lt;a href=&quot;https://www.emacspeak.net&quot;&gt;Emacspeak Mail
      Archive&lt;/a&gt; &amp;#x2013;the home of the
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a
      valuable knowledge base for new users.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-orgf126f01&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgf126f01&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10.&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-10&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      *About This Release:
      &lt;/p&gt;
      &lt;hr /&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  &amp;#x2013;see
      &lt;a
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;postamble&quot; class=&quot;status&quot;&gt;
      &lt;p class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&quot;date&quot;&gt;Created: 2022-11-23 Wed
      10:07&lt;/p&gt;
      &lt;p class=&quot;validation&quot;&gt;&lt;a
      
      href=&quot;https://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9200044220140893596'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9200044220140893596'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/11/announcing-emacspeak-570-tilden.html' title='Announcing Emacspeak 57.0 (Tilden)'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
<id>tag:blogger.com,1999:blog-20280042.post-7255645472288967658
</id>
<published>2022-10-14T10:38:00.001-07:00
</published>
<updated>2022-10-14T10:38:36.767-07:00
</updated>
<title type='text'>Learn Smarter  By Taking Rich, Hypertext Notes
</title>
<content type='html'>&lt;div id=&quot;content&quot; class=&quot;content&quot;&gt;
&lt;h1 class=&quot;title&quot;&gt;Learn Smarter By Taking Rich, Hypertext Notes&lt;/h1&gt;
&lt;div id=&quot;outline-container-orgf7ba2eb&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgf7ba2eb&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; Background&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
&lt;p&gt;
As a student, I learned to take &lt;a href=&quot;https://www.cs.cornell.edu/info/people/raman/phd-thesis/html/root-thesis.html&quot;&gt;notes in Braille&lt;/a&gt; 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.
&lt;/p&gt;

&lt;p&gt;
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&#39;ve been
asking myself what &lt;i&gt;note-taking&lt;/i&gt; in this environment should look like.
This article summarizes the present state of what I use at present.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org59016b7&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org59016b7&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Use Case Requirements&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;All of the following should work equally well for locally stored
material, e.g., downloaded E-Books from &lt;a href=&quot;https://www.bookshare.org/cms/&quot;&gt;Bookshare.org&lt;/a&gt;  or Project
Gutenberg, as well as material hosted on the Internet in the form of
Blogs and Podcasts.&lt;/li&gt;
&lt;li&gt;Create named bookmarks in E-Books (EPub, Daisy).&lt;/li&gt;
&lt;li&gt;Create  AMarks —bookmarks  that point to positions in an audio files.&lt;/li&gt;
&lt;li&gt;Above should be possible independent of whether the learning
material is available locally, or accessed via the Internet.&lt;/li&gt;
&lt;li&gt;Enable the creation of hyperlinks to such bookmarks.&lt;/li&gt;
&lt;li&gt;Enable the easy creation of notes — organized by topic — while
reading E-Books  or listening to  audio material.&lt;/li&gt;
&lt;li&gt;Enable the embedding of hyperlinks to the bookmarks mentioned
earlier within these notes.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;
being 
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org84667ad&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org84667ad&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; User Experience&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
&lt;/div&gt;
&lt;div id=&quot;outline-container-org0615ac1&quot; class=&quot;outline-3&quot;&gt;
&lt;h3 id=&quot;org0615ac1&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;3.1.&lt;/span&gt; Create And Browse Bookmarks In E-Books&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-1&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;You can open Project Gutenberg EPubs via the Emacspeak Bookshelf
&amp;#x2014; see  see
&lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002depub.html&quot;&gt;Emacspeak Epub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You can download and open Bookshare books using module
&lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002dbookshare.html&quot;&gt;Emacspeak Bookshare&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Both of those modules open books using Emacs&#39; built-in EWW browser.&lt;/li&gt;
&lt;li&gt;Module
&lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002deww.html&quot;&gt;Emacspeak
eww&lt;/a&gt; implements &lt;i&gt;eww-marks&lt;/i&gt;, a bookmarking facility that manages
bookmarks in EPub and Daisy books.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
With a book open, you can:
&lt;/p&gt;

&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;Create named bookmarks,&lt;/li&gt;
&lt;li&gt;Browse all saved bookmarks in your library,&lt;/li&gt;
&lt;li&gt;And open a given bookmark to continue reading.&lt;/li&gt;
&lt;li&gt;Bookmarks can also be stored as &lt;i&gt;org-mode links&lt;/i&gt; for later
insertion  in an &lt;i&gt;org-mode&lt;/i&gt; file,  this means these hyperlinks
integrate into notes taken in &lt;i&gt;org-mode&lt;/i&gt; without any additional work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
See &lt;a href=&quot;https://orgmode.org/org.html&quot;&gt;Org Mode Manual&lt;/a&gt;, &lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002dbookmark.html&quot;&gt;Emacspeak Bookmarks&lt;/a&gt;, &lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002dbookshare.html&quot;&gt;Emacspeak Bookshare&lt;/a&gt;, and
&lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002depub.html&quot;&gt;Emacspeak EPub&lt;/a&gt; for relevant sections of the user manual.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org7f47d14&quot; class=&quot;outline-3&quot;&gt;
&lt;h3 id=&quot;org7f47d14&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;3.2.&lt;/span&gt; Create And Browse AMarks In Audio Books&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-2&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;AMarks are Emacspeak&#39;s audio equivalent of traditional bookmarks.&lt;/li&gt;
&lt;li&gt;An AMark encapsulates the location of the audio content,  a
time-offset, and a bookmark name.&lt;/li&gt;
&lt;li&gt;AMarks once created can be navigated to when playing that content
via module &lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002dm_002dplayer.html&quot;&gt;Emacspeak MPlayer&lt;/a&gt; which provides a rich but seamless
interface — here, &lt;i&gt;seamless&lt;/i&gt;
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.&lt;/li&gt;
&lt;li&gt;Emacspeak provides an AMarks Browser that lets you browse and
play any AMark in your library.&lt;/li&gt;
&lt;li&gt;Finally, AMarks like bookmarks can be stored as org-mode links
for later insertion into an org-mode file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
See &lt;a href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002damark.html&quot;&gt;Emacspeak Amarks&lt;/a&gt; for the user manual.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;outline-container-orge5d3e22&quot; class=&quot;outline-3&quot;&gt;
&lt;h3 id=&quot;orge5d3e22&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;3.3.&lt;/span&gt; Create  Bookmarks   On Web Pages&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-3&quot;&gt;
&lt;p&gt;
See module &lt;code&gt;org-capture&lt;/code&gt; for inspiration.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org80c9b25&quot; class=&quot;outline-3&quot;&gt;
&lt;h3 id=&quot;org80c9b25&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;3.4.&lt;/span&gt; Create Audio Bookmarks In Podcasts&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-4&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;Module &lt;code&gt;emacspeak-m-player&lt;/code&gt; is used to play Podcasts and other
forms of online audio-content, e.g., talks published on Youtube.&lt;/li&gt;
&lt;li&gt;This module can   store org-mode links to such content; storing
such a link captures the current time offset into the content
being played.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-org189d38b&quot; class=&quot;outline-3&quot;&gt;
&lt;h3 id=&quot;org189d38b&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;3.5.&lt;/span&gt; Create On-Line Notes Using Org-Mode&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-5&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;See the &lt;a href=&quot;https://orgmode.org/org.html&quot;&gt;Org Manual&lt;/a&gt; for details on taking notes in org-mode.&lt;/li&gt;
&lt;li&gt;Insert Hyperlinks To E-Books And Audio In Org-Mode by first storing
the link as described earlier.&lt;/li&gt;
&lt;li&gt;Review Notes, Follow Hyperlinks To Review Original Material  by
opening the notes file in &lt;i&gt;org-mode&lt;/i&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;



&lt;div id=&quot;outline-container-orgbc8d6e0&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgbc8d6e0&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Conclusion: Looking Back, Looking Forward&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;This describes a flexible workflow that is built out of multiple
small components.&lt;/li&gt;
&lt;li&gt;Illustrating various   workflows as above outlines the space
of possible solutions.&lt;/li&gt;
&lt;li&gt;Keeping the notes in &lt;i&gt;org-mode&lt;/i&gt; ensures that the notes are
long-lived, since &lt;i&gt;org-mode&lt;/i&gt; files are essentially plain-text
with an easy to parse syntax for parsing the underlying structure
if needed to implement future extensions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
<link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7255645472288967658'/>
<link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7255645472288967658'/>
<link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/10/learn-smarter-by-taking-rich-hypertext.html' title='Learn Smarter  By Taking Rich, Hypertext Notes'/>
<author>
<name>T. V. Raman
</name>
<uri>http://www.blogger.com/profile/03589687652590194428
</uri>
<email>noreply@blogger.com
</email>
<gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
</author>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-20280042.post-5277603887439052336
</id>
<published>2022-09-04T07:33:00.002-07:00
</published>
<updated>2022-09-04T07:33:32.375-07:00
</updated>
<title type='text'>Goodbye To Tilden Labrador, Our Beloved Press/Analyst Contact
</title>
<content type='html'>&lt;h1&gt;Epitaph:  Tilden  Labrador&lt;/h1&gt;

&lt;h2&gt;Epitaph&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &lt;em&gt;Why
dont you move out of my way please?&lt;/em&gt;.
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 &lt;em&gt;Thou Shall Not Pass&lt;/em&gt;.
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 &lt;em&gt;All of you have just a Smart Assistant;
But I&#39;m a Smart AssistDog, and that is better, --- because you know, A
Dog is Bigger Than An Ant!&lt;/em&gt;
In addition, Tilden, like Aster and
Bubbles before him, was also the mascot for &lt;a
href=&quot;http://emacspeak.sf.net&quot;&gt;Emacspeak --- The Complete Audio
Desktop&lt;/a&gt;; in addition, he  played the vital role of Press/Analyst
contact for just over 11 years.&lt;/p&gt;


</content>
<link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5277603887439052336'/>
<link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5277603887439052336'/>
<link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/09/goodbye-to-tilden-labrador-our-beloved.html' title='Goodbye To Tilden Labrador, Our Beloved Press/Analyst Contact'/>
<author>
<name>T. V. Raman
</name>
<uri>http://www.blogger.com/profile/03589687652590194428
</uri>
<email>noreply@blogger.com
</email>
<gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
</author>
</entry>
  <entry>
<id>tag:blogger.com,1999:blog-20280042.post-7788048593133633886
</id>
<published>2022-06-05T09:38:00.003-07:00
</published>
<updated>2022-06-05T09:38:42.788-07:00
</updated>
<title type='text'>Emacspeak: The Complete Audio Desktop Under Pulseaudio
</title>
<content type='html'>&lt;div id=&quot;content&quot; class=&quot;content&quot;&gt;
&lt;h1 class=&quot;title&quot;&gt;Emacspeak: The Complete Audio Desktop Under Pulseaudio&lt;/h1&gt;
&lt;div id=&quot;outline-container-orgfabf488&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgfabf488&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; Executive Summary&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
&lt;p&gt;
Porting  Emacspeak sound environment to Pulseaudio.
&lt;/p&gt;

&lt;p&gt;
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.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;outline-container-org0ab1466&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;org0ab1466&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Summary Of Auditory Display Enhancements&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
&lt;ul class=&quot;org-ul&quot;&gt;
&lt;li&gt;Notifications, e.g., &lt;i&gt;speaking the time&lt;/i&gt;, &lt;i&gt;incoming IM messages&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
etc. are spoken on a separate notification stream.
&lt;/p&gt;
&lt;ul class=&quot;org-ul&quot;&gt;
&lt;li&gt;The above normally plays on the right ear, but enhanced with a
&lt;i&gt;binaural&lt;/i&gt; effect.&lt;/li&gt;
&lt;li&gt;This can be configured to be on the left ear when running
Emacspeak remotely on a cloud-top.&lt;/li&gt;
&lt;li&gt;A &lt;i&gt;Bauer Stereo To Binaural&lt;/i&gt; &lt;a href=&quot;https://www.google.com/search?num=25&amp;amp;lite=90586&amp;amp;q=bs2b+bauer+Stereo+To+Binaural&quot;&gt;(BS2B)&lt;/a&gt;
filter is applied to all
output streams to provide an enhanced headphones listening experience.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;outloud&lt;/i&gt; server has been updated to request  lower latency
from Pulse; Pulseaudio defaults are too high for highly responsive
TTS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
For details on Emacspeak&#39;s enhancement to the auditory display, see
prior articles listed in the &lt;i&gt;References&lt;/i&gt; section.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-orgc514147&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgc514147&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; Configuring Pulseaudio To Enhance The Auditory Display&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
&lt;p&gt;
All of these features have been available until now by installing a
custom &lt;code&gt;.asoundrc&lt;/code&gt;; these are now available under Pulseaudio by
installing a &lt;code&gt;.config/pulse/default.pa&lt;/code&gt; in the user&#39;s home directory.
&lt;/p&gt;

&lt;pre class=&quot;example&quot;&gt;
cp EMACSPEAK_DIR/etc/pulse/default.pa ~/.config/pulse; pulseaudio -k
&lt;/pre&gt;


&lt;p&gt;
The above is a one-time operation that sets up the audio environment
&amp;#x2014; see &lt;a href=&quot;https://github.com/tvraman/emacspeak/blob/master/etc/pulse/README.org#L42&quot;&gt;etc/pulse/README.org&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;outline-container-orgd96e5b7&quot; class=&quot;outline-2&quot;&gt;
&lt;h2 id=&quot;orgd96e5b7&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; References&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
&lt;ol class=&quot;org-ol&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2016/02/augmented-headphone-listening-on-linux.html&quot;&gt;Augmented Headphone Listening On Linux For The Emacspeak Audio Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2015/12/soundscapes-on-emacspeak-audio-desktop.html&quot;&gt;Soundscapes On The Emacspeak Audio Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2016/11/follow-up-soundscapes-on-emacspeak.html&quot;&gt;Follow-Up: Soundscapes on the emacspeak Audio Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2015/12/a-ladspa-work-bench-for-emacspeak.html&quot;&gt;A Ladspa Work-Bench For The Emacspeak Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2015/11/generating-spatialized-auditory-icons.html&quot;&gt;Generating Spatialized Auditory Icons Using MPlayer And Ladspa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2015/11/listening-to-multiple-media-streams-on.html&quot;&gt;Listening To Multiple Media Streams On The Emacspeak Audio Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2015/11/using-multiple-tts-streams-on-emacspeak.html&quot;&gt;Using Multiple TTS Streams On The emacspeak Audio Desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://emacspeak.blogspot.com/2015/02/enhanced-audio-on-emacspeak-desktop.html&quot;&gt;Enhanced Audio On The Emacspeak Desktop&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;postamble&quot; class=&quot;status&quot;&gt;
&lt;p class=&quot;date&quot;&gt;Date: 2022-06-05 Sun 00:00&lt;/p&gt;
&lt;p class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;
&lt;p class=&quot;date&quot;&gt;Created: 2022-06-05 Sun 09:16&lt;/p&gt;
&lt;p class=&quot;validation&quot;&gt;&lt;a href=&quot;https://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;		
</content>
<link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7788048593133633886'/>
<link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7788048593133633886'/>
<link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/06/emacspeak-complete-audio-desktop-under.html' title='Emacspeak: The Complete Audio Desktop Under Pulseaudio'/>
<author>
<name>T. V. Raman
</name>
<uri>http://www.blogger.com/profile/03589687652590194428
</uri>
<email>noreply@blogger.com
</email>
<gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
</author>
</entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3241933033602334317</id><published>
      2022-04-30T10:16:00.002-07:00
    </published>
    <updated>2022-04-30T10:16:47.241-07:00</updated><title type='text'>
      Announcing Emacspeak 56.0 (AgileDog)
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Announcing Emacspeak
      56.0—AgileDog!&lt;/h1&gt;
      &lt;p&gt;
      The enjoyment of one&#39;s tools is an essential ingredient of
      successful work. &amp;#x2013; Donald E. Knuth
      &lt;/p&gt;
      
      &lt;div id=&quot;outline-container-orgb5e9224&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgb5e9224&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      San Jose, CA, (May 1, 2022)
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org464b166&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org464b166&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1.&lt;/span&gt; Emacspeak
      56.0 (AgileDog)  Unleashed!  🦮&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
      &lt;p&gt;
      &amp;#x2014; Making Accessible Computing Effortless!
      &lt;/p&gt;
      
      &lt;p&gt;
      Advancing Accessibility In The Age Of User-Aware Interfaces
      &amp;#x2014; Zero
      cost of Ownership makes priceless software Universally affordable!
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;
      announces  immediate world-wide availability of &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/56.0/emacspeak-56.0.tar.bz2&quot;&gt;Emacspeak 56.0&lt;/a&gt;
      (AgileDog) 🦮 &amp;#x2014; a powerful audio desktop that leverages
      today&#39;s
      evolving Data, Social and Assistant-Oriented Internet cloud to
      enableworking efficiently and effectively from anywhere!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgbf57205&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgbf57205&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Investors
      Note:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      With several prominent tweeters expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7b7ae95&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7b7ae95&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; What Is
      It?&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org2672b79&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org2672b79&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Updated eldoc support 🕮&lt;/li&gt;
      &lt;li&gt;Updated &lt;code&gt;elpy&lt;/code&gt; support 
      🐍&lt;/li&gt;
      &lt;li&gt;Updated language switching for Espeak  󠀁&lt;/li&gt;
      &lt;li&gt;Updated Transient Support 𝥍&lt;/li&gt;
      &lt;li&gt;External Browsers From EWW  🕸&lt;/li&gt;
      &lt;li&gt;Updated wizards and muggles 🧙&lt;/li&gt;
      &lt;li&gt;Updated &lt;code&gt;url templates&lt;/code&gt; for smarter
      Web access ♅&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      Fully tested under emacs-28 native compilation   🚄
      &lt;/p&gt;
      
      &lt;p&gt;
      — And a lot more than will fit this margin. … 🗞
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      Note: This version &lt;b&gt;requires&lt;/b&gt; emacs-27.1 or later. 
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org0ef9910&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org0ef9910&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a crash-prone
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system from
      the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org551e6b3&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org551e6b3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6.&lt;/span&gt; Independent
      Test Results:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;p&gt;
      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 &amp;#x2014; and
      not the
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7c1ca92&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org7c1ca92&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1.&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-6-1&quot;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgd69c955&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd69c955&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7.&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from GitHub &amp;#x2014; see
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the
      WWW at &lt;a
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak
      mailing list — &lt;a
      
      href=&quot;http://mail.emacspeak.net&quot;&gt;emacspeak@emacspeak.net&lt;/a&gt;.  The &lt;a href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak Blog&lt;/a&gt; is a good
      source for news about recent enhancements and how to use them.
      &lt;/p&gt;
      
      &lt;p&gt;
      The latest development snapshot of Emacspeak is always available at
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org42c0daf&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org42c0daf&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8.&lt;/span&gt;
      History:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 56.0 (AgileDog) belies its age  to be as agile
      as Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 55.0 (CalmDog) attempts to be as calm as
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 54.0 (EZDog) learns to take it easy from
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 53.0 (EfficientDog)  focuses on 
      efficiency.&lt;/li&gt;
      &lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a
      pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Bigger and more powerful than any smart assistAnt,
      AssistDog provides&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      instant access to the most relevant information at all times.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;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&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      is entirely free of Artificial Ingredients (AI)™.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;
      excellent integration with various programming language
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the
      ability to spatially place multiple audio streams to provide timely
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling
      &lt;a
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing the breadth of
      user tasks that are covered without introducing unnecessary
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of award-winning
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools including full
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA
      LuckyDog continues to innovate via open technologies for better
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to the
      audio desktop—you can&#39;t but be social if you speak!&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA
      FastDog—is the latest in a sequence of upgrades that make previous
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA
      LeadDog—continues the tradition of introducing innovative access
      solutions that are unfettered by the constraints inherent in
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog
      —re-activates open, unfettered access to online
      information.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile in
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0
      —AKA PlayDog —continued the 
      Emacspeak tradition of relying on enhanced
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed to enhance
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user
      productivity and thereby reducing total cost of
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user
      productivity by exploiting today&#39;s evolving WWW
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the follow-up to
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog
      as the next in a continuing  series of award-winning audio desktop
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      the first release of this millennium. 
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak-13.0 &amp;#x2013;codenamed
      YellowLab&amp;#x2013; was the closing release of the
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013; began
      leveraging the evolving semantic WWW to provide task-oriented speech
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went the
      final step in making Linux a zero-cost Internet access solution for
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition of
      award-winning software releases designed to make eyes-free computing
      a
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in the areas
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org30cfe3c&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org30cfe3c&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9.&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-9&quot;&gt;
      &lt;p&gt;
      Originally based at Cornell (NY) —
      &lt;a
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on GitHub
      —&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. 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 &lt;a
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s
      National Museum of American History.
      &lt;/p&gt;
      
      &lt;p&gt;
      The Emacspeak mailing list is archived at
      &lt;a href=&quot;https://www.emacspeak.net&quot;&gt;Emacspeak Mail
      Archive&lt;/a&gt; &amp;#x2013;the home of the
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a
      valuable knowledge base for new users.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-orgac9045b&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgac9045b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10.&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-10&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      *About This Release:
      &lt;/p&gt;
      &lt;hr /&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  &amp;#x2013;see
      &lt;a
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3241933033602334317'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3241933033602334317'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/04/announcing-emacspeak-560-agiledog.html' title='Announcing Emacspeak 56.0 (AgileDog)'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2874306629833574905</id><published>
      2022-04-09T14:39:00.001-07:00
    </published>
    <updated>2022-04-09T14:39:13.463-07:00</updated><title type='text'>
      Advice On Emacs Advice
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Advice On Emacs Advice&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org303b39e&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org303b39e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt;
      Introduction&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      Love it or hate it, lisp &lt;code&gt;advice&lt;/code&gt; is powerful
      and useful.  This
      article covers some of the places where
      &lt;code&gt;advice&lt;/code&gt; 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
      &lt;code&gt;advice&lt;/code&gt; are only relevant to a small
      minority &amp;#x2014; a good example is package &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak&lt;/a&gt;. These are but two
      extremes of a continuum and &lt;code&gt;advice&lt;/code&gt; enables
      many possibilities in
      that range.
      &lt;/p&gt;
      
      &lt;p&gt;
      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
      &lt;i&gt;Advice is evil,
      dont use it&lt;/i&gt; debate &amp;#x2014; it is here to help you if
      you do decide to use
      &lt;code&gt;advice&lt;/code&gt; for a given task.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org3b61f06&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3b61f06&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Where Advice
      Can Be Useful&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Temporarily  &lt;i&gt;trace&lt;/i&gt;  a given function
      &amp;#x2014; &lt;code&gt;advice&lt;/code&gt; can display
      messages on entry and exit to the advised function. Emacs&#39; own
      built-in debug-on-entry mostly obviates the need to do
      this.&lt;/li&gt;
      &lt;li&gt;You want custom  behavior for some command in a package,
      where
      the package author (hasn&#39;t yet) provided an appropriate
      &lt;i&gt;before&lt;/i&gt;
      or &lt;i&gt;after&lt;/i&gt; hook. Implementing the desired behavior
      as a &lt;i&gt;before&lt;/i&gt;
      or &lt;i&gt;after&lt;/i&gt; 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
      &lt;code&gt;advice&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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 &amp;#x2014; advice is
      excellently suited to this task.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org3ad6e12&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3ad6e12&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; Advice
      Tips&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      These tips are written in terms of
      &lt;code&gt;defadvice&lt;/code&gt; but apply equally well
      to the API introduced in module &lt;code&gt;nadvice&lt;/code&gt;.
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Use &lt;code&gt;before/after&lt;/code&gt; advice as far as
      possible, and resort to
      &lt;code&gt;around&lt;/code&gt; advice only when you
      must.&lt;/li&gt;&lt;li&gt;Name all your
      &lt;code&gt;advice&lt;/code&gt; fragments consistently.&lt;/li&gt;
      &lt;li&gt;Do not depend on the argument names used in the function
      being
      advised, instead use &lt;span
      class=&quot;underline&quot;&gt;ad-get-arg&lt;/span&gt; to
      positionally access the advised
      function&#39;s arguments.&lt;/li&gt;
      &lt;li&gt;Use lexical scoping in all your functions, and be rigorous
      in
      declaring any special variables using &lt;span
      class=&quot;underline&quot;&gt;(cl-declare (special
      &amp;#x2026;))&lt;/span&gt; in your code. The byte-compiler is your
      friend; use this
      declaration when you see warnings about special
      variables.&lt;/li&gt;&lt;li&gt;Except for very simple advice
      fragments, use a &lt;span
      class=&quot;underline&quot;&gt;let&lt;/span&gt; form inside
      your advice to bind variables.&lt;/li&gt;
      &lt;li&gt;Within your advice, do not depend on any global state that
      you
      haven&#39;t yourself bound within the &lt;span
      class=&quot;underline&quot;&gt;let&lt;/span&gt; body in your
      advice.&lt;/li&gt;
      &lt;li&gt;If you write &lt;code&gt;around&lt;/code&gt; advice,
      ensure that the last form in your
      &lt;code&gt;advice&lt;/code&gt; is &lt;span
      class=&quot;underline&quot;&gt;ad-return-value&lt;/span&gt;. Dont
      modify this value unless you
      &lt;b&gt;absolutely&lt;/b&gt; must.&lt;/li&gt;
      &lt;li&gt;Make sure to use &lt;span
      class=&quot;underline&quot;&gt;ad-do-it&lt;/span&gt; in your
      &lt;code&gt;around&lt;/code&gt; advice so that the
      original function gets called &amp;#x2014; except in the very rare
      cases 
      where you want to entirely bypass the original function.&lt;/li&gt;
      &lt;li&gt;In the rare case where you have multiple &lt;span
      class=&quot;underline&quot;&gt;defadvice&lt;/span&gt; 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 &lt;code&gt;defadvice&lt;/code&gt;.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;outline-container-orgd77eefa&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd77eefa&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Historical
      Note&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;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 &amp;#x2014; both for his advice implementation
      and for
      numerous email exchanges with him at the time as I learnt to use 
      advice.&lt;/li&gt;
      &lt;li&gt;I released Emacspeak in April 1995. A few days later I was
      thrilled to receive a phone call from RMS &amp;#x2014; where he told
      me all
      the reasons why I shouldn&#39;t use advice. This was distressing to
      say the least; I had two choices &amp;#x2014; 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.&lt;/li&gt;
      &lt;li&gt;I&#39;ve also garnered useful tips and tricks on the
      emacs-devel list
      over the  years from folks like Stefan Mounier &amp;#x2014;
      especially as
      Emacs transitioned to module &lt;code&gt;nadvice&lt;/code&gt; in
      2014.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2874306629833574905'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2874306629833574905'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2022/04/advice-on-emacs-advice.html' title='Advice On Emacs Advice'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8282700412236478605</id><published>
      2021-11-25T07:09:00.002-08:00
    </published>
    <updated>2021-11-25T07:09:48.848-08:00</updated><title type='text'>
      Emacspeak In The Age Of Cloud Computing
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Emacspeak In The Age Of Cloud
      Computing&lt;/h1&gt;
      &lt;div id=&quot;outline-container-orgd973121&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd973121&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      Emacspeak has supported &lt;i&gt;Cloud Computing&lt;/i&gt; 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😀.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgce224d0&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgce224d0&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; The
      Basics&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Emacspeak produces all spoken and non-spoken feedback via
      a &lt;i&gt;speech
      server&lt;/i&gt; &amp;#x2014; see &lt;a
      
      href=&quot;http://emacspeak.sourceforge.net/raman/publications/bc-emacspeak/&quot;&gt;Emacspeak: Beautiful Code&lt;/a&gt; for the detailed
      architecture overview.&lt;/li&gt;
      &lt;li&gt;This server runs as a separate process and can either run
      &lt;b&gt;locally&lt;/b&gt;
      i.e. on the machine running emacs; it can also run
      &lt;b&gt;remotely&lt;/b&gt;,
      e.g. your laptop from which  you login to your cloud-top.&lt;/li&gt;
      &lt;li&gt;Note the &lt;i&gt;local&lt;/i&gt; and
      &lt;i&gt;remote&lt;/i&gt; terminology in the above &amp;#x2014; to
      Emacspeak, the machine where Emacs runs is the local machine, so
      your machine in the cloud is &lt;b&gt;local&lt;/b&gt; to
      Emacspeak.&lt;/li&gt;
      &lt;li&gt;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 &lt;b&gt;remote&lt;/b&gt; to emacspeak.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org9d1d106&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org9d1d106&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; How It
      Works&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;See the emacspeak manual for how this speech-server is
      determined.&lt;/li&gt;
      &lt;li&gt;When running Emacspeak on a cloud-top, this &lt;i&gt;local
      speech server&lt;/i&gt; is just a
      simple shell script that connects to a local port  &amp;#x2014; by
      default    &lt;b&gt;2222&lt;/b&gt;.&lt;/li&gt;
      &lt;li&gt;When you connect to your cloud-top via SSH, you first
      &lt;i&gt;reverse port
      forward&lt;/i&gt; port &lt;b&gt;2222&lt;/b&gt; from the cloud-top
      back to your client. This
      causes data sent to port &lt;b&gt;2222&lt;/b&gt; on the cloud-top by
      Emacs to show
      up on port &lt;b&gt;2222&lt;/b&gt; on the local machine where your
      speech server is listening.&lt;/li&gt;
      &lt;li&gt;With that reverse port forwarding in place and assuming
      that
      &lt;code&gt;espeak&lt;/code&gt; is your TTS engine, running the
      speech-server
      &lt;code&gt;cloud-espeak&lt;/code&gt; on the cloud-top connects back
      to your client to
      produce spoken output.&lt;/li&gt;
      &lt;li&gt;For the previous step to work, something (or someone)
      needs to be
      listening on port &lt;b&gt;2222&lt;/b&gt; on your client.&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      So you need to start the relevant speech server  on your client
      before you &lt;code&gt;ssh&lt;/code&gt; to your cloud-top
      &amp;#x2014; in the case of &lt;code&gt;espeak&lt;/code&gt;,
      this is &lt;code&gt;ssh-espeak&lt;/code&gt;.
      &lt;/p&gt;
      
      &lt;p&gt;
      See directory &lt;code&gt;bash-utils&lt;/code&gt; in your emacspeak
      Git checkout for the
      relevant Bash scripts.
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org81b1ca8&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org81b1ca8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt;
      Workflow&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      Here is what the workflow looks like, again, use this &lt;b&gt;only
      if&lt;/b&gt;
      you have read and understood the previous section.
      See&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/bash-utils/remote#L8&quot;&gt;Bash Utils&lt;/a&gt; for the scripts mentioned below. Everything below
      assumes a Bash Shell.
      &lt;/p&gt;
      
      &lt;p&gt;
      On your cloud-top, specify the speech-server to use by running
      &lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      export DTK_PROGRAM=cloud-espeak
      &lt;/pre&gt;
      
      
      &lt;p&gt;
      You can put the above in your 
      &lt;code&gt;.bash_profile&lt;/code&gt; on your cloud-top.
      &lt;/p&gt;
      
      &lt;p&gt;
      On your client device, run
      &lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      . &amp;lt;emacspeak_dir&amp;gt;/bash-utils/remote
      &lt;/pre&gt;
      
      
      &lt;p&gt;
      This need be done only once per interactive shell.It defines
      &lt;code&gt;bash&lt;/code&gt;
      functions &lt;span
      class=&quot;underline&quot;&gt;remote&lt;/span&gt; and &lt;span
      class=&quot;underline&quot;&gt;rtts&lt;/span&gt;.
      &lt;/p&gt;
      
      &lt;p&gt;
      Next, run  Bash function &lt;span
      class=&quot;underline&quot;&gt;remote&lt;/span&gt; defined in the
      script you just
      loaded.
      &lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      remote host.example.com  speech-server espeak
      &lt;/pre&gt;
      
      
      &lt;p&gt;
      This does the following:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Starts a local speech server for the TTS engine
      &lt;code&gt;espeak&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Opens an SSH session to the cloud-top
      host.example.com.&lt;/li&gt;
      &lt;li&gt;Plays a musical chime (using &lt;code&gt;sox&lt;/code&gt;)
      to cue completion.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Note that typically, you should run something like
      &lt;code&gt;screen&lt;/code&gt; on the
      cloud-top and run Emacs within that &lt;code&gt;screen&lt;/code&gt;
      session; this will let
      you persist a running Emacs across multiple login/logout.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org4676fc9&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org4676fc9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Experience On
      A Well-Configured Setup&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      On a well-configured setup, you typically need only do:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Run the bash function that starts the local TTS server,
      and then
      connects to the cloud-top via SSH with reverse-port forwarding
      active.&lt;/li&gt;
      &lt;li&gt;Assuming there is an Emacs session running under screen at
      the
      remote end, it&#39;ll start talking on your local client.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8282700412236478605'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8282700412236478605'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2021/11/emacspeak-in-age-of-cloud-computing.html' title='Emacspeak In The Age Of Cloud Computing'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3740089600894731588</id><published>
      2021-11-24T08:30:00.000-08:00
    </published>
    <updated>2021-11-24T08:30:02.614-08:00</updated><title type='text'>
      Announcing Emacspeak 55.0 (CalmDog)
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;
      class=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Announcing Emacspeak
      55.0—CalmDog!&lt;/h1&gt;
      &lt;p&gt;
      The enjoyment of one&#39;s tools is an essential ingredient of
      successful work. &amp;#x2013; Donald E. Knuth
      &lt;/p&gt;
      
      &lt;div id=&quot;outline-container-org458a930&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org458a930&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1.&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      San Jose, CA, (Nov 24, 2021)
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgbf9ddd1&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orgbf9ddd1&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1.&lt;/span&gt; Emacspeak
      55.0 (CalmDog)  Unleashed!  🦮&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
      &lt;p&gt;
      &amp;#x2014; Making Accessible Computing Effortless!
      &lt;/p&gt;
      
      &lt;p&gt;
      Advancing Accessibility In The Age Of User-Aware Interfaces
      &amp;#x2014; Zero
      cost of Ownership makes priceless software Universally affordable!
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;
      announces  immediate world-wide availability of &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/55.0/emacspeak-55.0.tar.bz2&quot;&gt;Emacspeak 55.0&lt;/a&gt;
      (CalmDog) 🦮 &amp;#x2014; a powerful audio desktop that leverages
      today&#39;s
      evolving Data, Social and Assistant-Oriented Internet cloud to
      enableworking efficiently and effectively from anywhere!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org648436e&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org648436e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2.&lt;/span&gt; Investors
      Note:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      With several prominent tweeters expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orga01459f&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orga01459f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3.&lt;/span&gt; What Is
      It?&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org32377e2&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org32377e2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4.&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Speech-enable Emacs Application Framework  &lt;/li&gt;
      &lt;li&gt;Updated Soundscapes 🔊&lt;/li&gt;
      &lt;li&gt;Updated Auditory Icons 🎧&lt;/li&gt;
      &lt;li&gt;Updated Transient Support 𝥍&lt;/li&gt;
      &lt;li&gt;Speech-Enabled CalibreDB  📚&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      External Browsers From EWW  🕸
      &lt;/p&gt;
      
      &lt;p&gt;
      — And a lot more than will fit this margin. … 🗞
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      Note: This version &lt;b&gt;requires&lt;/b&gt; emacs-27.1 or later. 
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgba428e9&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgba428e9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5.&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a crash-prone
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system from
      the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org3ac4067&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3ac4067&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6.&lt;/span&gt; Independent
      Test Results:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;p&gt;
      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 &amp;#x2014; and
      not the
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org3dc256b&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org3dc256b&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1.&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-6-1&quot;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org13d725e&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org13d725e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7.&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from GitHub &amp;#x2014; see
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the
      WWW at &lt;a
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak
      mailing list — &lt;a
      
      href=&quot;http://mail.emacspeak.net&quot;&gt;emacspeak@emacspeak.net&lt;/a&gt;.  The &lt;a href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak Blog&lt;/a&gt; is a good
      source for news about recent enhancements and how to use them.
      &lt;/p&gt;
      
      &lt;p&gt;
      The latest development snapshot of Emacspeak is always available at
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org11d427d&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org11d427d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8.&lt;/span&gt;
      History:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 55.0 (CalmDog) attempts to be as calm as
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 54.0 (EZDog) learns to take it easy from
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 53.0 (EfficientDog)  focuses on 
      efficiency.&lt;/li&gt;
      &lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a
      pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Bigger and more powerful than any smart assistAnt,
      AssistDog provides&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      instant access to the most relevant information at all times.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;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&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      is entirely free of Artificial Ingredients (AI)™.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;
      excellent integration with various programming language
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the
      ability to spatially place multiple audio streams to provide timely
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling
      &lt;a
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing the breadth of
      user tasks that are covered without introducing unnecessary
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of award-winning
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools including full
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA
      LuckyDog continues to innovate via open technologies for better
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to the
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA
      FastDog—is the latest in a sequence of upgrades that make previous
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA
      LeadDog—continues the tradition of introducing innovative access
      solutions that are unfettered by the constraints inherent in
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog
      —re-activates open, unfettered access to online
      information.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile in
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0
      —AKA PlayDog —continued the 
      Emacspeak tradition of relying on enhanced
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed to enhance
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user
      productivity and thereby reducing total cost of
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user
      productivity by exploiting today&#39;s evolving WWW
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the follow-up to
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog
      as the next in a continuing  series of award-winning audio desktop
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      the first release of this millennium. 
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak-13.0 &amp;#x2013;codenamed
      YellowLab&amp;#x2013; was the closing release of the
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013; began
      leveraging the evolving semantic WWW to provide task-oriented speech
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went the
      final step in making Linux a zero-cost Internet access solution for
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition of
      award-winning software releases designed to make eyes-free computing
      a
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in the areas
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgd434354&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd434354&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9.&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-9&quot;&gt;
      &lt;p&gt;
      Originally based at Cornell (NY) —
      &lt;a
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on GitHub
      —&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. 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 &lt;a
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s
      National Museum of American History.
      &lt;/p&gt;
      
      &lt;p&gt;
      The Emacspeak mailing list is archived at
      &lt;a href=&quot;https://www.emacspeak.net&quot;&gt;Emacspeak Mail
      Archive&lt;/a&gt; &amp;#x2013;the home of the
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a
      valuable knowledge base for new users.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org3940d8e&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3940d8e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10.&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-10&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      *About This Release:
      &lt;/p&gt;
      &lt;hr /&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  &amp;#x2013;see
      &lt;a
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;	
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3740089600894731588'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3740089600894731588'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2021/11/announcing-emacspeak-550-calmdog.html' title='Announcing Emacspeak 55.0 (CalmDog)'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6263923850603207795</id><published>
      2021-09-19T10:49:00.001-07:00
    </published>
    <updated>2021-09-19T10:49:21.997-07:00</updated><title type='text'>
      Generalize Snarf Tool: How The General Can Be Simpler Than The
      Specific
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Generalize Snarf Tool: How The
      General Can Be Simpler Than The Specific&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org4d4e143&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org4d4e143&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      The
      &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2021/09/snarfing-string-within-delimiters-with.html&quot;&gt;previous article&lt;/a&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org11a0752&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org11a0752&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; The Updated
      Implementation&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(&lt;span
      style=&quot;color: #b6a0ff;&quot;&gt;defun&lt;/span&gt; &lt;span
      style=&quot;color: #feacd0;&quot;&gt;snarf-sexp&lt;/span&gt;
      (&lt;span style=&quot;color:
      #6ae4b9;&quot;&gt;&amp;amp;optional&lt;/span&gt; delete)
      &lt;span style=&quot;color: #b0d6f5;&quot;&gt;&quot;Snarf the
      contents between delimiters at point.&lt;/span&gt;
      &lt;span style=&quot;color: #b0d6f5;&quot;&gt;Optional interactive
      prefix arg deletes it.&quot;&lt;/span&gt;
      (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;interactive&lt;/span&gt; &lt;span
      style=&quot;color: #79a8ff;&quot;&gt;&quot;P&quot;&lt;/span&gt;)
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;let&lt;/span&gt;
      ((orig (point))
      (pair nil)
      (pairs &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;We keep
      predefined pairs for usability:&lt;/span&gt;
      &#39;((?&amp;lt; ?&amp;gt;)
      (?\[ ?\])
      (?\( ?\))
      (?{ ?})
      (?\&quot; ?\&quot;)
      (?&#39; ?&#39;)
      (?` ?&#39;)
      (?| ?|)
      (?* ?*)
      (?/ ?/)
      (?- ?-)
      (?_ ?_)
      (?~ ?~)))
      (char (char-after))
      (stab nil))
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;setq&lt;/span&gt;
      pair &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;But we
      read a close delimiter  for the general case&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;or&lt;/span&gt; (assq
      char pairs) &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color:
      #a8a8a8;&quot;&gt;Predefined delimiter&lt;/span&gt;
      (list char (read-char &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;Close Delimiter: &quot;&lt;/span&gt;))))
      &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color:
      #a8a8a8;&quot;&gt;Generality!&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;setq&lt;/span&gt;
      stab (copy-syntax-table))
      (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;with-syntax-table&lt;/span&gt; stab
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;cond&lt;/span&gt;
      ((= (cl-first pair) (cl-second pair))
      (modify-syntax-entry (cl-first pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;\&quot;&quot;&lt;/span&gt; ) 
      (modify-syntax-entry (cl-second pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;\&quot;&quot;&lt;/span&gt; ))
      (t
      (modify-syntax-entry (cl-first pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;(&quot;&lt;/span&gt;)
      (modify-syntax-entry (cl-second pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;)&quot;&lt;/span&gt;)))
      (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;save-excursion&lt;/span&gt;
      (forward-sexp)
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;cond&lt;/span&gt;
      (delete
      (kill-region (1+ orig) (1- (point))))
      (t (kill-ring-save (1+ orig) (1- (point)))))))))
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org467ac84&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org467ac84&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Key
      Takeaways&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;The generalized implementation no longer throws an error
      if point
      is not on a pre-defined delimiter.&lt;/li&gt;
      &lt;li&gt;Instead, it generalizes the implementation to read the
      close
      delimiter from the keyboard if char at point is not in the
      pre-defined list.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Note that usability here is not merely to reduce a
      keystroke;
      it&#39;s more to reduce the cognitive load on the user with respect
      to having to &lt;i&gt;think&lt;/i&gt; about the close delimiter in
      the common
      case.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6263923850603207795'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6263923850603207795'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2021/09/generalize-snarf-tool-how-general-can.html' title='Generalize Snarf Tool: How The General Can Be Simpler Than The Specific'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3089333105276688605</id><published>
      2021-09-18T09:46:00.001-07:00
    </published>
    <updated>2021-09-18T09:46:30.411-07:00</updated><title type='text'>
      Snarfing String Within Delimiters  With One Defun
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Snarfing String Within Delimiters 
      With One Defun&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org86e644c&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org86e644c&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      I found that  I frequently needed to snarf a string enclosed within
      delimiters, e.g., URLs in email messages &lt;span
      class=&quot;underline&quot;&gt;&amp;lt;url&amp;gt;&lt;/span&gt;,
      bolded, italics and other styled text in org-mode etc. I first tried
      package &lt;span class=&quot;underline&quot;&gt;ciel&lt;/span&gt;
      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
      &lt;b&gt;defun&lt;/b&gt;!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org56f5525&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org56f5525&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; The
      Solution&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      Here is the solution I implemented  at
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-wizards.el#L3089&quot;&gt;emacspeak-wizards-snarf-sexp&lt;/a&gt;. 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:
      &lt;/p&gt;
      
      
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(&lt;span
      style=&quot;color: #b6a0ff;&quot;&gt;defun&lt;/span&gt; &lt;span
      style=&quot;color:
      #feacd0;&quot;&gt;snarf-sexp-contents&lt;/span&gt; (&lt;span
      style=&quot;color: #6ae4b9;&quot;&gt;&amp;amp;optional&lt;/span&gt;
      delete)
      &lt;span style=&quot;color: #b0d6f5;&quot;&gt;&quot;Snarf the
      contents between delimiters at point.&lt;/span&gt;
      &lt;span style=&quot;color: #b0d6f5;&quot;&gt;Optional interactive
      prefix arg deletes it.&quot;&lt;/span&gt;
      (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;interactive&lt;/span&gt; &lt;span
      style=&quot;color: #79a8ff;&quot;&gt;&quot;P&quot;&lt;/span&gt;)
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;let&lt;/span&gt;
      ((orig (point))
      (pair nil)
      (pairs &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;The
      delimiter pairs:&lt;/span&gt;
      &#39;((?&amp;lt; ?&amp;gt;)
      (?\[ ?\])
      (?\( ?\))
      (?{ ?})
      (?\&quot; ?\&quot;)
      (?&#39; ?&#39;)
      (?` ?&#39;)
      (?| ?|)
      (?* ?*)
      (?/ ?/)
      (?- ?-)
      (?_ ?_)
      (?~ ?~)))
      (char (char-after))
      (stab nil)) &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;Syntax
      table we  use&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;unless&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;setq&lt;/span&gt;
      pair (assoc char pairs)) &lt;span style=&quot;color:
      #a8a8a8;&quot;&gt;;;; &lt;/span&gt;&lt;span style=&quot;color:
      #a8a8a8;&quot;&gt;Not on a delimiter &lt;/span&gt;
      (&lt;span style=&quot;color: #dbbe5f;&quot;&gt;error&lt;/span&gt;
      &lt;span style=&quot;color: #79a8ff;&quot;&gt;&quot;Point is not on
      a supported delimiter&quot;&lt;/span&gt;))
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;setq&lt;/span&gt;
      stab (copy-syntax-table))
      (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;with-syntax-table&lt;/span&gt; stab
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;cond&lt;/span&gt;
      ((= (cl-first pair) (cl-second pair)) &lt;span style=&quot;color:
      #a8a8a8;&quot;&gt;;;;&lt;/span&gt;&lt;span style=&quot;color:
      #a8a8a8;&quot;&gt;Like quotes&lt;/span&gt;
      (modify-syntax-entry (cl-first pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;\&quot;&quot;&lt;/span&gt; ) 
      (modify-syntax-entry (cl-second pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;\&quot;&quot;&lt;/span&gt; ))
      (t&lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;Like
      parens &lt;/span&gt;
      (modify-syntax-entry (cl-first pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;(&quot;&lt;/span&gt;)
      (modify-syntax-entry (cl-second pair) &lt;span style=&quot;color:
      #79a8ff;&quot;&gt;&quot;)&quot;&lt;/span&gt;)))
      (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;save-excursion&lt;/span&gt;&lt;span
      style=&quot;color: #a8a8a8;&quot;&gt;;;; &lt;/span&gt;&lt;span
      style=&quot;color: #a8a8a8;&quot;&gt;We have our sexp &lt;/span&gt;
      (forward-sexp) &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;Will
      error out if delims dont match&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;cond&lt;/span&gt;
      (delete &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;Clear
      sexp contents &lt;/span&gt;
      (kill-region (1+ orig) (1- (point))))
      (t &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;Copy sexp
      contents&lt;/span&gt;
      (kill-ring-save (1+ orig) (1- (point)))))))))
      
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org828c705&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org828c705&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.1&lt;/span&gt; Key
      Take-Aways&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-1&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;S-expressions are a key Emacs concept with extensive
      built-in support.&lt;/li&gt;
      &lt;li&gt;S-expressions are determined by matching
      delimiters.&lt;/li&gt;
      &lt;li&gt;Delimiters are defined by the syntax-table in
      effect.&lt;/li&gt;
      &lt;li&gt;Emacs-lisp primitives let us define and manipulate
      temporary syntax-tables.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3089333105276688605'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3089333105276688605'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2021/09/snarfing-string-within-delimiters-with.html' title='Snarfing String Within Delimiters  With One Defun'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6307300043551934554</id><published>
      2021-08-01T09:39:00.002-07:00
    </published>
    <updated>2021-08-01T09:39:57.679-07:00</updated><title type='text'>
      Contextual Context Switching For An Efficient Workflow
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Contextual Context Switching For
      An Efficient Workflow&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org8f9276d&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org8f9276d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      Context switching in an Emacs workflow comes down to switching
      buffers &amp;#x2014; and  Emacs provides a large number of
      built-ins and extensions packages for &lt;i&gt;switching
      buffers&lt;/i&gt;. One can
      put together numerous workflows by picking among thesee to make
      context switching &lt;i&gt;contextual&lt;/i&gt; &amp;#x2014; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      This article summarizes my present workflow &amp;#x2014; it&#39;s
      entirely
      keyboard driven and optimized for
      an eyes-free workflow.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orga0534fb&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orga0534fb&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Where Does
      &lt;i&gt;Context&lt;/i&gt; Come From?&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      Context as used in this article can be traced back to the current
      task at
      hand &amp;#x2014; here are some illustrative examples:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Editing a set of related files. (.c, .h)&lt;/li&gt;
      &lt;li&gt;Switching among a collection of chat buffers.
      (major-mode)&lt;/li&gt;
      &lt;li&gt;Switching among a collection of mail folders.
      (major-mode)&lt;/li&gt;
      &lt;li&gt;Switching among a collection of open Web pages.
      (major-mode)&lt;/li&gt;
      &lt;li&gt;Switching among a &lt;i&gt;small&lt;/i&gt; number of
      recently used buffers. (recency)&lt;/li&gt;
      &lt;li&gt;Switching among buffers in the same project
      (project)&lt;/li&gt;
      &lt;li&gt;Switching between project-specific shells and buffers.
      (project)&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-orgdd9e202&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgdd9e202&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Building Blocks
      For Context Switching&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      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
      &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2018/06/effective-suggest-and-complete-in-eyes.html&quot;&gt;Search, Input, Filter, Target (SIFT)&lt;/a&gt; interaction described in a
      previous article for a more detailed explanation or properties that
      characterize effective eyes-free interaction.
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Built-in Command &lt;code&gt;next-buffer&lt;/code&gt; and
      &lt;code&gt;previous-buffer&lt;/code&gt; bound to
      &lt;code&gt;hyper-,&lt;/code&gt; and
      &lt;code&gt;hyper-.&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Builtin Command ~ &lt;code&gt;other-window&lt;/code&gt;
      bound to &lt;code&gt;C-x o&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-wizards.el#L1621&quot;&gt;Emacspeak Commands&lt;/a&gt;   &lt;code&gt;emacspeak-wizards-cycle-to-next-buffer&lt;/code&gt; and
      &lt;code&gt;emacspeak-wizards-cycle-to-previous-buffer&lt;/code&gt;
      bound to  &lt;code&gt;Alt-n&lt;/code&gt; and
      &lt;code&gt;Alt-p&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-wizards.el#L729&quot;&gt;Emacspeak Command&lt;/a&gt; &lt;code&gt;emacspeak-wizards-shell-toggle&lt;/code&gt; bound to &lt;code&gt;Super-,&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-wizards.el#L1457&quot;&gt;Emacspeak Command&lt;/a&gt; &lt;code&gt;emacspeak-wizards-shell-by-key&lt;/code&gt; bound to &lt;code&gt;C-c [1-9]&lt;/code&gt;.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;div id=&quot;outline-container-org903a098&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org903a098&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.1&lt;/span&gt; Things To
      Note&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-1&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;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&#39;s daily habit.&lt;/li&gt;
      &lt;li&gt;And when thesee task-specific commands dont get you the
      buffer
      you want with one or two keystrokes, one can always fallback to
      &lt;code&gt;switch-to-buffer&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Built-in Command &lt;code&gt;switch-to-buffer&lt;/code&gt;
      bound to  &lt;code&gt;C-x b&lt;/code&gt; which in my
      environment maps to  &lt;code&gt;ido-switch-buffer&lt;/code&gt; with
      fuzzy completion.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org6e43053&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org6e43053&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.2&lt;/span&gt; Related
      Packages&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-2&quot;&gt;
      &lt;p&gt;
      There are of course many alternatives to the building blocks above,
      here is a non-exhaustive list:
      &lt;/p&gt;
      
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Package &lt;code&gt;helm&lt;/code&gt; with
      &lt;code&gt;ivy&lt;/code&gt;, &lt;code&gt;counsel&lt;/code&gt; and
      friends.&lt;/li&gt;
      &lt;li&gt;Package &lt;code&gt;selectrum&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      Additionally organizing  one&#39;s workspace using &lt;code&gt;Emacs
      Frames&lt;/code&gt; with
      each frame dedicated to tasks like email &amp;#x2014; visual
      workspaces.
      &lt;/p&gt;
      
      &lt;p&gt;
      In general, I&#39;ve not found any of the above adding much in the
      context of eyes-free interaction.
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7e4aab2&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7e4aab2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt;
      Conclusion&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      Emacs has a large number of facilities that lend themselves to
      multiple workflows. Investing some time in putting together
      workflows that suit one&#39;s needs has a large pay-back over time.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;			
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6307300043551934554'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6307300043551934554'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2021/08/contextual-context-switching-for.html' title='Contextual Context Switching For An Efficient Workflow'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3408061818965563521</id><published>
      2021-05-02T11:29:00.000-07:00
    </published>
    <updated>2021-05-02T11:29:12.692-07:00</updated><title type='text'>
      Announcing Emacspeak 54.0 (EZDog)
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Announcing Emacspeak
      54.0—EZDog!&lt;/h1&gt;
      &lt;p&gt;
      The enjoyment of one&#39;s tools is an essential ingredient of
      successful work. &amp;#x2013; Donald E. Knuth
      &lt;/p&gt;
      
      &lt;div id=&quot;outline-container-org3888897&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3888897&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      San Jose, CA, (May 3, 2021)
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orga80b37f&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orga80b37f&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; Emacspeak
      54.0 (EZDog)  Unleashed!  🦮&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
      &lt;p&gt;
      &amp;#x2014; Making Accessible Computing EZ Again!
      &lt;/p&gt;
      
      &lt;p&gt;
      Advancing Accessibility In The Age Of User-Aware Interfaces
      &amp;#x2014; Zero
      cost of Ownership makes priceless software Universally affordable!
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;
      announces  immediate world-wide availability of &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/54.0/emacspeak-53.0.tar.bz2&quot;&gt;Emacspeak 54.0&lt;/a&gt;
      (EZDog) 🦮 &amp;#x2014; a powerful audio desktop that leverages
      today&#39;s
      evolving Data, Social and Assistant-Oriented Internet cloud to
      enableworking efficiently and effectively from anywhere!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org04cd7a8&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org04cd7a8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Investors
      Note:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      With several prominent tweeters expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org3115cb5&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3115cb5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; What Is
      It?&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orged75ec3&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orged75ec3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Faster Startup  🛱&lt;/li&gt;
      &lt;li&gt;MP3 Files In Dired 🎹&lt;/li&gt;
      &lt;li&gt;Dynamic playlist support with m-player  🎶&lt;/li&gt;
      &lt;li&gt;Gopher And Gemini ♊&lt;/li&gt;
      &lt;li&gt;Emacs 28 with native compilation   🚅&lt;/li&gt;
      &lt;li&gt;Updated Soundscapes  🐦&lt;/li&gt;
      &lt;li&gt;Updated wizards🧙&lt;/li&gt;
      &lt;li&gt;Updated URL templates  🕷&lt;/li&gt;
      &lt;li&gt;Capitalization And AllCaps   💼&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;
      Updated keymaps and keybindings ⌨
      &lt;/p&gt;
      
      &lt;p&gt;
      — And a lot more than will fit this margin. … 🗞
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;
      
      
      &lt;p&gt;
      Note: This version &lt;b&gt;requires&lt;/b&gt; emacs-27.1 or later. 
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgd0c7f10&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd0c7f10&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a crash-prone
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system from
      the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org21dc866&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org21dc866&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Independent
      Test Results:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;p&gt;
      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 &amp;#x2014; and
      not the
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org40be5bf&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org40be5bf&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-6-1&quot;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org945eccf&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org945eccf&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from GitHub &amp;#x2014; see
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the
      WWW at &lt;a
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak
      mailing list — &lt;a
      
      href=&quot;http://mail.emacspeak.net&quot;&gt;emacspeak@emacspeak.net&lt;/a&gt;.  The &lt;a href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak Blog&lt;/a&gt; is a good
      source for news about recent enhancements and how to use them.
      &lt;/p&gt;
      
      &lt;p&gt;
      The latest development snapshot of Emacspeak is always available at
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgd258e48&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd258e48&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt;
      History:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 54.0 (EZDog) learns to take it easy from
      Tilden.&lt;/li&gt;
      &lt;li&gt;Emacspeak 53.0 (EfficientDog)  focuses on 
      efficiency.&lt;/li&gt;
      &lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a
      pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Bigger and more powerful than any smart assistAnt,
      AssistDog provides&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      instant access to the most relevant information at all times.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;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&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      is entirely free of Artificial Ingredients (AI)™.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;
      excellent integration with various programming language
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the
      ability to spatially place multiple audio streams to provide timely
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling
      &lt;a
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing the breadth of
      user tasks that are covered without introducing unnecessary
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of award-winning
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools including full
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA
      LuckyDog continues to innovate via open technologies for better
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to the
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA
      FastDog—is the latest in a sequence of upgrades that make previous
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA
      LeadDog—continues the tradition of introducing innovative access
      solutions that are unfettered by the constraints inherent in
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog
      —re-activates open, unfettered access to online
      information.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile in
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0
      —AKA PlayDog —continued the 
      Emacspeak tradition of relying on enhanced
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed to enhance
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user
      productivity and thereby reducing total cost of
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user
      productivity by exploiting today&#39;s evolving WWW
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the follow-up to
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog
      as the next in a continuing  series of award-winning audio desktop
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      the first release of this millennium. 
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak-13.0 &amp;#x2013;codenamed
      YellowLab&amp;#x2013; was the closing release of the
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013; began
      leveraging the evolving semantic WWW to provide task-oriented speech
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went the
      final step in making Linux a zero-cost Internet access solution for
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition of
      award-winning software releases designed to make eyes-free computing
      a
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in the areas
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org9306ff5&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org9306ff5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-9&quot;&gt;
      &lt;p&gt;
      Originally based at Cornell (NY) —
      &lt;a
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on GitHub
      —&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. 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 &lt;a
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s
      National Museum of American History.
      &lt;/p&gt;
      
      &lt;p&gt;
      The Emacspeak mailing list is archived at Vassar &amp;#x2013;the
      home of the
      Emacspeak mailing list&amp;#x2013; 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 &amp;#x2014; stay tuned;
      in the
      meantime, the list is available via
      &lt;b&gt;nntp+news.gmane.io:gmane.emacs.emacspeak.general&lt;/b&gt;
      from within Gnus.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org80bc5fa&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org80bc5fa&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-10&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      *About This Release:
      &lt;/p&gt;
      &lt;hr /&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  &amp;#x2013;see
      &lt;a
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;			
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3408061818965563521'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3408061818965563521'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2021/05/announcing-emacspeak-540-ezdog.html' title='Announcing Emacspeak 54.0 (EZDog)'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4870921173520661381</id><published>
      2020-11-21T09:28:00.004-08:00
    </published>
    <updated>2020-11-21T09:28:45.013-08:00</updated><title type='text'>
      Emacspeak 53.0 EfficientDog Unleashed!
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Announcing Emacspeak
      52.0—WorkAtHomeDog!&lt;/h1&gt;
      &lt;p&gt;
      The enjoyment of one&#39;s tools is an essential ingredient of
      successful work. &amp;#x2013; Donald E. Knuth
      &lt;/p&gt;
      
      &lt;div id=&quot;outline-container-org5a6e85f&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org5a6e85f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      San Jose, CA, (Nov 22, 2020)
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org20a78c7&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org20a78c7&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; Emacspeak
      53.0 (EfficientDog) 🦮 Unleashed!&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
      &lt;p&gt;
      &amp;#x2014; Making Telecommuting Fun Again!
      &lt;/p&gt;
      
      &lt;p&gt;
      Advancing Accessibility In The Age Of User-Aware Interfaces
      &amp;#x2014; Zero
      cost of Ownership makes priceless software Universally affordable!
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;
      &amp;#x2014; announces the immediate world-wide availability of
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/53.0/emacspeak-53.0.tar.bz2&quot;&gt;Emacspeak 53.0&lt;/a&gt;
      (EfficientDog) 🦮  &amp;#x2014; a powerful audio desktop that
      leverages today&#39;s evolving
      Data, Social and Assistant-Oriented Internet cloud   to enable
      working
      efficiently and effectively from anywhere!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7bead7a&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7bead7a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Investors
      Note:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      With several prominent tweeters expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgc0b8c05&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgc0b8c05&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; What Is
      It?&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orga0f706e&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orga0f706e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      This version &lt;b&gt;requires&lt;/b&gt; emacs-26.1 or later. 
      &lt;/p&gt;
      
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Speech-Enabled Haskell Mode ⁡&lt;/li&gt;
      &lt;li&gt;Speech-Enable VTerm  🖳&lt;/li&gt;
      &lt;li&gt;Speech-Enable Package Syslog  &lt;/li&gt;
      &lt;li&gt;Speech-enable Package hide-lines  𐇪&lt;/li&gt;
      &lt;li&gt;Speech-Enable Racer 🖹&lt;/li&gt;
      &lt;li&gt;Speech-Enable Eglot 󠀁&lt;/li&gt;
      &lt;li&gt;speech-Enable project.el 📽&lt;/li&gt;
      &lt;li&gt;Speech-Enable rust-mode 🦊&lt;/li&gt;
      &lt;li&gt;Emacspeak-sdcv &amp;#x2014; speech-Enable Stardict
      Interaction 🤩&lt;/li&gt;
      &lt;li&gt;Add CTL-Z As A New Prefix Keymap ⌨&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      — And a lot more than will fit this margin. … 🗞
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgd40f131&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgd40f131&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a crash-prone
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system from
      the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org839f959&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org839f959&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Independent
      Test Results:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-6&quot;&gt;
      &lt;p&gt;
      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 &amp;#x2014; and
      not the
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org9adfe87&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org9adfe87&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-6-1&quot;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org84ee605&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org84ee605&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-7&quot;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from GitHub &amp;#x2014; see
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the
      WWW at &lt;a
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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 &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and how to
      use them.
      &lt;/p&gt;
      
      &lt;p&gt;
      The latest development snapshot of Emacspeak is always available at
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org070e659&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org070e659&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt;
      History:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-8&quot;&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 53.0 (EfficientDog)  focuses on 
      efficiency.&lt;/li&gt;
      &lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog) makes working remotely a
      pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Bigger and more powerful than any smart assistAnt,
      AssistDog provides&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      instant access to the most relevant information at all times.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;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&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      is entirely free of Artificial Ingredients (AI)™.
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned from
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;
      excellent integration with various programming language
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the
      ability to spatially place multiple audio streams to provide timely
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling
      &lt;a
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing the breadth of
      user tasks that are covered without introducing unnecessary
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of award-winning
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools including full
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA
      LuckyDog continues to innovate via open technologies for better
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to the
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA
      FastDog—is the latest in a sequence of upgrades that make previous
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA
      LeadDog—continues the tradition of introducing innovative access
      solutions that are unfettered by the constraints inherent in
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog
      —re-activates open, unfettered access to online
      information.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile in
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0
      —AKA PlayDog —continued the 
      Emacspeak tradition of relying on enhanced
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed to enhance
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user
      productivity and thereby reducing total cost of
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user
      productivity by exploiting today&#39;s evolving WWW
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the follow-up to
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog
      as the next in a continuing  series of award-winning audio desktop
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      the first release of this millennium. 
      &lt;/p&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Emacspeak-13.0 &amp;#x2013;codenamed
      YellowLab&amp;#x2013; was the closing release of the
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013; began
      leveraging the evolving semantic WWW to provide task-oriented speech
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went the
      final step in making Linux a zero-cost Internet access solution for
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition of
      award-winning software releases designed to make eyes-free computing
      a
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in the areas
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org6e91043&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org6e91043&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-9&quot;&gt;
      &lt;p&gt;
      Originally based at Cornell (NY) —
      &lt;a
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on GitHub
      —&lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. 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 &lt;a
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s
      National Museum of American History.
      &lt;/p&gt;
      
      &lt;p&gt;
      The Emacspeak mailing list is archived at Vassar &amp;#x2013;the
      home of the
      Emacspeak mailing list&amp;#x2013; 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 &amp;#x2014; stay tuned;
      in the
      meantime, the list is available via
      &lt;b&gt;nntp+news.gmane.io:gmane.emacs.emacspeak.general&lt;/b&gt;
      from within Gnus.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7179250&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7179250&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-10&quot;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      *About This Release:
      &lt;/p&gt;
      &lt;hr /&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  &amp;#x2013;see
      &lt;a
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;	
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4870921173520661381'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4870921173520661381'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/11/emacspeak-530-efficientdog-unleashed.html' title='Emacspeak 53.0 EfficientDog Unleashed!'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1034175706000724531</id><published>
      2020-11-02T10:54:00.001-08:00
    </published>
    <updated>2020-11-02T10:54:26.262-08:00</updated><title type='text'>
      Web: Data Tables Can Be More Than Screen-Deep
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Web: Data Tables Can Be More Than
      Screen-Deep&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org64a9abd&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org64a9abd&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      A few years ago, layout tables made speaking Web content difficult;
      that phase has now morphed into an even more horrifying soup of
      &lt;code&gt;div&lt;/code&gt;
      and &lt;code&gt;span&lt;/code&gt; tags styled by CSS. This also
      means that now, if you
      encounter a &lt;code&gt;table&lt;/code&gt; element, it likely
      contains some useful data;
      also, deeply nested tables are beginning to feel like a thing of the
      past.
      &lt;/p&gt;
      
      &lt;p&gt;
      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 .
      &lt;/p&gt;
      
      &lt;p&gt;
      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 &lt;i&gt;data&lt;/i&gt;, rather
      than working with that
      data&#39;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 &lt;i&gt;spoken
      views&lt;/i&gt; of
      the data.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgdcbe2b4&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgdcbe2b4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Initial
      Approach That Failed&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      I first tried to see if I could make EWW annotate the rendered
      &lt;i&gt;table
      data&lt;/i&gt; with text properties &amp;#x2014; 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org5e26cc4&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org5e26cc4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Ensuring That
      EWW Rendered Tables Are More than Screen-Deep&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      I implemented the approach described below a couple of weeks ago and
      it appears to work well barring a few known limitations.
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;I  &lt;a href=&quot;#orgf4ac815&quot;&gt;advice&lt;/a&gt;
      EWW to store a pointer to the &lt;i&gt;Table DOM&lt;/i&gt; in the
      EWW buffer.&lt;/li&gt;
      &lt;li&gt;I defined a &lt;a
      href=&quot;#org5da504b&quot;&gt;function&lt;/a&gt; that converts the
      DOM nodes from the
      &lt;i&gt;table-dom&lt;/i&gt; into a two-dimensional
      vector.&lt;/li&gt;
      &lt;li&gt;I then &lt;a
      href=&quot;#org1814a73&quot;&gt;pass&lt;/a&gt; this structure to
      Emacspeak&#39;s &lt;i&gt;Table-UI&lt;/i&gt; module to
      obtain a browsable two-dimensional structure.&lt;/li&gt;
      &lt;li&gt;Module &lt;a
      href=&quot;#org67024ea&quot;&gt;emacspeak-table-ui&lt;/a&gt; enables
      the user to obtain multiple
      &lt;i&gt;spoken views&lt;/i&gt;  of the  tabular data.&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      See the following sections for details on each of thesee steps.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgfcef362&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orgfcef362&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.1&lt;/span&gt; Storing A
      Pointer To The Table-DOM &lt;a
      id=&quot;orgf4ac815&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-1&quot;&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(&lt;span
      style=&quot;color: #b6a0ff;&quot;&gt;defadvice&lt;/span&gt; &lt;span
      style=&quot;color: #feacd0;&quot;&gt;shr-tag-table-1&lt;/span&gt;
      (around emacspeak pre act comp) 
      &lt;span style=&quot;color: #c6eaff;&quot;&gt;&quot;Cache pointer to
      table dom as a text property&quot;&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;let&lt;/span&gt;
      ((table-dom (ad-get-arg 0))
      (start (point)))
      ad-do-it
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;unless&lt;/span&gt;
      (get-text-property start &#39;table-dom)
      (put-text-property start (point)
      &#39;table-dom table-dom))
      ad-return-value))
      &lt;/pre&gt;
      &lt;/div&gt;
      
      &lt;p&gt;
      This advice stores a pointer to the &lt;i&gt;DOM&lt;/i&gt; of the
      table being rendered
      over the region  containing the rendering.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgf92b80e&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orgf92b80e&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.2&lt;/span&gt; Generate A
      Tabular Structure From The Dom &lt;a
      id=&quot;org5da504b&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-2&quot;&gt;
      &lt;p&gt;
      Function &lt;code&gt;emacspeak-eww-table-table&lt;/code&gt;
      generates a two-dimensional
      vector that encapsulates the tabular data.
      &lt;/p&gt;
      
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(&lt;span
      style=&quot;color: #b6a0ff;&quot;&gt;defun&lt;/span&gt; &lt;span
      style=&quot;color:
      #feacd0;&quot;&gt;emacspeak-eww-table-table&lt;/span&gt; ()
      &lt;span style=&quot;color: #c6eaff;&quot;&gt;&quot;Return table
      cells as a table, a 2d structure.&quot;&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;let*&lt;/span&gt;
      ((data nil)
      (table (get-text-property (point) &#39;table-dom))
      (head (dom-by-tag table &#39;th)))
      (&lt;span style=&quot;color:
      #dbbe5f;&quot;&gt;cl-assert&lt;/span&gt; table t &lt;span
      style=&quot;color: #79a8ff;&quot;&gt;&quot;No table
      here.&quot;&lt;/span&gt;)
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;setq&lt;/span&gt;
      data          (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;cl-loop&lt;/span&gt;
      for r in (dom-by-tag table &#39;tr) collect
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;cl-loop&lt;/span&gt;
      for c in
      (append
      (dom-by-tag r &#39;th)
      (dom-by-tag r &#39;td))
      collect
      (string-trim (dom-node-as-text c)))))
      &lt;span style=&quot;color: #a8a8a8;&quot;&gt;;;;
      &lt;/span&gt;&lt;span style=&quot;color: #a8a8a8;&quot;&gt;handle
      head case differently:&lt;/span&gt;
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;if&lt;/span&gt; head
      (apply #&#39;vector (mapcar #&#39;vconcat  (cdr data)))
      (apply #&#39;vector (mapcar #&#39;vconcat  data)))))
      &lt;/pre&gt;
      &lt;/div&gt;
      
      
      &lt;p&gt;
      The above code handles the case where there are header (i.e.,
      &lt;span class=&quot;underline&quot;&gt;th&lt;/span&gt;)
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgc296d95&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orgc296d95&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.3&lt;/span&gt; Browsing
      Tables As Data  &lt;a
      id=&quot;org1814a73&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-3&quot;&gt;
      &lt;p&gt;
      Interactive command
      &lt;code&gt;emacspeak-eww-table-data&lt;/code&gt; (bound to &lt;span
      class=&quot;underline&quot;&gt;C-t&lt;/span&gt;) takes the
      &lt;i&gt;table&lt;/i&gt; at
      point, i.e. when point is anywhere within a table rendering, and
      creates a browsable table buffer as implemented by module 
      &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-table-ui.el#L483&quot;&gt;emacspeak-table-ui&lt;/a&gt;.
      &lt;/p&gt;
      
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(&lt;span
      style=&quot;color: #b6a0ff;&quot;&gt;defun&lt;/span&gt; &lt;span
      style=&quot;color:
      #feacd0;&quot;&gt;emacspeak-eww-table-data&lt;/span&gt; ()
      &lt;span style=&quot;color: #c6eaff;&quot;&gt;&quot;View  table at
      point as a data table using Emacspeak Table UI.&quot;&lt;/span&gt;
      (&lt;span style=&quot;color:
      #b6a0ff;&quot;&gt;interactive&lt;/span&gt;)
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;let&lt;/span&gt;
      ((data (emacspeak-eww-table-table))
      (data-table nil)
      (inhibit-read-only  t)
      (buffer
      (get-buffer-create
      (format  &lt;span style=&quot;color: #79a8ff;&quot;&gt;&quot;Table:
      %s&quot;&lt;/span&gt; (emacspeak-eww-current-title)))))
      (&lt;span style=&quot;color: #b6a0ff;&quot;&gt;setq&lt;/span&gt;
      data-table (emacspeak-table-make-table data))
      (emacspeak-table-prepare-table-buffer data-table buffer)))
      &lt;/pre&gt;
      &lt;/div&gt;
      
      &lt;p&gt;
      The two-dimensional vector described earlier is now converted to a
      tabular structure as expected  by module
      &lt;code&gt;emacspeak-table-ui&lt;/code&gt;, the
      primary difference being that this structure explicitly captures row
      and column headers.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org42c5fab&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org42c5fab&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.4&lt;/span&gt; Browsing The
      Tabular Data &lt;a
      id=&quot;org67024ea&quot;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot; id=&quot;text-3-4&quot;&gt;
      &lt;p&gt;
      Emacspeak&#39;s &lt;a
      
      href=&quot;https://tvraman.github.io/emacspeak/manual/emacspeak_002dtable.html#emacspeak_002dtable&quot;&gt;Table UI&lt;/a&gt; allows one to:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Move through table cells, either by row or
      column.&lt;/li&gt;
      &lt;li&gt;Determine what is spoken  during such
      navigation,&lt;/li&gt;
      &lt;li&gt;Spoken views can include cell value, row header and column
      header.&lt;/li&gt;
      &lt;li&gt;For more advanced use-cases, one can define a &lt;i&gt;row
      filter&lt;/i&gt; or
      &lt;i&gt;column filter&lt;/i&gt;, think of thesee as specialized
      &lt;i&gt;formatters&lt;/i&gt; that
      can format  selected cells and their headers into a
      natural-sounding sentence.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1034175706000724531'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1034175706000724531'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/11/web-data-tables-can-be-more-than-screen.html' title='Web: Data Tables Can Be More Than Screen-Deep'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
<entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2853057356022218696</id><published>
      2020-10-10T07:52:00.000-07:00
    </published>
    <updated>2020-10-10T07:52:23.442-07:00</updated><title type='text'>
      Extracted A Light-Weight Key-Reader By Progressive Simplification
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Extracting A Light-Weight
      Key-Sequence Reader By Progressive Simplification&lt;/h1&gt;
      &lt;div id=&quot;outline-container-orgac4008b&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgac4008b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Background&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      In the previous article entitled &lt;a
      
      href=&quot;https://emacspeak.blogspot.com/2020/10/on-defining-keys-in-emacs.html&quot;&gt;On Defining Keys In Emacs&lt;/a&gt; I covered
      the issue of declaring key-sequences when defining keyboard
      short-cuts.  During the last week, I took the underlying Emacs Lisp
      function &lt;code&gt;edmacro-parse-key&lt;/code&gt; and via a
      process of progressive
      simplification derived a new &lt;code&gt;new-kbd&lt;/code&gt;
      function that is much simpler
      and consequently easier to understand.  You can see the step-by-step
      simplification via the Git history for file &lt;a
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/new-kbd.el#L1&quot;&gt;new-kbd.el&lt;/a&gt; (note: used to
      be called &lt;code&gt;ems-kbd.el&lt;/code&gt;).  That file contains
      the final version of the
      simplified function, along with a test-suite that verifies that
      it&#39;s
      behavior is convenient with the solution built into Emacs. The
      updated
      function is now part of Emacspeak and is named
      &lt;code&gt;ems-kbd&lt;/code&gt; in that
      package.
      &lt;/p&gt;
      
      &lt;p&gt;
      The next section gives a high-level overview of the steps that led
      to the final version.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgc5fe474&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgc5fe474&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Steps Toward
      Simplification&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;/div&gt;
      &lt;div id=&quot;outline-container-orgaaa6d11&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orgaaa6d11&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.1&lt;/span&gt; Separate
      Tokenization From Processing&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-1&quot;&gt;
      &lt;p&gt;
      Function &lt;code&gt;edmacro-parse-keys&lt;/code&gt; 
      interweaves  the process of tokenizing its input string  and how
      various parts of that string are processed in a single
      &lt;code&gt;while&lt;/code&gt; loop.
      &lt;/p&gt;
      
      &lt;p&gt;
      The first  step in simplification was to separate thesee steps, by 
      using function &lt;code&gt;split-string&lt;/code&gt; to split the
      input string on
      &lt;span class=&quot;underline&quot;&gt;whitespace&lt;/span&gt; to
      generate a list of words.
      &lt;/p&gt;
      
      &lt;p&gt;
      A simple &lt;code&gt;cl-loop&lt;/code&gt; is then used to turn each
      &lt;code&gt;word&lt;/code&gt; into a &lt;code&gt;key&lt;/code&gt;
      that
      is accumulated into a result vector.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orge871f14&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;orge871f14&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.2&lt;/span&gt; Refactoring
      Case Analysis&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-2&quot;&gt;
      &lt;p&gt;
      Once tokenization is factored out, 
      the remainder of function
      &lt;code&gt;edmacro-parse-keys&lt;/code&gt; 
      converts each key-specification into either the corresponding string
      or vector representation.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;I eliminated code that handled invocation of
      &lt;code&gt;M-x
      execute-extended-command&lt;/code&gt; during a
      keyboard-macro.&lt;/li&gt;
      &lt;li&gt;I eliminated processing of comments within the
      keyboard-macro serialization.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org349e909&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org349e909&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.3&lt;/span&gt; Rearranging
      Conditionals&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-3&quot;&gt;
      &lt;p&gt;
      Next, I rearranged conditionals and in that process eliminated
      &lt;code&gt;cond&lt;/code&gt;
      clauses that were now effectively dead-code.
      &lt;/p&gt;
      
      &lt;p&gt;
      In the process, I also eliminated   test-predicates that had
      side-effects  to hopefully result in less fragile code.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org7af7bb1&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org7af7bb1&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.4&lt;/span&gt; Lexically
      Bind Regex Patterns&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-4&quot;&gt;
      &lt;p&gt;
      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 &lt;span
      class=&quot;underline&quot;&gt;[:space:]&lt;/span&gt;
      for white-space tests.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      
      &lt;div id=&quot;outline-container-org139056e&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org139056e&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.5&lt;/span&gt; Always Return
      A Vector&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-5&quot;&gt;
      &lt;p&gt;
      Finally, I setup the new function to always return a vector;
      function&lt;code&gt;edmacro-parse-keys&lt;/code&gt; 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.
      &lt;/p&gt;
      
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-list&quot;&gt;   (defun new-kbd
      (string )
      &quot;Simplified and hopefully more robust kbd function.
      Always returns a vector i.e. like passing need-vector to
      edmacro-parse-keys. &quot;
      (let ((res [])
      (special-char-reg
      &quot;^\\(NUL\\|RET\\|LFD\\|ESC\\|SPC\\|DEL\\)$&quot;)
      (modifier+angle-reg
      &quot;^\\(\\([ACHMsS]-\\)*\\)&amp;lt;\\(.+\\)&amp;gt;$&quot;))
      (cl-loop
      for word in (split-string string)
      do
      (let* ((key nil))
      (cond 
      ((and ;;; modifier+-&amp;lt;key&amp;gt; without DEL etc
      (not (string-match special-char-reg word))
      (string-match modifier+angle-reg word))
      (setq key
      (list
      (intern 
      (concat ;;; strip &amp;lt; and &amp;gt;
      (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 &quot;^[ACHMsS]-.&quot; word)
      (cl-incf bits
      (cdr
      (assq (aref word 0)
      &#39;((?A . ?\A-\^@)
      (?C . ?\C-\^@)
      (?H . ?\H-\^@)
      (?M . ?\M-\^@)
      (?s . ?\s-\^@)
      (?S . ?\S-\^@)))))
      (cl-incf prefix 2)
      (cl-callf substring word 2))
      (when (string-match &quot;^\\^.$&quot; word)
      (cl-incf bits ?\C-\^@)
      (cl-incf prefix)
      (cl-callf substring word 1))
      (when-let
      (found
      (assoc word
      &#39;((&quot;NUL&quot; . &quot;\0&quot;)
      (&quot;RET&quot; . &quot;\r&quot;)
      (&quot;LFD&quot; . &quot;\n&quot;)
      (&quot;TAB&quot; . &quot;\t&quot;)
      (&quot;ESC&quot; . &quot;\e&quot;)
      (&quot;SPC&quot; . &quot; &quot;)
      (&quot;DEL&quot; . &quot;\177&quot;))))
      (setq word (cdr found)))
      (cond ;;; apply modifiers 
      ((= bits 0) (setq key word))
      ((/= (length word) 1)
      (error &quot;%s: Prefix  must precede a single character, not
      %s&quot;
      string word))
      ((and
      (/= (logand bits ?\C-\^@) 0)
      (string-match &quot;[@-_a-z]&quot; 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))
      &lt;/pre&gt;
      &lt;/div&gt;
      
      
      &lt;p&gt;
      You can verify the code above by running the tests found at the end
      of
      file  &lt;code&gt;new-kbd.el&lt;/code&gt; &amp;#x2014; the tests
      were extracted from the various
      patterns described in the Elisp Reference, as well as  by reading
      thecode in &lt;code&gt;edmacro-parse-keys&lt;/code&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org0923351&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org0923351&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.6&lt;/span&gt; Closing
      Thoughts&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-6&quot;&gt;
      &lt;p&gt;
      The above simplification exercise was done by:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Starting with the original
      &lt;code&gt;edmacro-parse-keys&lt;/code&gt; copied over to a
      new file and renamed to function
      &lt;code&gt;new-kbd&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Adding a set of tests at the end of file, essentially this
      is a
      &lt;code&gt;let&lt;/code&gt; that binds a set of tests, then
      compares the result of
      calling our new function on each value with that returned by the
      original.&lt;/li&gt;
      &lt;li&gt;Modifying and simplifying our new function and running
      &lt;code&gt;eval-buffer&lt;/code&gt; after each step.&lt;/li&gt;
      &lt;li&gt;It was a fun exercise to see order emerge from chaos at
      each step!&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2853057356022218696'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2853057356022218696'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/10/extracted-light-weight-key-reader-by.html' title='Extracted A Light-Weight Key-Reader By Progressive Simplification'/>
    <author>
      <name>T. V. Raman</name><uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2451348598884750312
    </id>
    <published>
      2020-10-05T17:32:00.000-07:00
    </published>
    <updated>2020-10-05T17:32:08.430-07:00
    </updated>
    <title type='text'>On
      Defining Keys In Emacs
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;On Defining Keys In
      Emacs&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org540a36d&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org540a36d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Overview&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      Emacs is extremely flexible with respect to letting you bind keys to
      commands.
      Interestingly, and perhaps because of its history tracing back to
      &lt;i&gt;keyboard macros&lt;/i&gt;,  &lt;b&gt;naming&lt;/b&gt; the
      key you wish to bind is not so
      straight-forward as it appears on the surface. Here are things
      I&#39;ve
      used and learnt over the last 30 years of Emacs hackery:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;The most basic way of naming a key is via a string of the
      form
      &lt;i&gt;\C-a&lt;/i&gt; or &lt;i&gt;\M-\C-a&lt;/i&gt; where
      &lt;i&gt;\C&lt;/i&gt; denotes the &lt;i&gt;Control
      Modifier&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;This notation gets unwieldy fast when using multiple
      modifiers as
      in the &lt;i&gt;\M-\C-a&lt;/i&gt; example.&lt;/li&gt;
      &lt;li&gt;It gets worse, under X, you can bind &lt;i&gt;\C- / for
      /Control Space&lt;/i&gt;
      &amp;#x2014; notice that the space character here which is easy to
      miss as
      white-space is significant.&lt;/li&gt;
      &lt;li&gt;The &lt;i&gt;\&amp;lt;modifier&amp;gt;-char&lt;/i&gt;
      notation mostly appears to date back to
      the age of the terminal emulator (tty), so for example, it cannot
      denote &lt;i&gt;Control+Right&lt;/i&gt; for example.&lt;/li&gt;
      &lt;li&gt;The Emacs and Elisp info manuals recommend using function
      &lt;i&gt;kbd&lt;/i&gt;
      for this reason, this function on the surface provides a unified
      interface for naming keys.&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      If you look no further, you remain happy, but &amp;#x2026;
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org44745fc&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org44745fc&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Function
      &lt;code&gt;kbd&lt;/code&gt;&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      But if you do peel the onion, here is what you  find:
      &lt;/p&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Function &lt;code&gt;kbd&lt;/code&gt;  does nothing more
      than calling function
      &lt;code&gt;read-kbd-macro&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Function &lt;code&gt;read-kbd-macro&lt;/code&gt; documents
      itself as &lt;i&gt;reading the region&lt;/i&gt;
      as a  &lt;i&gt;keyboard macro&lt;/i&gt;.&lt;/li&gt;
      &lt;li&gt;The above overloading is  achieved  by the call to
      function &lt;code&gt;edmacro-parse-keys&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;And finally we reach the scary core of the onion that is
      sufficient to make your eyes water!&lt;/li&gt;
      &lt;li&gt;Function &lt;code&gt;edmacro-parse-keys&lt;/code&gt; is an
      inscrutable piece of code
      that  both looks extremely clever and magical and like all clever
      code, feels fragile.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div id=&quot;outline-container-org7a9ba62&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org7a9ba62&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Understanding
      And (Hopefully) Simplifying  Function
      &lt;code&gt;kbd&lt;/code&gt;&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      A simplified &lt;code&gt;ems-kbd&lt;/code&gt; 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
      &lt;code&gt;edmacro-parse-keys&lt;/code&gt; &amp;#x2014; sadly, I
      haven&#39;t yet found a specification
      for naming all available keys outside of the implementation of that
      function.
      So I started  &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/ems-kbd.el#L1&quot;&gt;ems-kbd.el&lt;/a&gt;
      along with a simple test-suite to see how far I could get toward the
      goal of creating an equivalent &lt;code&gt;kbd&lt;/code&gt;
      function.&lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org4416bb1&quot;
      class=&quot;outline-3&quot;&gt;
      &lt;h3 id=&quot;org4416bb1&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.1&lt;/span&gt; Steps So
      Far&lt;/h3&gt;
      &lt;div class=&quot;outline-text-3&quot; id=&quot;text-3-1&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Documented the implementation.&lt;/li&gt;
      &lt;li&gt;Added a simple set of tests in the file.&lt;/li&gt;
      &lt;li&gt;Changed &lt;span
      class=&quot;underline&quot;&gt;if&lt;/span&gt; to &lt;span
      class=&quot;underline&quot;&gt;cond&lt;/span&gt; or &lt;span
      class=&quot;underline&quot;&gt;when&lt;/span&gt; as
      appropriate.&lt;/li&gt;
      &lt;li&gt;Eliminated the logic  that handled  the keyboard macro
      serialization for repeated keys.&lt;/li&gt;
      &lt;li&gt;Removed the logic for handling invocations of
      &lt;code&gt;execute-extended-command&lt;/code&gt; &amp;#x2014;
      otherwise known as &lt;span
      class=&quot;underline&quot;&gt;M-x&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;A lot more remains, e.g., 
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;simplifying how modifier bits are handled,&lt;/li&gt;
      &lt;li&gt;Simplifying how special patterns like &lt;span
      class=&quot;underline&quot;&gt;SPC&lt;/span&gt; or &lt;span
      class=&quot;underline&quot;&gt;TAB&lt;/span&gt; are
      handled.&lt;/li&gt;
      &lt;li&gt;And likely a lot more.&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2451348598884750312'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2451348598884750312'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/10/on-defining-keys-in-emacs.html' title='On Defining Keys In Emacs'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8563131593972762432
    </id>
    <published>
      2020-09-08T16:26:00.000-07:00
    </published>
    <updated>2020-09-08T16:26:13.245-07:00
    </updated>
    <title type='text'>
      Searching GMail From GNUS
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Using GMail Search Operators In
      GNUS&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org551bed2&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org551bed2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      I have been using the following to search GMail from GNUS for over 8
      years now. The recent announcement of the &lt;span
      class=&quot;underline&quot;&gt;nnselect&lt;/span&gt; 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&#39;re
      familiar with from within  your Web Browser, e.g. searches of the
      form
      &lt;i&gt;from: foo&lt;/i&gt;,  &lt;i&gt;subject:bar&lt;/i&gt;,
      &lt;i&gt;after:date&lt;/i&gt; and combinations of the
      above.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org77c15d3&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org77c15d3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Background&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      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&#39;s excellent &lt;span
      class=&quot;underline&quot;&gt;auth-xoauth2&lt;/span&gt; package,
      see      file&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/gnus-gmail-prepare.el&quot;&gt;gnus-gmail-prepare.el&lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org742fc31&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org742fc31&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Leveraging GNUS
      Back-end NNIR To Search GMail&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      GMail is accessed from GNUS using the imap protocol.  The &lt;span
      class=&quot;underline&quot;&gt;imap&lt;/span&gt;
      specification defines a set of standard search operators; GMail
      itself
      defines a slightly different and arguably easier to use set of
      search      operators. Module
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/g-client/gm-nnir.el&quot;&gt;gm-nnir&lt;/a&gt;
      himplements both the standard IMap search operator as well as
      GMail&#39;s
      search operators; in practice, I have mostly only used the GMail
      Search operators in the last 8 years since implementing this module.
      &lt;/p&gt;
      
      &lt;p&gt;
      Without further ado, here is the  code to enable GMail Search:
      &lt;/p&gt;
      
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(defun
      gm-nnir-group-make-gmail-group (query)
      &quot;Use GMail search syntax.
      See https://support.google.com/mail/answer/7190?hl=en for syntax.
      &quot;
      (interactive &quot;sGMail Query: &quot;)  
      (let ((nnir-imap-default-search-key &quot;imap&quot;)
      (q (format &quot;X-GM-RAW \&quot;%s\&quot;&quot; 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 &quot;Not on a group.&quot;)))))
      &lt;/pre&gt;
      &lt;/div&gt;
      
      &lt;p&gt;
      I bind the above to &lt;span
      class=&quot;underline&quot;&gt;/&lt;/span&gt; by using
      &lt;/p&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;
      &lt;pre class=&quot;src src-emacs-lisp&quot;&gt;(define-key
      gnus-group-mode-map &quot;/&quot;
      &#39;gm-nnir-group-make-gmail-group)
      &lt;/pre&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      
      
      &lt;div id=&quot;outline-container-org3464a1f&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3464a1f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Example Of
      Use&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;p&gt;
      I am subscribed to list &lt;span
      class=&quot;underline&quot;&gt;emacs-devel@gnu.org&lt;/span&gt; and
      email
      sent to that
      list gets GMail Label &lt;code&gt;emacs-devel&lt;/code&gt;. In Gnus,
      I
      open that label as
      group &lt;code&gt;emacs-devel@gnu.org&lt;/code&gt;. Typing &lt;span
      class=&quot;underline&quot;&gt;/&lt;/span&gt; on the group line and
      entering
      &lt;/p&gt;
      &lt;pre class=&quot;example&quot;&gt;
      from:rms after:2020/09/01
      &lt;/pre&gt;
      
      &lt;p&gt;
      in the minibuffer results in the following:
      &lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      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 &quot;Changes for emacs
      28&quot;      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 &amp;lt;6.2k&amp;gt;
      6.1  Richard Stallman 07-Sep &amp;lt;6.0k&amp;gt;
      7.1  Richard Stallman 07-Sep &amp;lt;5.5k&amp;gt;
      8.1  Richard Stallman 07-Sep &amp;lt;5.7k&amp;gt;
      
      &lt;/pre&gt;
      
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;					
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8563131593972762432'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8563131593972762432'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/09/searching-gmail-from-gnus.html' title='Searching GMail From GNUS'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8905782418233033405
    </id>
    <published>
      2020-08-16T12:18:00.001-07:00
    </published>
    <updated>2020-08-16T12:18:46.360-07:00
    </updated>
    <title type='text'>Start
      Emacs In A Defun
    </title>
    <content type='html'>
      &lt;div id=&quot;content&quot;&gt;
      &lt;h1 class=&quot;title&quot;&gt;Start Emacs In A Defun&lt;/h1&gt;
      &lt;div id=&quot;outline-container-org3fba985&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org3fba985&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Summary&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-1&quot;&gt;
      &lt;p&gt;
      This is a follow-up to my earlier article titled &lt;a
      
      
      href=&quot;https://emacspeak.blogspot.com/2017/08/emacs-start-up-speeding-it-up.html&quot;&gt;Speeding Up Emacs
      Startup&lt;/a&gt; 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-orgc30cbf6&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;orgc30cbf6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Start Emacs In
      A      Defun&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
      &lt;p&gt;
      This &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#start-of-content&quot;&gt;startup file&lt;/a&gt; is set up with the following goals:
      &lt;/p&gt;
      
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;Speed up emacs startup &amp;#x2014; setting environment
      variable&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L247-L311&quot;&gt;&lt;code&gt;TVR_TIME_EMS&lt;/code&gt;&lt;/a&gt; before starting emacs produces detailed timing
      information in the &lt;b&gt;Messages&lt;/b&gt; buffer.&lt;/li&gt;
      &lt;li&gt;Customize packages via Custom  as far as
      possible.&lt;/li&gt;
      &lt;li&gt;Keep the  &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L185-L311&quot;&gt;custom settings&lt;/a&gt;  in a separate file, with a later goal of
      turning that into a  theme.&lt;/li&gt;
      &lt;li&gt;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).&lt;/li&gt;
      &lt;li&gt;Define package-specific settings not available via Custom
      in a
      package-specific &amp;lt;package&amp;gt;-prepare.el file.&lt;/li&gt;
      &lt;li&gt;Install everything from elpa/melpa as far as possible. (vm
      is
      anexception at present) &amp;#x2014; I have nearly 200 packages
      activated.&lt;/li&gt;
      &lt;li&gt;The startup file is a collection of functions with
      entry-point
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L185-L311&quot;&gt;tvr-emacs&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;The only top-level call is &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L185-L311&quot;&gt;(tvr-emacs)&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Function tvr-emacs starts up Emacspeak, and sets up two
      hooks:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;after-init-hook to do the bulk of the work.&lt;/li&gt;
      &lt;li&gt;emacs-startup-hook to set up  initial window
      configuration.&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;li&gt;Function &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L185-L311&quot;&gt;tvr-after-init-hook&lt;/a&gt; on after-init-hook does the following:
      &lt;ul class=&quot;org-ul&quot;&gt;
      &lt;li&gt;Load package-specific prepare.el files.&lt;/li&gt;
      &lt;li&gt;Load the custom settings file.&lt;/li&gt;
      &lt;li&gt;Starts up things like the emacs server.&lt;/li&gt;
      &lt;li&gt;Some of thesee tasks are done on a separate thread using
      make-thread.&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;li&gt;The work of loading files etc., is done within macro &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L185-L311&quot;&gt;tvr-fastload&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;
      which sets up an efficient environment for loading files.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org650b226&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org650b226&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt;
      Conclusion&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;
      &lt;p&gt;
      With this setup, &lt;code&gt;M-x emacs-init-time&lt;/code&gt; shows 
      init-time as
      &lt;/p&gt;
      &lt;pre class=&quot;example&quot;&gt;
      1.288381225 seconds
      &lt;/pre&gt;
      
      &lt;p&gt;
      on my laptop with an SSD.  Setting
      &lt;code&gt;package-quickstart&lt;/code&gt; to
      &lt;code&gt;T&lt;/code&gt;
      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 &amp;#x2014; AKA,
      there are
      a
      limited number of places I need to look.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&quot;outline-container-org403baf9&quot;
      class=&quot;outline-2&quot;&gt;
      &lt;h2 id=&quot;org403baf9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt;
      Wish-List&lt;/h2&gt;
      &lt;div class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Command
      &lt;code&gt;emacspeak-wizards-customize-saved&lt;/code&gt; bound to
      &lt;code&gt;C-h C-s&lt;/code&gt;
      helps some in this regard but is a stop-gap solution.&lt;/li&gt;
      &lt;li&gt;Custom themes are  not  easy to use.&lt;/li&gt;
      &lt;li&gt;I keep my &lt;code&gt;custom-file&lt;/code&gt; checked
      into a
      local Git repository and
      is the only part of my setup that I cannot publish &amp;#x2014;
      since      thatfile tends to hoover up information that you
      shouldn&#39;t publish,
      e.g., aPI keys and other private/personal bits.&lt;/li&gt;
      &lt;li&gt;Perhaps Emacs needs at least two custom-files, a public
      and a
      private custom-file.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8905782418233033405'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8905782418233033405'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/08/start-emacs-in-defun.html' title='Start Emacs In A Defun'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4916053591627777743
    </id>
    <published>
      2020-06-16T10:13:00.001-07:00
    </published>
    <updated>2020-06-16T10:13:34.161-07:00
    </updated>
    <title type='text'>Learning
      Rust: Programming The Pick-Up Sticks Game
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Learning
      Rust: The Pick-Up Sticks Game&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org0a67b1f&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org0a67b1f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Overview&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;This &lt;a
      
      
      href=&quot;https://github.com/tvraman/pick-sticks&quot;&gt;directory&lt;/a&gt; contains an implementation of the &lt;i&gt;Pick Up Sticks&lt;/i&gt; game&lt;br /&gt;
      described in my paper &lt;a
      
      
      href=&quot;http://emacspeak.sourceforge.net/raman/publications/thinking-of-math/thinking-of-math.html&quot;&gt;Thinking Of Mathematics (Section 5)&lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;It&#39;s an interesting experience writing it in Rust as I
      learn
      the&lt;br /&gt;
      language. The original implementation described in my paper
      was&lt;br      /&gt;
      written in 1987 in Fortran-77, and consisted of one single&lt;br
      /&gt;
      function. Though that style of programming would be frowned upon
      today&lt;br /&gt;
      and is clearly not advisable for programming in the large,
      it&#39;s&lt;br
      /&gt;
      interesting to observe that a more structured implementation as
      seen&lt;br /&gt;
      in this Rust implementation qrequires a lot more fore-thought
      with&lt;br
      /&gt;
      respect to code organization.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org8a0d2da&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org8a0d2da&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Programming
      Environment&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;here is a short overview of  the
      programming environment  used:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacs 28.0.50 with
      emacspeak
      52.0.&lt;/li&gt;
      &lt;li&gt;Package  &lt;code&gt;eglot&lt;/code&gt; for managing the
      project with an  LSP server.&lt;/li&gt;
      &lt;li&gt;Rust Language Server &lt;a
      
      
      href=&quot;https://github.com/rust-lang-nursery/rls&quot;&gt;(RLS)&lt;/a&gt; as the LSP server.&lt;/li&gt;
      &lt;li&gt;Package &lt;code&gt;company&lt;/code&gt; for
      completion.&lt;/li&gt;
      &lt;li&gt;Package &lt;code&gt;yasnippet&lt;/code&gt; for code
      templates.&lt;/li&gt;
      &lt;li&gt;Package &lt;code&gt;rust-mode&lt;/code&gt; for Rust
      editing      smarts.&lt;/li&gt;
      &lt;li&gt;Package &lt;code&gt;racer&lt;/code&gt; for additional
      cross-referencing and&lt;br /&gt;
      documentation support.&lt;/li&gt;
      &lt;li&gt;Package &lt;code&gt;cargo&lt;/code&gt; for cargo
      integration
      from inside Emacs.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;In the process of setting up my Rust environment, I
      also&lt;br
      /&gt;
      speech-enabled Emacs packages &lt;code&gt;rust-mode&lt;/code&gt;,
      &lt;code&gt;racer&lt;/code&gt; and &lt;code&gt;cargo&lt;/code&gt;
      for      Emacspeak.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org6572a3a&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org6572a3a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt;
      Books&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;I  downloaded  &lt;i&gt;The Rust
      Programming Language (2018)&lt;/i&gt; from Bookshare&lt;br /&gt;
      and it&#39;s what I am still using as I write this. Note that this
      book
      is&lt;br /&gt;
      also available in the Rust distribution. The version in the
      Rust&lt;br
      /&gt;
      distribution is a little less usable since it&#39;s split into
      multiple&lt;br /&gt;
      smaller HTML files with each file repeating a lot of
      navigational&lt;br
      /&gt;
      boiler-plate at the top.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2e40623&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2e40623&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Experience
      Learning
      Rust&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;I usually find that I learn a
      language
      better if I write some code as&lt;br /&gt;
      I learn the language.&lt;br /&gt;
      In this instance, I decided to program the pick-up-sticks game
      &amp;#x2014; a&lt;br /&gt;
      simple game that I programmed in 1987 for the final class project
      for&lt;br /&gt;
      CS-101 at IIT-Bombay. Here are the rules of the game:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;This is a two-player
      game 
      and the game starts with \(n\) sticks.&lt;/li&gt;
      &lt;li&gt;The first player can pick at most \(n-1\) 
      sticks.&lt;/li&gt;
      &lt;li&gt;Assume a player picks \(k\) sticks. At the  subsequent
      turn,
      opponent&lt;br /&gt;
      can pick at most  \(2 * k\) sticks.&lt;/li&gt;
      &lt;li&gt;The player who is able to &lt;i&gt;clean-up&lt;/i&gt; the
      remaining sticks while&lt;br /&gt;
      adhering to the rules is the winner.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;Read  &lt;a
      
      
      href=&quot;http://emacspeak.sourceforge.net/raman/publications/thinking-of-math/thinking-of-math.html&quot;&gt;Thinking Of Mathematics (Section 5)&lt;/a&gt; for a description of an&lt;br /&gt;
      algorithm that is guaranteed to win.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orge266a0f&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orge266a0f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; The
      Implementation&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;p&gt;Learning Rust&#39;s ownership
      rules for
      memory management, and learning to&lt;br /&gt;
      use references  the Rust way were some of the things that were
      unique&lt;br /&gt;
      to this learning experience.&lt;br /&gt;
      Rust has some unique features including declaring lifetimes that
      are&lt;br /&gt;
      typically needed in more advanced cases; however in my initial&lt;br
      /&gt;attempts, not doing things the Rust way caused compile-time
      errors&lt;br /&gt;
      that initially guided me toward using and declaring&lt;br /&gt;
      lifetimes. Eventually, all of those declarations became
      unnecessary.&lt;br /&gt;
      More generally, the Rust compiler turns out to be a very good
      Rust&lt;br
      /&gt;
      teacher.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgda356e2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgda356e2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Crux Of The
      Implementation&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;See module
      &lt;code&gt;game.rs&lt;/code&gt; for the implementation. The core of
      the&lt;br /&gt;
      implementation is still a handful of lines to implement the
      winning&lt;br
      /&gt;
      strategy of:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;If the number of sticks
      at
      the start is a Fibonacci number, ask&lt;br /&gt;
      the opponent to play first.&lt;/li&gt;
      &lt;li&gt;At each turn, force the opponent toward the closest
      Fibonacci
      number.&lt;/li&gt;
      &lt;li&gt;Do above while respecting the limit rule, i.e. if you pick
      \(k\)&lt;br /&gt;
      sticks, the opponent can pick up to \(2k\) sticks, so never pick 
      \(k\)&lt;br /&gt;
      where \(3k &gt;= n\).&lt;/li&gt;
      &lt;li&gt;The result of (3) is to subdivide the game into smaller
      games&lt;br /&gt;
      when playing with larger values of \(n\) &amp;#x2014; see the
      &lt;span
      class=&quot;underline&quot;&gt;while&lt;/span&gt; loop in&lt;br
      /&gt;      method    &lt;code&gt;my_move&lt;/code&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-org66df065&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org66df065&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt; Closing
      Thoughts&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;The
      computing environment I now have is far more sophisticated&lt;br
      /&gt;
      than what I had in 1987.&lt;/li&gt;
      &lt;li&gt;Today, I have interactive completion, source-code&lt;br
      /&gt;
      cross-references, on-the-fly access to documentation, and a
      fully&lt;br
      /&gt;
      accessible book where I can look up things whenever I
      want.&lt;/li&gt;
      &lt;li&gt;In 1987, I did most of my thinking and problem-solving in
      my&lt;br /&gt;
      dorm-room with no computer to hand. When ready with the
      solution,&lt;br
      /&gt;
      I made a few notes in Braille using a &lt;a
      
      
      href=&quot;https://www.google.com/search?num=25&amp;amp;lite=90586&amp;amp;q=braille+pocket+slate&quot;&gt;pocket-slate and stylus&lt;/a&gt;,&lt;br /&gt;
      then went to the computer room with a volunteer reader and
      typed&lt;br
      /&gt;
      up the program, with the student volunteer providing
      high-quality&lt;br
      /&gt;
      interactive spoken feedback.&lt;/li&gt;
      &lt;li&gt;Interestingly, I think it took me less time  from memory
      to&lt;br /&gt;
      implement the solution in 1987 &amp;#x2014; perhaps this is time
      shrinking&lt;br /&gt;
      with number of years passed.&lt;/li&gt;
      &lt;li&gt;Either way, the primary take-away is that it pays to
      analyse
      a&lt;br /&gt;
      problem before one actually starts writing code. Writing code
      is&lt;br
      /&gt;
      always fun, and today, even more so given the excellent array
      of&lt;br
      /&gt;
      tools &amp;#x2014; but unless one focuses on the problem at hand,
      one      can&lt;br /&gt;
      spend a lot of time &lt;i&gt;sharpening one&#39;s pencils&lt;/i&gt;
      as
      opposed to&lt;br /&gt;
      writing something useful.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4916053591627777743'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4916053591627777743'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/06/learning-rust-programming-pick-up.html' title='Learning Rust: Programming The Pick-Up Sticks Game'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1627256763947489320
    </id>
    <published>
      2020-06-03T08:28:00.004-07:00
    </published>
    <updated>2020-06-03T08:28:49.908-07:00
    </updated>
    <title type='text'>Viewing
      Data Records As Forms --- Old Is Gold
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Viewing
      Data
      Records As Forms: Old Is Gold!&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgf03381d&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgf03381d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Given a file containing data
      records
      made up of multiple fields, you&lt;br /&gt;
      can easily view them using Emacs&#39; &lt;code&gt;forms&lt;/code&gt;
      library.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org25f0d41&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org25f0d41&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Background: BBC
      Program Listings&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;I use Perl utility
      &lt;code&gt;get_player&lt;/code&gt; to fetch details of BBC
      Radio&lt;br
      /&gt;
      programs. When I was using this frequently, I had installed
      package&lt;br
      /&gt;
      &lt;code&gt;iplayer.el&lt;/code&gt; from Melpa &amp;#x2014; that
      package
      presented the data as   a &lt;br /&gt;
      nicely organized  Org document. Time passed,  and I somehow
      stopped&lt;br
      /&gt;
      using it, until &amp;#x2026; last week. Then I discovered that
      package&lt;br /&gt;
      &lt;code&gt;iplayer&lt;/code&gt; on Melpa hadn&#39;t been updated in
      a
      few years, and worse had&lt;br /&gt;
      broken because package &lt;code&gt;org&lt;/code&gt; no longer
      includes
      now obsoleted&lt;br /&gt;
      sub-module &lt;code&gt;orgstruct&lt;/code&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org04dd571&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org04dd571&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Task: Viewing
      BBC
      Program Listings&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;When I realized package
      &lt;code&gt;iplayer&lt;/code&gt; was broken, I tried to make up
      for&lt;br
      /&gt;
      its loss for a few days by using shell-level utilities like
      &lt;code&gt;cut&lt;/code&gt;. But&lt;br /&gt;
      then I missed the convenience of being able to work with the data
      with&lt;br /&gt;
      all of Emacs&#39; power and was initially tempted to write a new
      package&lt;br /&gt;
      &amp;#x2014; after all, how hard is it to take a record, split it
      into
      fields&lt;br /&gt;
      and display it in a desired form? Fortunately, I remembered another
      of&lt;br /&gt;
      my favorite edicts from the creator of Perl (Larry Wall) &lt;br
      /&gt;      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;Lazy
      Programmer Is A Good
      Programmer
      &lt;/pre&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;At the same time I had a strong sense of dejavu
      &amp;#x2014; in
      the early daysa&lt;br /&gt;
      of Emacspeak (approx 1995), I remembered demonstrating the power
      of&lt;br
      /&gt;
      Emacs to manipulate and display data records by using  file&lt;br
      /&gt;
      &lt;span class=&quot;underline&quot;&gt;/etc/passwd&lt;/span&gt; as
      an
      example.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org5413461&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5413461&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; The Free
      Solution&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;So the completely free (AKA
      zero-work)
      solution I used was to leverage&lt;br /&gt;
      Emacs&#39; built-in &lt;code&gt;forms&lt;/code&gt; library
      &amp;#x2014;
      the solution&lt;br /&gt;
      as created  &lt;br /&gt;
      in&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/etc/forms/get-iplayer.el#L3&quot;&gt;get-iplayer.el&lt;/a&gt; is below:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;&lt;pre
      class=&quot;src
      src-emacs-lisp&quot;&gt;(&lt;span style=&quot;color:
      #a020f0;&quot;&gt;setq&lt;/span&gt; forms-read-only t)
      (&lt;span style=&quot;color: #a020f0;&quot;&gt;setq&lt;/span&gt;
      forms-file (expand-file-name &lt;span style=&quot;color:
      
      #8b2252;&quot;&gt;&quot;~/.get_iplayer/radio.cache&quot;&lt;/span&gt;))
      (&lt;span style=&quot;color: #a020f0;&quot;&gt;setq&lt;/span&gt;
      forms-number-of-fields 16)
      (&lt;span style=&quot;color: #a020f0;&quot;&gt;setq&lt;/span&gt;
      forms-field-sep &lt;span style=&quot;color:
      #8b2252;&quot;&gt;&quot;|&quot;&lt;/span&gt;)
      (&lt;span style=&quot;color: #a020f0;&quot;&gt;setq&lt;/span&gt;
      forms-format-list
      (list
      &lt;span style=&quot;color: #8b2252;&quot;&gt;&quot;Id:
      &quot;&lt;/span&gt;  1 &lt;span style=&quot;color:
      #8b2252;&quot;&gt;&quot;\t&quot;&lt;/span&gt; &lt;span
      style=&quot;color:
      #8b2252;&quot;&gt;&quot;Name: &quot;&lt;/span&gt; 3 &lt;span
      style=&quot;color: #8b2252;&quot;&gt;&quot;\n&quot;&lt;/span&gt;
      &lt;span style=&quot;color: #8b2252;&quot;&gt;&quot;Episode:
      &quot;&lt;/span&gt; 4 &lt;span style=&quot;color:
      #8b2252;&quot;&gt;&quot;\t&quot;&lt;/span&gt; &lt;span
      style=&quot;color:
      #8b2252;&quot;&gt;&quot;Description: &quot;&lt;/span&gt;  12
      &lt;span      style=&quot;color:
      #8b2252;&quot;&gt;&quot;\n&quot;&lt;/span&gt;))
      &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;With the above in place, you can:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;M-x forms-find-file RET
      get-iplayer.el&lt;/li&gt;
      &lt;li&gt;This  displays one record at  a time as specified by
      &lt;code&gt;forms-format-list&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;You can  search through records etc.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1627256763947489320'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1627256763947489320'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/06/viewing-data-records-as-forms-old-is.html' title='Viewing Data Records As Forms --- Old Is Gold'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6302020997836944453
    </id>
    <published>
      2020-05-30T09:27:00.001-07:00
    </published>
    <updated>2020-05-30T09:30:25.744-07:00
    </updated>
    <title type='text'>
      Magit/Forge Cheatsheet For GitHub Workflow
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Magit/Forge
      Fork And Create Pull-Request Cheat-Sheet For
      GitHub&lt;/h1&gt;&lt;p&gt;The &lt;a
      
      
      href=&quot;https://emacspeak.blogspot.com/2020/05/github-standard-fork-and-pull-request.html&quot;&gt;previous article&lt;/a&gt; covered   the fork/create-pullreq workflow for&lt;br /&gt;
      GitHub without using a browser.&lt;br /&gt;
      It turns out that in learning by doing, I had made a few
      mis-steps&lt;br
      /&gt;
      that made things a lot more convoluted. Here is a quick cheat-sheet
      on&lt;br /&gt;
      how to do this exclusively   with Magit/Forge.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Run &lt;span
      class=&quot;underline&quot;&gt;M-x magit-status&lt;/span&gt;  on
      your Git
      clone of the project   to&lt;br /&gt;
      which you wish to contribute.&lt;/li&gt;
      &lt;li&gt;Add your GitHub user-id &lt;span
      class=&quot;underline&quot;&gt;&quot;tvraman&quot;&lt;/span&gt; in
      my      case to forge custom&lt;br /&gt;
      option  &lt;span
      
      
      class=&quot;underline&quot;&gt;forge-owned-accounts&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;In the &lt;span
      class=&quot;underline&quot;&gt;magit-status&lt;/span&gt; buffer
      above,
      type &lt;span class=&quot;underline&quot;&gt;&#39;cf&lt;/span&gt; to
      create the fork&lt;br /&gt;
      and answer the prompts with the defaults as they appear in the
      minibuffer.&lt;/li&gt;
      &lt;li&gt;Create your feature branch, add your contribution and
      check-in.&lt;/li&gt;
      &lt;li&gt;In the &lt;span
      class=&quot;underline&quot;&gt;magit-status&lt;/span&gt; buffer,
      type      &lt;span
      class=&quot;underline&quot;&gt;&#39;cp&lt;/span&gt; to create
      the&lt;br /&gt;
      pull-request.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;Share And Enjoy!&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6302020997836944453'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6302020997836944453'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/05/magitforge-cheatsheet-for-github.html' title='Magit/Forge Cheatsheet For GitHub Workflow'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8930221260080669957
    </id>
    <published>
      2020-05-28T10:05:00.000-07:00
    </published>
    <updated>2020-05-28T10:05:03.674-07:00
    </updated>
    <title type='text'>GitHub
      Standard Fork And Pull-Request Workflow From Emacs
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;GitHub Standard Fork And Pull Request
      From      Inside Emacs&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org21d06c9&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org21d06c9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Collaborating via GitHub (and
      similar
      platforms) requires&lt;br /&gt;
      understanding and following a somewhat standardized fork, create,
      push&lt;br /&gt;
      workflow. Most of the gory details of this workflow typically
      get&lt;br
      /&gt;
      hidden by instructions of the form &lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;Sign in to GitHub in
      your
      browser and /push/ the button on the  top-left
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;or something similar.&lt;br /&gt;
      I live exclusively in Emacs and use  Chrome as the weapon of&lt;br
      /&gt;
      last-resort, this article details  how to perform the
      afore-mentioned&lt;br /&gt;
      GitHub collaboration workflow  from within Emacs. Caveat
      &amp;#x2014; you
      may&lt;br /&gt;
      still need to resort to Chrome or Firefox to set up GitHub tokens
      etc.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org0040dfb&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org0040dfb&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; The
      &lt;i&gt;Standard&lt;/i&gt; GitHub Workflow&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;The
      GitHub collaboration workflow is documented (if somewhat
      sparsely)&lt;br
      /&gt;
      on GitHub, and it&#39;s augmented by many excellent tutorials on
      the&lt;br /&gt;
      Web. I will avoid repeating that information, other than to link
      to&lt;br
      /&gt;
      them below and point out that reading those is essential to build
      a&lt;br
      /&gt;
      clear mental picture of how things work. The remainder of this
      article&lt;br /&gt;
      will focus on how to achieve the equivalent without having to
      &lt;i&gt;push&lt;/i&gt;&lt;br /&gt;
      buttons on the GitHub web site.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;&lt;a
      
      
      href=&quot;https://gist.github.com/Chaser324/ce0505fbed06b947d962&quot;&gt;Tutorial: GitHub Standard Fork &amp;amp; Pull Request Workflow · GitHub&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork&quot;&gt;GitHub Help Pages&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgbf0cee8&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgbf0cee8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Collecting The
      Needed Tools&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Here are the tools I needed to
      achieve
      the goal of achieving the above&lt;br /&gt;
      workflow from within Emacs and without resorting to a Web
      browser.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Package &lt;a
      href=&quot;https://github.com/magit/magit&quot;&gt;Magit&lt;/a&gt;
      from
      Melpa.&lt;/li&gt;
      &lt;li&gt;Package &lt;a
      
      href=&quot;https://github.com/magit/forge&quot;&gt;Magit/Forge&lt;/a&gt;
      from Melpa.&lt;/li&gt;
      &lt;li&gt;&lt;a
      href=&quot;https://github.com/hub&quot;&gt;Command-Line
      tool hub from GitHub&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/cli&quot;&gt;Newer
      Command-Line tool gh from GitHub&lt;/a&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;Command-line tools &lt;i&gt;gh&lt;/i&gt; and
      &lt;i&gt;hub&lt;/i&gt; are written in &lt;i&gt;go&lt;/i&gt; and
      implement&lt;br /&gt;
      the GitHub API.&lt;br /&gt;
      At the time of writing, &lt;i&gt;hub&lt;/i&gt; appears more
      complete, but
      &lt;i&gt;gh&lt;/i&gt; is&lt;br /&gt;
      catching up  fast.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga8acdcc&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga8acdcc&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Implementing
      The      GitHub Workflow&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;I&#39;ll use a concrete example to
      avoid introducing additional confusing&lt;br /&gt;
      terminology.  In my own learning journey, I often got confused
      by&lt;br
      /&gt;
      terminology such as &lt;i&gt;name&lt;/i&gt;,
      &lt;i&gt;remote&lt;/i&gt;,
      etc. each of which were being&lt;br /&gt;
      used in a specialized sense.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc182550&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgc182550&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;4.1&lt;/span&gt;
      Task:&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-4-1&quot;&gt;&lt;p&gt;Create a Pull-Request to project
      &lt;i&gt;speech-rule-engine&lt;/i&gt; from  user&lt;br /&gt;
      zorkow/ &amp;#x2014; the project repository is &lt;br /&gt;
      &lt;a
      
      href=&quot;https://github.com/zorkow/speech-rule-engine&quot;&gt;Speech
      Rule Engine from user zorkow&lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;dl
      class=&quot;org-dl&quot;&gt;&lt;dt&gt;Fork&lt;/dt&gt;&lt;dd&gt;Fork
      the
      project you wish to contribute to. I found
      multiple ways of doing this (eventually).
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;magit/forge inside
      emacs:&lt;/li&gt;
      &lt;/ol&gt;&lt;/dd&gt;
      &lt;/dl&gt;&lt;pre class=&quot;example&quot;&gt;&#39;cf RET RET
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;This invokes command M-x forge-fork which prompts for two
      &lt;i&gt;name&lt;/i&gt;&lt;br /&gt;
      arguments. The meaning of those arguments are somewhat&lt;br /&gt;
      non-obvious which is why I failed initially. To use it&lt;br /&gt;
      successfully, set Forge Custom option 
      &lt;i&gt;forge-owned-accounts&lt;/i&gt; to&lt;br /&gt;
      your GitHub user-id &amp;#x2014; in my case
      &lt;i&gt;tvraman&lt;/i&gt;.
      Note that this&lt;br /&gt;
      variable can hold a list of GitHub user-ids that you use.&lt;br
      /&gt;      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;(setq
      forge-owned-accounts
      &#39;((&quot;tvraman&quot;)))
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;With the above in place, go to where you have the
      source&lt;br
      /&gt;
      repository checked out, in my case:&lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;cd
      ~/sources/zorkow/speech-rule-engine
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;and open the &lt;i&gt;magit status&lt;/i&gt; buffer by
      executing&lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;M-x magit-status
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;and execute Emacs command &lt;i&gt;forge-fork&lt;/i&gt;
      &amp;#x2014; by default&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;magit/forge&lt;/span&gt;
      binds
      this to &lt;i&gt;&#39;cf&lt;/i&gt;. The minibuffer shows the&lt;br
      /&gt;
      user-id you set up in forge-owned-accounts/ earlier as the&lt;br
      /&gt;
      default, press &lt;i&gt;RET&lt;/i&gt; to accept the user-id value 
      for
      both the&lt;br /&gt;
      &lt;i&gt;fork&lt;/i&gt; and &lt;i&gt;remote&lt;/i&gt;
      arguments.&lt;br
      /&gt;
      &lt;/p&gt;&lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;The above
      flow      works once it&#39;s all set-up &amp;#x2014; note however
      that&lt;br /&gt;
      if you are happier to just do this at the shell, you can use&lt;br
      /&gt;
      either &lt;i&gt;hub&lt;/i&gt; or &lt;i&gt;gh&lt;/i&gt; &amp;#x2014;
      read
      the documentation for those&lt;br /&gt;
      commands. Either way, you now have a copy of the&lt;br /&gt;
      &lt;i&gt;speech-rule-engine&lt;/i&gt; project under your list of
      GitHub&lt;br /&gt;
      repositories  &amp;#x2014; in my case at &lt;i&gt;&lt;a
      
      
      href=&quot;https://github.com/tvraman/speech-rule-engine&quot;&gt;https://github.com/tvraman/speech-rule-engine&lt;/a&gt;&lt;/i&gt;.&lt;/li&gt;
      &lt;/ul&gt;&lt;dl
      
      class=&quot;org-dl&quot;&gt;&lt;dt&gt;Clone&lt;/dt&gt;&lt;dd&gt;Next,      &lt;i&gt;git clone&lt;/i&gt;  the fork you just created. This is just a 
      regular clone operation, in my case I did:&lt;/dd&gt;
      &lt;/dl&gt;&lt;pre class=&quot;example&quot;&gt;mkdir -p
      ~/sources/tvraman; cd ~/sources/tvraman; git clone
      https://github.com/tvraman/speech-rule-engine
      &lt;/pre&gt;&lt;br /&gt;
      &lt;dl class=&quot;org-dl&quot;&gt;&lt;dt&gt;Create Your
      Changes&lt;/dt&gt;&lt;dd&gt;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 &lt;span
      
      
      class=&quot;underline&quot;&gt;~/sources/tvraman/speech-rule-engine&lt;/span&gt;.&lt;/dd&gt;
      &lt;dt&gt;Create Pull Request&lt;/dt&gt;&lt;dd&gt;When  ready, open
      the
      &lt;i&gt;magit-status&lt;/i&gt; buffer
      for your fork, and create the pull-request using magit/forge
      &amp;#x2014;
      in the  magit status buffer, type
      &lt;i&gt;&#39;cp&lt;/i&gt;.&lt;/dd&gt;
      &lt;dt&gt;Uploading The Pull Request&lt;/dt&gt;&lt;dd&gt;Now, you
      need to
      send the
      pull-request to the author of the project you are contributing to
      &amp;#x2014; 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 &lt;span
      class=&quot;underline&quot;&gt;hub&lt;/span&gt;:&lt;/dd&gt;
      &lt;/dl&gt;&lt;pre class=&quot;example&quot;&gt;cd
      ~/sources/tvraman/speech-rule-engine; hub pull-request 
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;Assuming you have emacsclient configured as your EDITOR,
      this
      opens&lt;br /&gt;
      a standard  commit-like message buffer that lets you complete
      the&lt;br
      /&gt;
      action. Result: a new, shiny pull-request shows up in the
      target&lt;br
      /&gt;
      project &amp;#x2014; in this case in &lt;span
      
      
      class=&quot;underline&quot;&gt;zorkow/speech-rule-engine&lt;/span&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br
      /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8930221260080669957'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8930221260080669957'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/05/github-standard-fork-and-pull-request.html' title='GitHub Standard Fork And Pull-Request Workflow From Emacs'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4327384258068744832
    </id>
    <published>
      2020-05-03T10:56:00.000-07:00
    </published>
    <updated>2020-05-03T10:56:00.189-07:00
    </updated>
    <title type='text'>
      Emacspeak 52.0 (WorkAtHomeDog) Unleashed!
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Announcing
      Emacspeak 52.0—WorkAtHomeDog!&lt;/h1&gt;&lt;p&gt;The enjoyment of
      one&#39;s tools is an essential ingredient of successful work.
      &amp;#x2013; Donald E. Knuth&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org67bf370&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org67bf370&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;San Jose, CA, (May 4, 2020)&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org72f3e68&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org72f3e68&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; Emacspeak
      52.0      (WorkAtHomeDog) 🦮 Unleashed!&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-1-1&quot;&gt;&lt;p&gt;&amp;#x2014; Making
      Telecommuting      Great Again!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Advancing Accessibility In The Age Of User-Aware Interfaces
      &amp;#x2014; Zero&lt;br /&gt;
      cost of Ownership makes priceless software Universally
      affordable!&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;&lt;br /&gt;
      &amp;#x2014; announces the immediate world-wide availability of
      &lt;a      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/52.0/emacspeak-52.0.tar.bz2&quot;&gt;Emacspeak 52.0&lt;/a&gt;&lt;br /&gt;
      (WorkAtHomeDog) 🦮  &amp;#x2014; a powerful audio desktop that
      leverages today&#39;s evolving&lt;br /&gt;
      Data, Social and Assistant-Oriented Internet cloud   to enable
      working&lt;br /&gt;
      effectively from anywhere!&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org0fafa87&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org0fafa87&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,&lt;br /&gt;
      NASDOG: ESPK has now been consistently trading over the social net
      at&lt;br /&gt;
      levels close to that once attained by DogCom high-fliers—and as
      of&lt;br /&gt;
      May  2020 is trading at levels close to that achieved by once&lt;br
      /&gt;
      better known stocks in the tech sector.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgecb134e&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgecb134e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      ubiquitous assistance, Web-surfing, blogging, social computing
      and&lt;br
      /&gt;
      electronic messaging into the audio desktop, Emacspeak enables
      speech&lt;br /&gt;
      access to local and remote information with a consistent and&lt;br
      /&gt;
      well-integrated user interface. A rich suite of task-oriented
      tools&lt;br
      /&gt;
      provides efficient speech-enabled access to the evolving&lt;br /&gt;
      assistant-oriented social Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org753015b&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org753015b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;This version
      &lt;b&gt;requires&lt;/b&gt; emacs-26.1 or later. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacs 27 Support 
      🤻&lt;/li&gt;
      &lt;li&gt;Updated URL templates 🕷&lt;/li&gt;
      &lt;li&gt;Updated websearch wizards  🧙&lt;/li&gt;
      &lt;li&gt;Updated EWW support  🕸&lt;/li&gt;
      &lt;li&gt;Speech-enables Emacs Chess  ♕ ♔&lt;/li&gt;
      &lt;li&gt;Speech-enables package &lt;code&gt;Vuiet&lt;/code&gt; for
      music
      discovery and playback&lt;br /&gt;
      using LastFM   🎼&lt;/li&gt;
      &lt;li&gt;Smart templates for accessing Hacker News  ⎔&lt;/li&gt;
      &lt;li&gt;Updated support for Emacs Ipython Notebooks 
      📓&lt;/li&gt;
      &lt;li&gt;Works fluently with Sage Notebooks   &lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;— And a lot more than will fit this margin. …
      🗞&lt;br      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgfb3833c&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgfb3833c&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;&lt;p&gt; 
      Never a toy system, Emacspeak is voluntarily bundled with all&lt;br
      /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free Assistance and social interaction and carries forward
      the&lt;br
      /&gt;
      well-established Open Source tradition of introducing user
      interface&lt;br /&gt;
      features that eventually show up in luser environments.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orge10fe1a&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orge10fe1a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-6&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; “It is the user
      &amp;#x2014; and
      not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc6965ce&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgc6965ce&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-6-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2db8e60&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2db8e60&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2014; see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      at&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgd9ad875&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgd9ad875&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 52.0 (WorkAtHomeDog)
      makes working remotely a pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Gigger and more powerful than any smart assistAnt,
      AssistDog
      provides&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;instant access to the most relevant information
      at
      all times.&lt;br /&gt;
      &lt;/p&gt;&lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak
      50.0      (SageDog) embraces the wisdom of stability as&lt;br /&gt;
      opposed to rapid change and the concomitant  creation of bugs.🚭: 
      Naturally Intelligent (NI)™ at how information is spoken,
      Emacspeak&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;is entirely free of Artificial Ingredients
      (AI)™.&lt;br /&gt;
      &lt;/p&gt;&lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak
      49.0      (WiseDog) leverages the wisdom gleaned from&lt;br /&gt;
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide&lt;br /&gt;
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful&lt;br /&gt;
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgddb0cc2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgddb0cc2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org5b7ecc4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5b7ecc4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-10&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop (🦮)
      and&lt;br      /&gt;
      promises to exercise this freedom to innovate and her
      resulting&lt;br      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2020-04-27 Mon
      08:27&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4327384258068744832'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4327384258068744832'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2020/05/emacspeak-520-workathomedog-unleashed.html' title='Emacspeak 52.0 (WorkAtHomeDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3109879842057642962
    </id>
    <published>
      2019-12-18T09:24:00.001-08:00
    </published>
    <updated>2019-12-18T09:30:29.892-08:00
    </updated>
    <title type='text'>Speaking
      Of Chess: Speech-Enabling Emacs Chess In Emacspeak
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Speaking
      Of
      Chess: Speech-Enabling Emacs Chess In Emacspeak&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgc765764&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgc765764&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Overview&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-orgde6f45e&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgde6f45e&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; Research
      question:&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-1-1&quot;&gt;&lt;p&gt;What type of spoken feedback
      does one
      need to:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Learn Chess.&lt;/li&gt;
      &lt;li&gt;Examine and learn from games.&lt;/li&gt;
      &lt;li&gt;Play effectively.&lt;/li&gt;
      &lt;li&gt;View the state of the game from different perspectives
      during a
      game.&lt;/li&gt;
      &lt;li&gt;Provide auditory feedback that is both succinct and
      maximally
      informative.&lt;/li&gt;
      &lt;li&gt;Arrive at  a spoken notation for speaking various game
      states&lt;br /&gt;
      that is both expressive and time-efficient.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org0baa7ae&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org0baa7ae&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.2&lt;/span&gt;
      Speech-Enabling
      Chess In Emacspeak&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;     
      id=&quot;text-1-2&quot;&gt;&lt;p&gt;To answer some or all of the
      above
      questions, I speech-enabled Emacs&lt;br /&gt;
      Chess last weekend via module &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-chess.el#L41&quot;&gt;emacspeak-chess.el&lt;/a&gt;  — see &lt;a href=&quot;http://tvraman.github.io/emacspeak/manual/emacspeak_002dchess.html#emacspeak_002dchess&quot;&gt;User Manual&lt;/a&gt;&lt;br /&gt;
      for complete end-user documentation.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Module &lt;code&gt;emacspeak-chess&lt;/code&gt;
      speech-enables
      Emacs Chess by:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Providing interactive
      commands that let the user navigate and browse the&lt;br /&gt;
      chessboard along the eight compass directions from the current
      square.&lt;/li&gt;
      &lt;li&gt;Spoken output uses audio-formatting  — subtle changes in
      voice&lt;br /&gt;
      characteristics backed up by auditory icons  — to indicate
      the&lt;br
      /&gt;
      color of squares and pieces.&lt;/li&gt;
      &lt;li&gt;Speaking each  current  move as it happens.&lt;/li&gt;
      &lt;li&gt;Adding the same spoken output to &lt;code&gt;emacs
      chess&lt;/code&gt; commands for&lt;br /&gt;
      moving back and forth through a game.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;In the above, all of the heavy lifting is done by three 
      functions:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-chess.el#L146-L178&quot;&gt;emacspeak-chess-describe-square&lt;/a&gt;: Speak state of current square.&lt;/li&gt;
      &lt;/ul&gt;&lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-chess.el#L1-L269&quot;&gt;emacspeak-chess-collect-squares&lt;/a&gt;: Collect squares along a given rank,&lt;br /&gt;
      file, or diagonal, starting at and including the current
      square.&lt;br
      /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-chess.el#L146-L383&quot;&gt;emacspeak-chess-describe-move&lt;/a&gt;: Describe current move.&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;/ul&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;Share And Enjoy!&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br
      /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3109879842057642962'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3109879842057642962'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2019/12/speaking-of-chess-speech-enabling-emacs.html' title='Speaking Of Chess: Speech-Enabling Emacs Chess In Emacspeak'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3014288973531298515
    </id>
    <published>
      2019-11-26T10:11:00.001-08:00
    </published>
    <updated>2019-11-26T10:32:27.819-08:00
    </updated>
    <title type='text'>
      Emacspeak 51.0 (AsssistDog) Unleashed!
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Announcing
      Emacspeak 51.0—AssistDog!&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org1b796dd&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org1b796dd&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;San Jose, CA, (Nov 27, 2019)&lt;br
      /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org8b40e99&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org8b40e99&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; Emacspeak
      51.0      (AssistDog) Unleashed!&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-1-1&quot;&gt;&lt;p&gt;Advancing Accessibility In The
      Age Of
      User-Aware Interfaces &amp;#x2014; Zero&lt;br /&gt;
      cost of Ownership makes priceless software Universally
      affordable!&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;&lt;br /&gt;
      &amp;#x2014; announces the immediate world-wide availability of
      &lt;a      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/50.0/emacspeak-50.0.tar.bz2&quot;&gt;Emacspeak 51.0&lt;/a&gt;&lt;br /&gt;
      (AssistDog) &amp;#x2014; a powerful audio desktop for leveraging
      today&#39;s evolving&lt;br /&gt;
      Data, Social and Assistant-Oriented Internet cloud.  &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Bigger and more powerful than any smart assistAnt,
      AssistDog      provides&lt;br /&gt;
      instant access to the most relevant information at all times.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgcfb417f&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgcfb417f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,&lt;br /&gt;
      NASDOG: ESPK has now been consistently trading over the social net
      at&lt;br /&gt;
      levels close to that once attained by DogCom high-fliers—and as
      of&lt;br /&gt;
      November  2019 is trading at levels close to that achieved by
      once&lt;br
      /&gt;
      better known stocks in the tech sector.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org417a277&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org417a277&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      ubiquitous assistance, Web-surfing, blogging, social computing
      and&lt;br
      /&gt;
      electronic messaging into the audio desktop, Emacspeak enables
      speech&lt;br /&gt;
      access to local and remote information with a consistent and&lt;br
      /&gt;
      well-integrated user interface. A rich suite of task-oriented
      tools&lt;br
      /&gt;
      provides efficient speech-enabled access to the evolving&lt;br /&gt;
      assistant-oriented social Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga4310cd&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga4310cd&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;This version
      &lt;b&gt;requires&lt;/b&gt; emacs-26.1 or later. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacs 26 Support 
      🤻&lt;/li&gt;
      &lt;li&gt;Updated URL templates 🕷&lt;/li&gt;
      &lt;li&gt;Updated websearch wizards  🧙&lt;/li&gt;
      &lt;li&gt;Updated EWW support  🕸&lt;/li&gt;
      &lt;li&gt;Speech-enables nov.el for a second means of reading EPubs
      🕮&lt;/li&gt;
      &lt;li&gt;Speech-enables module &lt;code&gt;deadgrep&lt;/code&gt;
      ♠&lt;/li&gt;
      &lt;li&gt;Speech-Enables &lt;b&gt;Emacs Tabs&lt;/b&gt; found in
      emacs 27
      &lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;— And a lot more than will fit this margin. …
      🗞&lt;br      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc34b5f5&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgc34b5f5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;p&gt;Never
      a toy system, Emacspeak is voluntarily bundled with all&lt;br /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free Assistance and social interaction and carries forward
      the&lt;br
      /&gt;
      well-established Open Source tradition of introducing user
      interface&lt;br /&gt;
      features that eventually show up in luser environments.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org459075d&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org459075d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-6&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; “It is the user
      &amp;#x2014; and
      not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org818cfdf&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org818cfdf&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-6-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org7eb909f&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org7eb909f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2014; see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      at&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org8c9fb12&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org8c9fb12&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Gigger and more powerful than
      any
      smart assistAnt, AssistDog provides&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;instant access to the most relevant information
      at
      all times.&lt;br /&gt;
      &lt;/p&gt;&lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak
      50.0      (SageDog) embraces the wisdom of stability as&lt;br /&gt;
      opposed to rapid change and the concomitant  creation of bugs.🚭: 
      Naturally Intelligent (NI)™ at how information is spoken,
      Emacspeak&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;is entirely free of Artificial Ingredients
      (AI)™.&lt;br /&gt;
      &lt;/p&gt;&lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak
      49.0      (WiseDog) leverages the wisdom gleaned from&lt;br /&gt;
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide&lt;br /&gt;
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful&lt;br /&gt;
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc04f014&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgc04f014&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org4e70aa9&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org4e70aa9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-10&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop (🦮)
      and&lt;br      /&gt;
      promises to exercise this freedom to innovate and her
      resulting&lt;br      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3014288973531298515'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3014288973531298515'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2019/11/emacspeak-510-asssistdog-unleashed.html' title='Emacspeak 51.0 (AsssistDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4544335809639638846
    </id>
    <published>
      2019-10-16T14:33:00.002-07:00
    </published>
    <updated>2019-10-16T14:33:29.338-07:00
    </updated>
    <title type='text'>
      Meta-Programming In Emacs Using Defadvice
    </title>
    <content type='html'>&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Meta-Programming In Emacs Using
      &lt;b&gt;defadvice&lt;/b&gt;&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgea1d19b&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgea1d19b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Introduction&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;This blog article &lt;a
      
      
      href=&quot;https://saurabhkukade.github.io/Meta-programming-In-Python/&quot;&gt;Meta Programming In Python&lt;/a&gt; reminded me to write up&lt;br /&gt;
      the equivalent for Emacs Lisp.&lt;br /&gt;
      Decorators in Python enable you to modify the vehavior of
      existing&lt;br
      /&gt;
      functions without changing the original function;
      &lt;i&gt;Advice&lt;/i&gt; in Lisp&lt;br /&gt;
      which traces back to the 80&#39;s enables similar functionality
      &amp;#x2014;&lt;br /&gt;
      incidentally, Advice was the inspiration behind Aspect
      Oriented&lt;br      /&gt;
      Programming in Java.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgd7109ad&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgd7109ad&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Advice And
      Emacs      Lisp&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Advice came to Emacs lisp in the
      summer
      of 1994, when module&lt;br /&gt;
      &lt;code&gt;advice.el&lt;/code&gt; shipped as part of Emacs 19.23. A
      few
      weeks later, a&lt;br /&gt;
      colleague at work (Win Treese) wrote up a simple example that 
      added&lt;br /&gt;
      a &lt;span class=&quot;underline&quot;&gt;before&lt;/span&gt; 
      advice to
      the &lt;span class=&quot;underline&quot;&gt;vc-checkin&lt;/span&gt;
      functions of the time to create &lt;br /&gt;
      an &lt;code&gt;RCS&lt;/code&gt; subdirectory if one did not exist. 
      This
      was such a neat&lt;br /&gt;
      trick that all of us in our Lab adopted it &amp;#x2014; and having
      random&lt;br /&gt;
      RCS&lt;sub&gt;*&lt;/sub&gt;,v* files lying around in the working
      directory became history.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org1a103d6&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org1a103d6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Emacspeak And
      Advice
      &amp;#x2014; Fall 1994&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;And then I decided to make Emacs 
      speak
      to me.&lt;br /&gt;
      Module &lt;code&gt;advice.el&lt;/code&gt; provided the ability to
      add      &lt;span
      class=&quot;underline&quot;&gt;before&lt;/span&gt;, &lt;span
      class=&quot;underline&quot;&gt;after&lt;/span&gt;, or&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;around&lt;/span&gt; advice.
      In
      brief, Emacspeak used thesee three classes of&lt;br /&gt;
      advice as follows:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Speak line moved to
      after
      &lt;code&gt;next-line&lt;/code&gt; and
      &lt;code&gt;previous-line&lt;/code&gt; &amp;#x2014; add&lt;br /&gt;
      an &lt;span class=&quot;underline&quot;&gt;after&lt;/span&gt; advice
      that
      called function
      &lt;code&gt;emacspeak-speak-line&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Speak character being deleted &amp;#x2014; Add a &lt;span
      class=&quot;underline&quot;&gt;before&lt;/span&gt; advice that&lt;br
      /&gt;speaks the character under point before it is
      deleted.&lt;/li&gt;
      &lt;li&gt;Get various types of completion spoken &amp;#x2014; Add an
      &lt;span class=&quot;underline&quot;&gt;around&lt;/span&gt;
      advice&lt;br
      /&gt;
      that remembers the current context, calls the original
      function&lt;br      /&gt;
      being advised, and finally speak the current context that now&lt;br
      /&gt;
      reflects the completion.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;The &lt;i&gt;rest of the story&lt;/i&gt; was written up a
      few
      years ago as &lt;a
      
      
      href=&quot;http://emacspeak.sourceforge.net/turning-twenty.html&quot;&gt;Emacspeak At&lt;br /&gt;
      Twenty&lt;/a&gt;. Fast-forwarding 25 years, present versions of
      Emacs      still&lt;br /&gt;
      include module &lt;code&gt;advice.el&lt;/code&gt; as well as an
      arguably
      simplified front-end&lt;br /&gt;
      implemented by module &lt;code&gt;nadvice.el&lt;/code&gt; that
      enables
      the definition of&lt;br /&gt;
      custom functions that are then attached to existing code via
      advice.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org0ea164b&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org0ea164b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt;
      References&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;&lt;a
      
      
      href=&quot;http://emacspeak.sourceforge.net/turning-twenty.html&quot;&gt;Emacspeak At Twenty, Looking Back, Looking Forward&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;http://emacspeak.sourceforge.net/raman/publications/bc-emacspeak/publish-emacspeak-bc.html&quot;&gt;emacspeak: The Complete Audio Desktop&lt;/a&gt;. Chapter from the book&lt;br /&gt;
      entitled &lt;i&gt;Beautiful Code&lt;/i&gt;, OReilly.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;
      trbidi=&quot;on&quot;&gt;&lt;br /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4544335809639638846'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4544335809639638846'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2019/10/meta-programming-in-emacs-using.html' title='Meta-Programming In Emacs Using Defadvice'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-185184607797652387
    </id>
    <published>
      2019-05-03T11:30:00.002-07:00
    </published>
    <updated>2019-05-03T11:30:47.530-07:00
    </updated>
    <title type='text'>
      Emacspeak 50.0 (SageDog) Unleashed!
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Announcing Emacspeak
      50.0—SageDog!&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgcda4691&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgcda4691&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; For Immediate
      Release:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;San Jose, Calif., (May 4,
      2019)&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org3677d6b&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org3677d6b&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; 🦮
      Emacspeak      50.0 (SageDog) Unleashed!&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-1-1&quot;&gt;&lt;p&gt;Advancing Accessibility In The
      Age Of
      User-Aware Interfaces &amp;#x2014; Zero&lt;br /&gt;
      cost of Ownership makes priceless software Universally
      affordable!&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;&lt;br /&gt;
      &amp;#x2014; announces the immediate world-wide availability of
      &lt;a      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/50.0/emacspeak-50.0.tar.bz2&quot;&gt;Emacspeak 50.0&lt;/a&gt;&lt;br /&gt;
      (SageDog) &amp;#x2014; a powerful audio desktop for leveraging
      today&#39;s evolving&lt;br /&gt;
      Data, Social and Assistant-Oriented Internet cloud.  &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;🚭:  Naturally Intelligent (NI)™ at how information is
      spoken, Emacspeak&lt;br /&gt;
      is entirely free of Artificial Ingredients (AI)™.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org6aa522d&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org6aa522d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,&lt;br /&gt;
      NASDOG: ESPK has now been consistently trading over the social net
      at&lt;br /&gt;
      levels close to that once attained by DogCom high-fliers—and as
      of&lt;br /&gt;
      May 2019 is trading at levels close to that achieved by once&lt;br
      /&gt;
      better known stocks in the tech sector.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org640f261&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org640f261&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      ubiquitous assistance, Web-surfing, blogging, social computing
      and&lt;br
      /&gt;
      electronic messaging into the audio desktop, Emacspeak enables
      speech&lt;br /&gt;
      access to local and remote information with a consistent and&lt;br
      /&gt;
      well-integrated user interface. A rich suite of task-oriented
      tools&lt;br
      /&gt;
      provides efficient speech-enabled access to the evolving&lt;br /&gt;
      assistant-oriented social Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org3d53da2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org3d53da2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;This version
      &lt;b&gt;requires&lt;/b&gt; emacs-26.1 or later. &lt;br /&gt;
      &lt;/p&gt;&lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacs 26
      Support 
      🤻&lt;/li&gt;
      &lt;li&gt;Updated URL templates 🕷&lt;/li&gt;
      &lt;li&gt;Updated websearch wizards  🧙&lt;/li&gt;
      &lt;li&gt;Updated Bookshare support 📚&lt;/li&gt;
      &lt;li&gt;Updated EWW support  🕸&lt;/li&gt;
      &lt;li&gt;Smart tabs for EWW 📑&lt;/li&gt;
      &lt;li&gt;Speech-enables Forge  for software development 
      🏭&lt;/li&gt;
      &lt;li&gt;The ESpeak server now builds on the Mac 🔈&lt;/li&gt;
      &lt;li&gt;Updated DBus support 🚌&lt;/li&gt;
      &lt;li&gt;Speech-enable Github-Explorer   🤯&lt;/li&gt;
      &lt;li&gt;Speech-enabled navi-mode   🌲&lt;/li&gt;
      &lt;/ol&gt;&lt;p&gt;— And a lot more than will fit this margin.
      …      🗞&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga9ba529&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga9ba529&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-5&quot;&gt;&lt;p&gt; 
      Never a toy system, Emacspeak is voluntarily bundled with all&lt;br
      /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free Assistance and social interaction and carries forward
      the&lt;br
      /&gt;
      well-established Open Source tradition of introducing user
      interface&lt;br /&gt;
      features that eventually show up in luser environments.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org526a2b4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org526a2b4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-6&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; “It is the user
      &amp;#x2014; and
      not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org7e9f4c8&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org7e9f4c8&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-6-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org7c2b5e7&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org7c2b5e7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2014; see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      at&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;GitHub&lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org0189d2e&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org0189d2e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 50.0 (SageDog)
      embraces
      the wisdom of stability as&lt;br /&gt;
      opposed to rapid change and the concomitant  creation of
      bugs.&lt;/li&gt;
      &lt;li&gt;Emacspeak 49.0 (WiseDog) leverages the wisdom gleaned
      from&lt;br /&gt;
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide&lt;br /&gt;
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful&lt;br /&gt;
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc7edfa4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgc7edfa4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org4a4b782&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org4a4b782&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;10&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-10&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop (🦮)
      and&lt;br      /&gt;
      promises to exercise this freedom to innovate and her
      resulting&lt;br      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/185184607797652387'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/185184607797652387'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2019/05/emacspeak-500-sagedog-unleashed.html' title='Emacspeak 50.0 (SageDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2458881926946684000
    </id>
    <published>
      2018-11-20T13:08:00.001-08:00
    </published>
    <updated>2018-11-20T13:08:19.501-08:00
    </updated>
    <title type='text'>
      Emacspeak 49.0 (WiseDog) Unleashed
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak
      49.0—WiseDog—Unleashed!&lt;/h1&gt;&lt;p&gt;*For Immediate
      Release:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;San Jose, Calif., (Nov 21, 2018)&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak 49.0 (WiseDog): &lt;br /&gt;
      Advancing Accessibility In The Age Of User-Aware Interfaces&lt;br
      /&gt;
      &amp;#x2014; Zero cost of Ownership  makes priceless software
      Universally
      affordable!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;&lt;br /&gt;
      &amp;#x2014; announces the immediate world-wide availability of
      &lt;a      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/44.0/emacspeak-45.0.tar.bz2&quot;&gt;Emacspeak 49.0&lt;/a&gt;&lt;br /&gt;
      (WiseDog) &amp;#x2014; a powerful audio desktop for leveraging
      today&#39;s&lt;br /&gt;
      evolving Data, Social and Assistant-Oriented Internet cloud.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org5b3246b&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5b3246b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,&lt;br /&gt;
      NASDOG: ESPK has now been consistently trading over the social net
      at&lt;br /&gt;
      levels close to that once attained by DogCom high-fliers—and as
      of&lt;br /&gt;
      November 2018 is trading at levels close to that achieved by
      once&lt;br
      /&gt;
      better known stocks in the tech sector.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgb8bed07&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgb8bed07&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      ubiquitous assistance, Web-surfing, blogging, social computing
      and&lt;br
      /&gt;
      electronic messaging into the audio desktop, Emacspeak enables
      speech&lt;br /&gt;
      access to local and remote information with a consistent and&lt;br
      /&gt;
      well-integrated user interface. A rich suite of task-oriented
      tools&lt;br
      /&gt;
      provides efficient speech-enabled access to the evolving&lt;br /&gt;
      assistant-oriented social Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org32c55a0&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org32c55a0&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;This version
      &lt;b&gt;requires&lt;/b&gt; emacs-26.1 or later. &lt;br /&gt;
      &lt;/p&gt;&lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacs 26
      Support 
      🤻&lt;/li&gt;
      &lt;li&gt;Updated URL templates 🕷&lt;/li&gt;
      &lt;li&gt;Speech-enabled SageMath  ⟬⟭&lt;/li&gt;
      &lt;li&gt;Updated folding-mode support 🙏&lt;/li&gt;
      &lt;li&gt;Speech-enabled Lispy ƛ&lt;/li&gt;
      &lt;li&gt;Updated websearch wizards 🕷&lt;/li&gt;
      &lt;li&gt;Updated Bookshare support 📚&lt;/li&gt;
      &lt;li&gt;Updated EWW support  🕸&lt;/li&gt;
      &lt;li&gt;Updated DBus support 🚌&lt;/li&gt;
      &lt;/ol&gt;&lt;p&gt;— And a lot more than will fit this margin.
      …      🗞&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgf5f29c8&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgf5f29c8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;&lt;p&gt; 
      Never a toy system, Emacspeak is voluntarily bundled with all&lt;br
      /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free Assistance and social interaction and carries forward
      the&lt;br
      /&gt;
      well-established Open Source tradition of introducing user
      interface&lt;br /&gt;
      features that eventually show up in luser environments.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org6016d96&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org6016d96&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-5&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; “It is the user
      &amp;#x2014; and
      not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgaacad90&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgaacad90&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-5-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga5802e9&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga5802e9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2014; see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      via&lt;br /&gt;
      Git  from GitHub  at &lt;br /&gt;
      &lt;a
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak
      GitHub &lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org90ccad6&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org90ccad6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 49.0 (WiseDog)
      leverages
      the wisdom gleaned from&lt;br /&gt;
      earlier releases to provide an enhanced  auditory
      experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak 48.0  (ServiceDog) builds on earlier releases to
      provide&lt;br /&gt;
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful&lt;br /&gt;
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org88054ce&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org88054ce&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org12374c3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org12374c3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop, and&lt;br
      /&gt;      promises to exercise this freedom to innovate and her
      resulting&lt;br
      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2458881926946684000'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2458881926946684000'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2018/11/emacspeak-490-wisedog-unleashed.html' title='Emacspeak 49.0 (WiseDog) Unleashed'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2629248606626328439
    </id>
    <published>
      2018-07-03T14:57:00.001-07:00
    </published>
    <updated>2018-07-03T14:57:26.593-07:00
    </updated>
    <title type='text'>Using
      Emacs Threads To Execute Commands Asynchronously 
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Using Emacs Threads To Execute Commands
      Asynchronously&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org817c562&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org817c562&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Emacs 26 has threads for executing
      functions asynchronously. Emacs&lt;br /&gt;
      commands that call an external process and wait for that process
      to&lt;br
      /&gt;
      finish make a good candidate for asynchronous execution &amp;#x2014;
      e.g.,&lt;br /&gt;
      &lt;code&gt;smtpmail-send-it&lt;/code&gt; for sending mail. The
      arrival
      of threads provides&lt;br /&gt;
      an interesting option for running such commands
      asynchronously.&lt;br      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org3175966&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org3175966&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; First Attempt
      &amp;#x2014; Custom Async &lt;code&gt;gnus&lt;/code&gt;
      Command&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;I initially wrote a custom command
      for
      launching &lt;code&gt;gnus&lt;/code&gt; asynchronously&lt;br /&gt;
      &amp;#x2014; it was a one-line  function that   ran the
      following:&lt;br
      /&gt;
      &lt;/p&gt;&lt;div class=&quot;org-src-container&quot;&gt;&lt;pre
      class=&quot;src src-emacs-lisp&quot;&gt;(make-thread #&#39;gnus)
      &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;p&gt;The above worked well &amp;#x2014; except when command
      &lt;code&gt;gnus&lt;/code&gt; needed user input&lt;br /&gt;
      &amp;#x2014; so I just had to be thoughtful about when I called it.
      But a
      few&lt;br /&gt;
      weeks later, I wanted the equivalent for function
      &lt;code&gt;smtpmail-send-it&lt;/code&gt;&lt;br /&gt;
      for  sending mail. I almost wrote myself one more command
      before&lt;br
      /&gt;
      stepping back to create a more generic solution.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2bc6dcb&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2bc6dcb&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; One Command To
      Thread Them All&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;I have now defined command
      
      &lt;code&gt;emacspeak-wizards-execute-asynchronously&lt;/code&gt;&lt;br
      /&gt;
      bound to &lt;code&gt;C-&#39; a&lt;/code&gt;.&lt;br /&gt;
      Note that this command, though part of module
      &lt;code&gt;emacspeak-wizards&lt;/code&gt;, has&lt;br /&gt;
      no emacspeak dependencies.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;&lt;pre
      class=&quot;src
      src-emacs-lisp&quot;&gt;(&lt;span style=&quot;color:
      #a020f0;&quot;&gt;defun&lt;/span&gt; &lt;span style=&quot;color:
      
      #0000ff;&quot;&gt;emacspeak-wizards-execute-asynchronously&lt;/span&gt;
      (key)
      &lt;span style=&quot;color: #8b2252;&quot;&gt;&quot;Read
      key-sequence,
      then execute its command on a new thread.&quot;&lt;/span&gt;
      (&lt;span style=&quot;color:
      #a020f0;&quot;&gt;interactive&lt;/span&gt;
      (list (read-key-sequence &lt;span style=&quot;color:
      #8b2252;&quot;&gt;&quot;Key Sequence: &quot;&lt;/span&gt;)))
      (&lt;span style=&quot;color: #a020f0;&quot;&gt;let&lt;/span&gt; ((l 
      (local-key-binding key))
      (g (global-key-binding key)))
      (&lt;span style=&quot;color: #a020f0;&quot;&gt;cond&lt;/span&gt;
      ( (commandp l)
      (make-thread l)
      (message &lt;span style=&quot;color: #8b2252;&quot;&gt;&quot;Running
      %s
      on a new thread.&quot;&lt;/span&gt; l))
      ((commandp g)
      (make-thread g)
      (message &lt;span style=&quot;color: #8b2252;&quot;&gt;&quot;Running
      %s
      on a new thread.&quot;&lt;/span&gt; g))
      (t (&lt;span style=&quot;color: #ff0000; font-weight:
      bold;&quot;&gt;error&lt;/span&gt; &lt;span style=&quot;color:
      #8b2252;&quot;&gt;&quot;%s is not bound to a
      command.&quot;&lt;/span&gt;
      key)))))
      
      (global-set-key (kbd &lt;span style=&quot;color:
      #8b2252;&quot;&gt;&quot;C-&#39; a&quot;&lt;/span&gt;)
      &#39;emacspeak-wizards-execute-asynchronously)
      &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;p&gt;With this command bound to &lt;code&gt;C-&#39;
      a&lt;/code&gt;, I
      can now get rid of my custom&lt;br /&gt;
      &lt;code&gt;gnus-async&lt;/code&gt; command and its associated
      key-binding. I already have&lt;br /&gt;
      command &lt;code&gt;gnus&lt;/code&gt; bound to &lt;code&gt;C-;
      g&lt;/code&gt;, so I can just press &lt;code&gt;C-&#39; a C-;
      g&lt;/code&gt; to&lt;br /&gt;
      fetch news/mail asynchronously. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Similarly, when sending mail using
      &lt;code&gt;smtpmail&lt;/code&gt; I can press &lt;code&gt;C-&#39; a
      C-c&lt;br /&gt;
      C-c&lt;/code&gt; in the &lt;code&gt;*mail*&lt;/code&gt; buffer to
      send
      mail without Emacs blocking.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orge8a6d79&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orge8a6d79&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Final
      Caveats&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;Like other asynchronous solutions
      (see
      package &lt;code&gt;async&lt;/code&gt; for instance)&lt;br /&gt;
      one needs to make sure that the command being executed
      asynchronously&lt;br /&gt;
      will not require user input. In the case of package
      &lt;code&gt;async&lt;/code&gt;, the&lt;br /&gt;
      asynchronous Emacs will block waiting for input; in the case
      of&lt;br      /&gt;
      &lt;code&gt;make-thread&lt;/code&gt;, Emacs enters a blocking loop
      with
      the minibuffer&lt;br /&gt;
      continuously displaying&lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;No catch for ...
      
      &lt;/pre&gt;&lt;p&gt;The only way to come out is to kill Emacs
      &amp;#x2014; so make sure to use&lt;br /&gt;
      command
      &lt;code&gt;emacspeak-wizards-execute-asynchronously&lt;/code&gt;
      only when you&#39;re&lt;br /&gt;
      sure that the command being run asynchronously will not require user
      &lt;br /&gt;
      input.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: 2018-07-03 Tue 00:00&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2018-07-03 Tue
      14:37&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/body&gt;&lt;br /&gt;
      &lt;/html&gt;&lt;br /&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2629248606626328439'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2629248606626328439'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2018/07/using-emacs-threads-to-execute-commands.html' title='Using Emacs Threads To Execute Commands Asynchronously '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2867697857245595694
    </id>
    <published>
      2018-06-22T14:47:00.001-07:00
    </published>
    <updated>2018-06-25T08:55:34.131-07:00
    </updated>
    <title type='text'>
      Effective Suggest And Complete In An Eyes-Free Environment 
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Effective Suggest And Complete In An
      Eyes-Free
      Environment&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgf9cdbd5&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgf9cdbd5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Emacs has always provided a wealth
      of
      techniques for rapid keyboard&lt;br /&gt;
      input (abbrev, dabbrev, hippie-expandand completion come to
      mind)&lt;br
      /&gt;
      alongside a rich collection of tools for navigating among open&lt;br
      /&gt;buffers. And thesee affordances have significantly increased
      over      the&lt;br /&gt;
      last few years with the arrival of packages like
      &lt;code&gt;ido&lt;/code&gt;,
      &lt;code&gt;company&lt;/code&gt;,&lt;br      /&gt;
      &lt;code&gt;helm&lt;/code&gt; etc., each replete with different
      strategies for rapid task&lt;br /&gt;
      completion such as flex and fuzzy matching. This article
      investigates&lt;br /&gt;
      thesee tools in an eyes-free environment, specifically in the
      context&lt;br /&gt;
      of Emacspeak and rapid task completion. I&#39;ve not investigated
      every&lt;br /&gt;
      possible package in this space &amp;#x2014; instead, I&#39;ve picked
      a
      collection&lt;br /&gt;
      of packages and techniques that have worked well in an
      eyes-free&lt;br
      /&gt;
      context. Finally, the ultimate metric I use in each case is the
      time&lt;br /&gt;
      to successful task completion &amp;#x2014; since at the end of the
      day,
      that&#39;s&lt;br /&gt;
      the only metric that counts when it comes to user
      productivity.&lt;br      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org03a5b2e&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org03a5b2e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Terminology&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;For this article, I will use terms
      &lt;i&gt;suggestion&lt;/i&gt; and &lt;i&gt;completion&lt;/i&gt;
      to&lt;br
      /&gt;
      mean  subtly different concepts. I&#39;ll also use terms
      &lt;i&gt;explore&lt;/i&gt; and&lt;br /&gt;
      &lt;i&gt;filter&lt;/i&gt; in describing various phases in user
      interaction.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;dl class=&quot;org-dl&quot;&gt;&lt;dt&gt;Suggestion&lt;/dt&gt;
      &lt;dd&gt;Offer the user some &lt;i&gt;suggestions&lt;/i&gt; that
      help
      explore the space of choices. (metaphor: avoid the blank sheet of
      paper
      syndrome).&lt;/dd&gt;
      &lt;dt&gt;Completion &lt;/dt&gt;
      &lt;dd&gt;Filter the available choices based on user input with the
      goal
      of reaching the target as rapidly as possible.&lt;/dd&gt;
      &lt;dt&gt;Explore &lt;/dt&gt;
      &lt;dd&gt;User does not necessarily know what he is looking for, but
      expects to be able to &lt;i&gt;recognize&lt;/i&gt; what he wants
      from the
      displayed choices.&lt;/dd&gt;
      &lt;dt&gt;Target &lt;/dt&gt;
      &lt;dd&gt;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.&lt;/dd&gt; &lt;/dl&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;Note that in practice, &lt;i&gt;suggestions&lt;/i&gt; and
      &lt;i&gt;completions&lt;/i&gt; work&lt;br /&gt;
      hand-in-hand, with the visual display playing a central role
      in&lt;br      /&gt;
      guiding the user through the pace of available choices. In a
      typical&lt;br /&gt;
      user interaction session, the space of suggestions gets filtered
      by&lt;br
      /&gt;
      user input to produce the available completions (choices) for the
      next&lt;br /&gt;
      round of user input &amp;#x2014; think of this as a&lt;br /&gt;
      &lt;b&gt;Suggest/Input/Filter/Target&lt;/b&gt; (SIFT)  interaction
      loop.
      Similarly, &lt;i&gt;explore&lt;/i&gt; and&lt;br /&gt;
      &lt;i&gt;target&lt;/i&gt; type activities typically go hand-in-hand,
      with
      &lt;i&gt;explore&lt;/i&gt;&lt;br /&gt;
      serving as a memory-aid for locating the
      &lt;i&gt;target&lt;/i&gt;.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org5333515&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5333515&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Tasks Where
      Suggestions And Completions Help Speed Up Task
      Completion&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Here are exemplars of tasks that I
      perform often and where I require&lt;br /&gt;
      all the help that Emacs can provide in completing the task as
      rapidly&lt;br /&gt;
      as possible:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;dl class=&quot;org-dl&quot;&gt;&lt;dt&gt;File Navigation
      &lt;/dt&gt;
      &lt;dd&gt;Navigating to and opening a file  &amp;#x2014; either code
      or
      prose.&lt;/dd&gt;
      &lt;dt&gt;Content Navigation&lt;/dt&gt;
      &lt;dd&gt;Jump  to a specific location (section, function,
      class/method,
      or pattern-match) in  that file.&lt;/dd&gt;
      &lt;dt&gt;Buffer Navigation&lt;/dt&gt;
      &lt;dd&gt;Jump to an already open buffer in  a long-running
      Emacs.&lt;/dd&gt; &lt;/dl&gt;&lt;p&gt;If that buffer existed
      &amp;#x2014;
      but has since been killed (by&lt;br /&gt;
      &lt;code&gt;midnight&lt;/code&gt; for example), then re-open that
      buffer.&lt;br /&gt;
      I do &lt;b&gt;everything&lt;/b&gt; in Emacs, so open buffers include
       a
      large&lt;br /&gt;
      number of ORG and LaTeX documents,  Web Pages opened in  EWW &lt;br
      /&gt;
      (news sites, documentation, blog articles), IM Chats (I use&lt;br
      /&gt;
      &lt;code&gt;jabber&lt;/code&gt;), Mail  Buffers &amp;#x2014; both
      open
      folders and previously&lt;br /&gt;
      sent messages,  and much, much more.&lt;br /&gt;
      &lt;/p&gt;&lt;dl
      class=&quot;org-dl&quot;&gt;&lt;dt&gt;Media&lt;/dt&gt;
      &lt;dd&gt;Easily launch media streams including local and streaming
      media.&lt;/dd&gt;
      &lt;dt&gt;EBooks&lt;/dt&gt;
      &lt;dd&gt;Open (or jump to an already open) EBook to continue
      reading.&lt;/dd&gt;
      &lt;dt&gt;Code Completion&lt;/dt&gt;
      &lt;dd&gt;Complete function/method-name  as I type,  with an easy
      affordance to move among the available choices. The
      &lt;b&gt;Suggest/Input/Filter/Target&lt;/b&gt; interaction loop
      applies
      here as well.&lt;/dd&gt; &lt;/dl&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;Notice that as one performs all of thesee tasks,
      &lt;b&gt;every
      target&lt;/b&gt; is an&lt;br /&gt;
      Emacs buffer or Emacs buffer location. In the case of completion,
      the&lt;br /&gt;
      target is a string that gets inserted at the current 
      location.&lt;br      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org63d149a&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org63d149a&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Features Of
      Eyes-Free Interaction&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;Using spoken output &amp;#x2014;
      as      opposed to a rich visual display &amp;#x2014;  has&lt;br
      /&gt;
      the following special features and/or drawbacks:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;A large visual display
      can
      offer the user many choices at a time,&lt;br /&gt;
      and the eye&#39;s ability to rapidly scan thesee choices makes for
      an&lt;br /&gt;
      extremely fast &lt;b&gt;Suggest/Input/Filter/Target&lt;/b&gt; loop.
      As an
      example, an&lt;br /&gt;
      interface like &lt;code&gt;helm&lt;/code&gt; can display a large
      number
      of initial&lt;br /&gt;
      choices, with the user  filtering thesee down with a few strategic
      key-presses.&lt;/li&gt;
      &lt;li&gt;Spoken output takes time &amp;#x2014; and there is simply
      no
      way around&lt;br /&gt;
      this &amp;#x2014; speeding up speech-rate helps to a point, but
      speaking&lt;br /&gt;
      50 choices very fast does not help the user  in the
      &lt;i&gt;explore&lt;/i&gt;&lt;br /&gt;
      phase. This means that  effective filtering and ranking of the
      available&lt;br /&gt;
      choices takes on added importance.&lt;/li&gt;
      &lt;li&gt;More importantly, picking a
      &lt;b&gt;Suggest/Input/Filter/Target&lt;/b&gt; (SIFT)&lt;br /&gt;
      interaction loop that depends on a large display is
      sub-optimal&lt;br      /&gt;
      for eyes-free interaction.&lt;/li&gt;
      &lt;li&gt;Given (2,3), smart filtering, flex/fuzzy matching, and
      ranking&lt;br /&gt;
      based on past user behavior take on added importance in an&lt;br
      /&gt;
      eyes-free environment. As an aside, I have high hopes in this&lt;br
      /&gt;
      area for package &lt;code&gt;prescient&lt;/code&gt; &amp;#x2014;
      though
      in my few days of usage,&lt;br /&gt;
      it has yet to  make a  difference in my productivity.&lt;/li&gt;
      &lt;li&gt;For many of the tasks enumerated in the previous section,
      (2,
      3&lt;br /&gt;
      and 4) make &lt;code&gt;ido&lt;/code&gt; with flex and fuzzy
      matching      extremely&lt;br /&gt;
      effective. In contrast, &lt;code&gt;helm&lt;/code&gt; with similar
      flex
      and fuzzy&lt;br /&gt;
      matching (via packages &lt;code&gt;helm-flx&lt;/code&gt; and
      &lt;code&gt;helm-fuzzier&lt;/code&gt;) adds little&lt;br /&gt;
      extra benefit &amp;#x2014; and the fractional extra time to compute
      and&lt;br /&gt;
      display the choices can even lead to a minor productivity
      hit.&lt;/li&gt;
      &lt;li&gt;When it comes to writing code with completion, package
      &lt;code&gt;company&lt;/code&gt;&lt;br /&gt;
      has proven extremely effective. Notice that when writing code,&lt;br
      /&gt;one rarely if ever resorts to &lt;b&gt;fuzzy&lt;/b&gt; matching
      &amp;#x2014; this may well&lt;br /&gt;
      be  subjective. Speaking for myself, I cannot think of
      function&lt;br      /&gt;
      or method names in the context of fuzzy matching &amp;#x2014;
      said&lt;br
      /&gt;
      differently, it&#39;s hard to think &lt;code&gt;xl&lt;/code&gt; for
      function-name&lt;br /&gt;
      &lt;code&gt;next-line&lt;/code&gt; &amp;#x2014; even though in a
      given
      filtering context, &lt;code&gt;xl&lt;/code&gt;&lt;br /&gt;
      might define the shortest path through the available choices
      to&lt;br      /&gt;
      the target &lt;code&gt;next-line&lt;/code&gt;. Given this, emacspeak
      implements a&lt;br /&gt;
      &lt;code&gt;company front-end&lt;/code&gt; that allows the user to
      navigate through the&lt;br /&gt;
      available choices with succinct spoken feedback, and I use
      those&lt;br
      /&gt;
      choices only after I have  typed sufficiently many characters
      to&lt;br
      /&gt;
      have a manageable number of choices &amp;#x2014; said differently,
      though&lt;br /&gt;
      package &lt;code&gt;company&lt;/code&gt; is set up to trigger after
      3      characters have&lt;br /&gt;
      been typed, I usually end up typing more &amp;#x2014; and  often
      resort
      to&lt;br /&gt;
      &lt;code&gt;dabbrev&lt;/code&gt; or
      &lt;code&gt;hippee-expand&lt;/code&gt; to  input this longer
      prefix.&lt;/li&gt;
      &lt;li&gt;Some of the shortcomings  with eyes-free interaction
      enumerated&lt;br /&gt;
      above lead to my looking for effective work-arounds  that 
      might&lt;br
      /&gt;
      well work well outside the eyes-free context, e.g. when the&lt;br
      /&gt;
      available choices are too large to fit on a typical visual&lt;br
      /&gt;
      display. Interestingly, most of thesee have also been solved by&lt;br
      /&gt;mainstream Emacs developers in their never-ending/unerring
      quest for
      increased&lt;br /&gt;
      productivity &amp;#x2014; package &lt;code&gt;ido&lt;/code&gt; and
      &lt;code&gt;company&lt;/code&gt; are excellent exemplars.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Mapping Solutions To
      Tasks&lt;/li&gt;
      &lt;/ul&gt;&lt;br /&gt;
      &lt;p&gt;This section maps the various solutions I use to speed up
      the
      tasks&lt;br /&gt;
      enumerated earlier in this article.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org35ff442&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org35ff442&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;4.1&lt;/span&gt; File And
      Buffer
      Navigation&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-4-1&quot;&gt;&lt;p&gt;I use package
      &lt;code&gt;ido&lt;/code&gt; with add-ons
      &lt;code&gt;flx-ido&lt;/code&gt; and 
      &lt;code&gt;ido-completing-read+&lt;/code&gt;&lt;br /&gt;
      (formerly &lt;code&gt;ido-ubiquitous&lt;/code&gt;) as my
      primary/only      solution for this&lt;br /&gt;
      task. I&#39;ve dabbled with package &lt;code&gt;helm&lt;/code&gt;
      &amp;#x2014; primarily via command&lt;br /&gt;
      &lt;code&gt;helm-mini&lt;/code&gt; but have found almost no
      use-cases      where I did better with&lt;br /&gt;
      &lt;code&gt;helm&lt;/code&gt;. I also use command
      &lt;code&gt;org-switchb&lt;/code&gt; to quickly jump to any of
      my&lt;br
      /&gt;
      open &lt;code&gt;org&lt;/code&gt; buffers &amp;#x2013; since that
      automatically filters the choices&lt;br /&gt;
      down for me &amp;#x2014; I can then get to the
      &lt;code&gt;org-mode&lt;/code&gt; buffer I want with&lt;br /&gt;
      one or two keystrokes. Notice that in  all of thesee cases, I&#39;m
      relying&lt;br /&gt;
      on the fact that I mostly know what I want, i.e., the
      &lt;i&gt;explore&lt;/i&gt; phase&lt;br /&gt;
      does not start with an entirely blank sheet of paper.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org99ad4ed&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org99ad4ed&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;4.2&lt;/span&gt; Content
      Navigation&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-4-2&quot;&gt;&lt;p&gt;Incremental search is your
      biggest
      and most effective friend in&lt;br /&gt;
      effective eyes-free interaction &amp;#x2014; this simply cannot be
      stressed&lt;br /&gt;
      enough. That &lt;b&gt;everything&lt;/b&gt; in Emacs is
      &lt;i&gt;searchable&lt;/i&gt; via&lt;br /&gt;
      incremental-search is a big win for eyes-free interaction. When
      you&lt;br
      /&gt;
      have a large visual display, the human eye is the search interface
      of&lt;br /&gt;
      first resort &amp;#x2013; you typically use a
      &lt;i&gt;search-command&lt;/i&gt; only if the&lt;br /&gt;
      target is &lt;i&gt;below the fold&lt;/i&gt; or far away from the
      cursor.
      Because spoken&lt;br /&gt;
      output takes time, I use &lt;i&gt;isearch&lt;/i&gt; even when the
      target
      is one or two&lt;br /&gt;
      lines away.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Structured navigation comes next in my toolbox for
      navigating
      content&lt;br /&gt;
      &amp;#x2014; &lt;code&gt;imenu&lt;/code&gt; for code, and section
      navigation for documents (org,&lt;br /&gt;
      LaTeX). I also use command &lt;code&gt;occur&lt;/code&gt; to
      advantage
      since that provides a&lt;br /&gt;
      quick way of finding all the desired targets in a document. Given
      that&lt;br /&gt;
      program source-code uses indentation for displaying structure,&lt;br
      /&gt;hbuilt-in command &lt;code&gt;selective-display&lt;/code&gt;
      remains
      one of Emacs&#39; hidden&lt;br /&gt;
      treasures with respect to expanding/collapsing source-code.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Finally, I&lt;br /&gt;
      use a combination of &lt;code&gt;isearch&lt;/code&gt; and
      &lt;code&gt;structured navigation&lt;/code&gt; in&lt;br /&gt;
      &lt;code&gt;org-mode&lt;/code&gt; buffres by collapsing the
      document, and
      then using&lt;br /&gt;
      &lt;code&gt;isearch&lt;/code&gt; to reveal the desired content
      fragment.&lt;br /&gt;
      In the case of &lt;code&gt;LaTeX&lt;/code&gt; documents, I use 
      package
      &lt;code&gt;reftex&lt;/code&gt; to&lt;br /&gt;
      generate a &lt;i&gt;navigation&lt;/i&gt; buffer that functions as an
      interactive table&lt;br /&gt;
      of contents. &lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org0537c43&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org0537c43&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;4.3&lt;/span&gt; Locating And
      Playing Media&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-4-3&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;I
      keep all my music content organized under 
      &lt;code&gt;~/mp3&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;I keep playlist files that contain stream-links to my
      favorite&lt;br /&gt;
      Internet streams under
      &lt;code&gt;emacspeak/media&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;The afore-mentioned  techniques using
      &lt;code&gt;ido&lt;/code&gt;  enables me to launch&lt;br /&gt;
      local and streaming media with a small number of keystrokes.
      Once&lt;br
      /&gt;
      selected, the content is played via package
      &lt;code&gt;emacspeak-m-player&lt;/code&gt;&lt;br /&gt;
      which provides Emacs bindings to all 
      &lt;code&gt;mplayer&lt;/code&gt; 
      functionality&lt;br /&gt;
      via that program&#39;s &lt;code&gt;slave-mode&lt;/code&gt;. In
      addition,
      Emacspeak also&lt;br /&gt;
      implements a  smart
      &lt;code&gt;emacspeak-m-player-locate-media&lt;/code&gt; which
      uses&lt;br
      /&gt;
      Emacs&#39; integration with command &lt;code&gt;locate&lt;/code&gt;
      to 
      turn the located&lt;br /&gt;
      files matching a given pattern into an interactive
      play-list.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org7595f5c&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org7595f5c&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;4.4&lt;/span&gt;
      EBooks&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-4-4&quot;&gt;&lt;p&gt;Jumping to already open ebooks
      is no
      different than buffer&lt;br /&gt;
      navigation.  I organize all my ebooks under a single directory&lt;br
      /&gt;tree, and module &lt;code&gt;emacspeak-epub&lt;/code&gt;
      implements
      a &lt;i&gt;bookshelf&lt;/i&gt; that&lt;br /&gt;
      allows me to organize and browse my collection along various&lt;br
      /&gt;
      axies. Finally, Emacspeak implements a light-weight bookmark&lt;br
      /&gt;
      facility that works with &lt;code&gt;eww&lt;/code&gt; so that I can
      save
      my place in an&lt;br /&gt;
      ebook across Emacs sessions.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org17ce1a8&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org17ce1a8&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;4.5&lt;/span&gt; Code
      Completion&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-4-5&quot;&gt;&lt;p&gt;As covered earlier, I use
      &lt;code&gt;company&lt;/code&gt; along with
      &lt;code&gt;dabbrev&lt;/code&gt; and&lt;br /&gt;
      &lt;code&gt;hippee-expand&lt;/code&gt; while writing code. I also
      use      &lt;code&gt;yasnippet&lt;/code&gt; to&lt;br /&gt;
      generate skeleton code. I use
      &lt;code&gt;auto-correct-mode&lt;/code&gt;
      to&lt;br /&gt;
      automatically correct repeated errors, and add abbrevs for&lt;br
      /&gt;
      commonly occurring typos. &lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org039aec8&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org039aec8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt;
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacs&#39;
      &lt;b&gt;Suggest/Input/Filter/Target&lt;/b&gt; (SIFT)  interaction
      loop
      is just as&lt;br /&gt;
      effective in eyes-free interaction &amp;#x2014; in fact more so
      .&lt;/li&gt;
      &lt;li&gt;Fuzzy matching when filtering is a big win when working
      with
      spoken&lt;br /&gt;
      output &amp;#x2014; it leads to faster task completion.&lt;/li&gt;
      &lt;li&gt;Navigating ones  computing environment based on  the
      underlying&lt;br /&gt;
      structure and semantics of electronic content is a major win
      &amp;#x2014;&lt;br /&gt;
      both when working with a visual  or spoken display. The
      advantages&lt;br
      /&gt;
      just become evident far sooner in the eyes-free context due to
      the&lt;br
      /&gt;
      inherently temporal nature of spoken interaction.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: 2018-06-22 Fri 00:00&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2018-06-23 Sat
      17:22&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2867697857245595694'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2867697857245595694'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2018/06/effective-suggest-and-complete-in-eyes.html' title='Effective Suggest And Complete In An Eyes-Free Environment '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1466000085421733222
    </id>
    <published>
      2018-05-03T13:38:00.004-07:00
    </published>
    <updated>2018-05-03T13:38:58.991-07:00
    </updated>
    <title type='text'>
      Emacspeak 48.0 (ServiceDog) Unleashed!
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak
      48.0—ServiceDog—Unleashed!&lt;/h1&gt;&lt;p&gt;*For Immediate
      Release:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;San Jose, Calif., (May 04, 2018)&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak 48.0 (ServiceDog): &lt;br /&gt;
      Redefining Accessibility In The Age Of User-Aware Interfaces&lt;br
      /&gt;
      &amp;#x2013;Zero cost of Ownership  makes priceless software
      Universally
      affordable!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;&lt;br /&gt;
      &amp;#x2014; announces the immediate world-wide availability of
      &lt;a      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/44.0/emacspeak-45.0.tar.bz2&quot;&gt;Emacspeak 48.0&lt;/a&gt;&lt;br /&gt;
      (ServiceDog) &amp;#x2014; a powerful audio desktop for leveraging
      today&#39;s&lt;br /&gt;
      evolving Data, Social and Assistant-Oriented Internet cloud.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org11dddeb&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org11dddeb&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,&lt;br /&gt;
      NASDOG: ESPK has now been consistently trading over the social net
      at&lt;br /&gt;
      levels close to that once attained by DogCom high-fliers—and as
      of&lt;br /&gt;
      May &lt;br /&gt;
      2018 is trading at levels close to that achieved by once better
      known&lt;br /&gt;
      stocks in the tech sector.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgb7d03b7&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgb7d03b7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      ubiquitous assistance, Web-surfing, blogging, social computing
      and&lt;br
      /&gt;
      electronic messaging into the audio desktop, Emacspeak enables
      speech&lt;br /&gt;
      access to local and remote information with a consistent and&lt;br
      /&gt;
      well-integrated user interface. A rich suite of task-oriented
      tools&lt;br
      /&gt;
      provides efficient speech-enabled access to the evolving&lt;br /&gt;
      assistant-oriented social Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org4c48116&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org4c48116&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;This version
      &lt;b&gt;requires&lt;/b&gt; emacs-25.1 or later. &lt;br /&gt;
      &lt;/p&gt;&lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacs 26
      Support 
      🤻&lt;/li&gt;
      &lt;/ol&gt;&lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Locate And
      Play
      Media   ᭳&lt;/li&gt;
      &lt;li&gt;Updated EPub Support 🕮&lt;/li&gt;
      &lt;li&gt;Updated Outloud TTS Server 💬&lt;/li&gt;
      &lt;li&gt;Espeak-NG support📢&lt;/li&gt;
      &lt;li&gt;Smart TTS  Prompts  🙊&lt;/li&gt;
      &lt;li&gt;DBus Integration including screenlock via
      Gnome-ScreenSaver 
      🚌&lt;/li&gt;
      &lt;li&gt;MPlayer And Equalizer Presets  ≝&lt;/li&gt;
      &lt;li&gt;VLC front-end 🎹&lt;/li&gt;
      &lt;li&gt;Updated URL templates 🕷&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;Updated websearch wizards 🕸&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;— And a lot more than will fit this margin. …
      🗞&lt;br      /&gt;
      &lt;/p&gt;&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org4103fc9&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org4103fc9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;&lt;p&gt; 
      Never a toy system, Emacspeak is voluntarily bundled with all&lt;br
      /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free Assistance and social interaction and carries forward
      the&lt;br
      /&gt;
      well-established Open Source tradition of introducing user
      interface&lt;br /&gt;
      features that eventually show up in luser environments.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgac4d362&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgac4d362&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-5&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; “It is the user
      &amp;#x2013;and
      not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!”.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgdbf9c39&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgdbf9c39&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-5-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgd1155b1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgd1155b1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      via&lt;br /&gt;
      Git  from GitHub  at &lt;br /&gt;
      &lt;a
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak
      GitHub &lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org04a81b9&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org04a81b9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 48.0  (ServiceDog)
      builds
      on earlier releases to provide&lt;br /&gt;
      continued end-user value.&lt;/li&gt;
      &lt;li&gt;Emacspeak 47.0 (GentleDog) goes the next step in being
      helpful&lt;br /&gt;
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org4e5aa96&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org4e5aa96&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org3991921&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org3991921&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop, and&lt;br
      /&gt;      promises to exercise this freedom to innovate and her
      resulting&lt;br
      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1466000085421733222'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1466000085421733222'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2018/05/emacspeak-480-servicedog-unleashed.html' title='Emacspeak 48.0 (ServiceDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4786787380201197619
    </id>
    <published>
      2018-01-08T10:06:00.002-08:00
    </published>
    <updated>2018-01-08T10:06:32.834-08:00
    </updated>
    <title type='text'>Updating
      Voxin TTS Server To  Avoid A Possible ALSA Bug 
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Updating
      Voxin TTS Server To  Avoid A Possible ALSA Bug&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org1c076f2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org1c076f2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;I recently updated to a new Linux
      laptop running the latest Debian&lt;br /&gt;
      (Rodete).  The upgrade went smoothly, but when I started using
      the&lt;br
      /&gt;
      machine, I found that the Emacspeak TTS server for Voxin
      (Outloud)&lt;br
      /&gt;
      crashed consistently; here, consistently equated to crashing on
      short&lt;br /&gt;
      utterances which made typing or navigating by character an
      extremely&lt;br /&gt;
      frustrating experience.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;I fixed the issue by creating a work-around in the TTS
      server
      &lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/servers/linux-outloud/atcleci.cpp#255&quot;&gt;atcleci.cpp::xrun&lt;/a&gt;&lt;br /&gt;
      &amp;#x2014; if you run into this issue, make sure to update and
      rebuild&lt;br /&gt;
      atcleci.so from GitHub; alternatively, you&#39;ll find an
      updated&lt;br
      /&gt;
      &lt;code&gt;atcleci.so&lt;/code&gt; in the
      &lt;code&gt;servers/linux-outloud/lib/&lt;/code&gt; directory after
      a&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;git update&lt;/span&gt; that
      you
      can copy over to your
      &lt;code&gt;servers/linux-outloud&lt;/code&gt;&lt;br /&gt;
      directory.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org5f59b01&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5f59b01&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Was
      Crashing&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;I use a DMIX plugin as the default
      device &amp;#x2014; and have many ALSA&lt;br /&gt;
      virtual devices  that are defined in terms of this device
      &amp;#x2014;
      see my &lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/servers/linux-outloud/asoundrc&quot;&gt;asoundrc&lt;/a&gt;. With this configuration, writing to the ALSA device  was&lt;br /&gt;
      raising an &lt;span
      class=&quot;underline&quot;&gt;EPIPE&lt;/span&gt;      error 
      &amp;#x2014; normally this error indicates a buffer&lt;br /&gt;
      underrun &amp;#x2014; that&#39;s when ALSA is starved of audio data.
       
      But in many&lt;br /&gt;
      of thesee cases, the ALSA device was still in a &lt;span
      class=&quot;underline&quot;&gt;RUNNING&lt;/span&gt; rather
      than&lt;br      /&gt;
      an &lt;span class=&quot;underline&quot;&gt;XRUN&lt;/span&gt; state
      &amp;#x2014; this caused the Emacspeak server to&lt;br /&gt;
      abort. Curiously, this happened only sporadically &amp;#x2014; and
      from
      my&lt;br /&gt;
      experimentation only happened when there were multiple streams
      of&lt;br
      /&gt;
      audio active on the machine.&lt;br /&gt;
      A few Google searches showed threads on the alsa/kernel devel
      lists&lt;br
      /&gt;
      that indicated that this bug was present  in the case of DMIX
      devices&lt;br /&gt;
      &amp;#x2014; it was hard to tell if the patch that was submitted on
      the&lt;br /&gt;
      alsa-devel list had made it into my installation of Debian.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga9fcbcd&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga9fcbcd&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Fixing The
      Problem&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;My original implementation of
      function
      &lt;span class=&quot;underline&quot;&gt;xrun&lt;/span&gt;  had been
      cloned from&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;aplay.c&lt;/span&gt; about
      15+
      years ago &amp;#x2014; looking at  the newest &lt;span
      class=&quot;underline&quot;&gt;aplay&lt;/span&gt;&lt;br /&gt;
      implementation, little to nothing had changed there.  I finally
      worked&lt;br /&gt;
      around  the issue  by adding a call to &lt;br /&gt;
      &lt;/p&gt;&lt;pre
      class=&quot;example&quot;&gt;snd_pcm_prepare(AHandle) 
      
      &lt;/pre&gt;&lt;p&gt;whenever ALSA raised an &lt;span
      class=&quot;underline&quot;&gt;EPIPE&lt;/span&gt; error during write
      &amp;#x2014; with the ALSA&lt;br /&gt;
      device state in a &lt;span
      class=&quot;underline&quot;&gt;RUNNING&lt;/span&gt; rather than an
      &lt;span class=&quot;underline&quot;&gt;XRUN&lt;/span&gt; state.
      This&lt;br /&gt;
      appears to fix the issue.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4786787380201197619'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4786787380201197619'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2018/01/updating-voxin-tts-server-to-avoid.html' title='Updating Voxin TTS Server To  Avoid A Possible ALSA Bug '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6949948823651914202
    </id>
    <published>
      2017-11-21T14:44:00.000-08:00
    </published>
    <updated>2017-11-21T16:42:12.024-08:00
    </updated>
    <title type='text'>
      Emacspeak 47.0 (GentleDog) Unleashed!
    </title>
    <content type='html'> &lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak     
      47.0—GentleDog—Unleashed!&lt;/h1&gt;&lt;p&gt;*For Immediate
      Release:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;San Jose, Calif., (November 22, 2017)&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak 47.0 (GentleDog): &lt;br /&gt;
      Redefining Accessibility In The Age Of User-Aware Interfaces&lt;br
      /&gt;
      &amp;#x2013;Zero cost of Ownership  makes priceless software
      Universally
      affordable!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt;&lt;br /&gt;
      &amp;#x2014; announces the immediate world-wide availability of
      &lt;a      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/44.0/emacspeak-45.0.tar.bz2&quot;&gt;Emacspeak 47.0&lt;/a&gt;&lt;br /&gt;
      (GentleDog) &amp;#x2014; a powerful audio desktop for leveraging
      today&#39;s&lt;br /&gt;
      evolving Data, Social and Assistant-Oriented Internet cloud.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org1130765&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org1130765&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of &lt;span
      class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,&lt;br /&gt;
      NASDOG: ESPK has now been consistently trading over the social net
      at&lt;br /&gt;
      levels close to that once attained by DogCom high-fliers—and as
      of&lt;br /&gt;
      November &lt;br /&gt;
      2017 is trading at levels close to that achieved by once better
      known&lt;br /&gt;
      stocks in the tech sector.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org4319532&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org4319532&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      ubiquitous assistance, Web-surfing, blogging, social computing
      and&lt;br
      /&gt;
      electronic messaging into the audio desktop, Emacspeak enables
      speech&lt;br /&gt;
      access to local and remote information with a consistent and&lt;br
      /&gt;
      well-integrated user interface. A rich suite of task-oriented
      tools&lt;br
      /&gt;
      provides efficient speech-enabled access to the evolving&lt;br /&gt;
      assistant-oriented social Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org5980f13&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5980f13&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;This version
      &lt;b&gt;requires&lt;/b&gt; emacs-25.1 or later. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;speech-Enable
      Extensible      EVIL &amp;#x2014; VI Layer: ⸎&lt;/li&gt;
      &lt;li&gt;Bookshare &amp;#x2014;  Support Additional  downloads
      (epub3,mp3): 🕮&lt;/li&gt;
      &lt;li&gt;Bookmark support for EBooks in EWW 📔&lt;/li&gt;
      &lt;li&gt;Speech-Enable VDiff &amp;#x2014; A Diff tool:
      ≏&lt;/li&gt;
      &lt;li&gt;Speech-enable Package shx &amp;#x2014;Shell Extras For
      Emacs: 
      🖁&lt;/li&gt;
      &lt;li&gt;Updated IDO Support:  ⨼&lt;/li&gt;
      &lt;li&gt;Implemented NOAA Weather API:  ☔&lt;/li&gt;
      &lt;li&gt;Speech-Enable Typographic Editing Support: 
      🖶&lt;/li&gt;
      &lt;li&gt;Speech-Enable Package Origami:  🗀&lt;/li&gt;
      &lt;li&gt;Magit  Enhancements for Magitians:   🎛&lt;/li&gt;
      &lt;li&gt;Speech-Enable RipGrep Front-End:  ┅&lt;/li&gt;
      &lt;li&gt;Added SmartParen Support:  〙&lt;/li&gt;
      &lt;li&gt;Speech-enabled Minesweeper game: 🤯&lt;br /&gt;
      &lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;And a lot more than will
      fit
      this margin. … 🗞&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgfef8928&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgfef8928&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;Never
      a toy system, Emacspeak is voluntarily bundled with all&lt;br /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free Assistance and social interaction and carries forward
      the&lt;br
      /&gt;
      well-established Open Source tradition of introducing user
      interface&lt;br /&gt;
      features that eventually show up in luser environments.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga1020c4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga1020c4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-5&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; &quot;It is the user
      &amp;#x2013;and not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!&quot;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org0756eb5&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org0756eb5&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-5-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org71b6bb2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org71b6bb2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      via&lt;br /&gt;
      Git  from GitHub  at &lt;br /&gt;
      &lt;a
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak
      GitHub &lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga382cfc&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga382cfc&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 47.0 (GentleDog)
      goes the
      next step in being helpful&lt;br /&gt;
      while letting users learn and grow.&lt;/li&gt;
      &lt;li&gt;Emacspeak 46.0 (HelpfulDog) heralds the  coming of Smart
      Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgcd47764&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgcd47764&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org004e542&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org004e542&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop, and&lt;br
      /&gt;      promises to exercise this freedom to innovate and her
      resulting&lt;br
      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; 
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6949948823651914202'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6949948823651914202'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/11/emacspeak-470-gentledog-unleashed.html' title='Emacspeak 47.0 (GentleDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4341440097842408642
    </id>
    <published>
      2017-08-21T13:01:00.002-07:00
    </published>
    <updated>2017-08-21T13:01:46.948-07:00
    </updated>
    <title type='text'>Emacs
      Start-Up: Speeding It Up
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Emacs
      Start-Up: Speeding It Up&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgc53dd52&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgc53dd52&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      TL;DR:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Describes my Emacs start-up file,
      and
      what I did to speed it up from&lt;br /&gt;
      12 seconds to under 4 seconds.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-org7b5a545&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org7b5a545&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Overview Of
      Steps&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Byte-compile start-up
      files.&lt;/li&gt;
      &lt;li&gt;Temporarily increase &lt;span
      class=&quot;underline&quot;&gt;gc-cons-threshold&lt;/span&gt; during
      startup.&lt;/li&gt;
      &lt;li&gt;Load package autoloads (not packages) during
      start-up.&lt;/li&gt;
      &lt;li&gt;Use &lt;span
      class=&quot;underline&quot;&gt;eval-after-load&lt;/span&gt; to
      advantage
      for post-package setup.&lt;/li&gt;
      &lt;li&gt;Lexically bind &lt;span
      class=&quot;underline&quot;&gt;file-name-handler-alist&lt;/span&gt;
      to
      &lt;span class=&quot;underline&quot;&gt;nil&lt;/span&gt; if
      start-up&lt;br /&gt;
      is split across many files.&lt;/li&gt;
      &lt;li&gt;Used memoization to avoid network lookup of current
      location
      during startup.&lt;/li&gt;
      &lt;/ul&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;I have  a large number of elpa/melpa packages
      installed:&lt;br
      /&gt;
      &lt;/p&gt;&lt;div class=&quot;org-src-container&quot;&gt;&lt;pre
      class=&quot;src src-emacs-lisp&quot;&gt;(length load-path)
      &lt;/pre&gt;&lt;/div&gt;&lt;pre class=&quot;example&quot;&gt;400
      
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;With the above, my emacs (Emacs 26 built from Git) startup
      time
      is on&lt;br /&gt;
      average 4 seconds.  This includes starting up emacspeak
      (including&lt;br
      /&gt;
      speech servers), as well as launching a number of
      project-specific&lt;br
      /&gt;
      shell buffers.  Given that I rarely restart Emacs, the startup time
      is&lt;br /&gt;
      academic &amp;#x2014; but speeding up Emacs startup did get me to
      clean-up my&lt;br /&gt;
      Emacs setup.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgb1a8215&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgb1a8215&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt;
      Introduction&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;I have now used Emacs for more
      than 25
      years, and my &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/emacs-startup.el#L1&quot;&gt;Emacs start-up&lt;br /&gt;
      file&lt;/a&gt; has followed the same structure through this
      time.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;The init file defines a
      &lt;code&gt;start-up-emacs&lt;/code&gt; function that does the&lt;br
      /&gt;bulk of the work.&lt;/li&gt;
      &lt;li&gt;Package-specific configuration is split up into&lt;br
      /&gt;     
      &lt;code&gt;&amp;lt;package&amp;gt;-prepare.el&lt;/code&gt;
      files.&lt;/li&gt;
      &lt;li&gt;All of thesee files are byte-compiled.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;As a first step, I added code to my start-up file to time
      the
      loading&lt;br /&gt;
      of various modules.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2a2afbe&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2a2afbe&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Load
      Byte-Compiled
      Start-Up File&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;I keep my
      &lt;code&gt;emacs-startup.el&lt;/code&gt; checked into GitHub.&lt;br
      /&gt;My Emacs init-file is a symlink to the byte-compiled version of
      the&lt;br /&gt;
      above &amp;#x2014; this is something that goes back to my time as
      a&lt;br
      /&gt;
      grad-student at Cornell (when GitHub of course did not exist).&lt;br
      /&gt;That is also when I originally learnt the trick of temporarily
      setting&lt;br /&gt;
      &lt;span
      class=&quot;underline&quot;&gt;gc-cons-threshold&lt;/span&gt; to
      8MB &amp;#x2014; Emacs&#39; default is 800K.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org7451279&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org7451279&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Package
      Autoloads
      And &lt;code&gt;eval-after-load&lt;/code&gt;&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;p&gt;Over
      time, some of the package-specific setup files had come to&lt;br
      /&gt;
      directly load packages &amp;#x2014; it just made it easier to
      do&lt;br
      /&gt;
      package-specific setup at the time.  As part of the cleanup, I
      updated&lt;br /&gt;
      thesee to strictly load package-autoload files and wrapped
      post-package&lt;br /&gt;
      setup code in &lt;code&gt;eval-after-load&lt;/code&gt; &amp;#x2014;
      this
      is effectively the same as&lt;br /&gt;
      using &lt;code&gt;use-package&lt;/code&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org90a1e86&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org90a1e86&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Loading Files
      Faster&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacs has an extremely flexible
      mechanism for loading files &amp;#x2014; this&lt;br /&gt;
      means you can load compressed, encrypted or remote files
      without&lt;br
      /&gt;
      having to worry about it. That flexibility comes at a cost
      &amp;#x2014;
      if you&lt;br /&gt;
      are sure you dont need this flexibility during start-up, then
      locally&lt;br /&gt;
      binding &lt;code&gt;file-name-handler-alist&lt;/code&gt; to
      &lt;code&gt;nil&lt;/code&gt; is a big win &amp;#x2014; in my&lt;br
      /&gt;
      case, it  sped things up by 50%.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2a7c3a1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2a7c3a1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt; Avoid Network
      Calls
      During Start-Up&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;p&gt;In my case, I set
      &lt;code&gt;calendar-latitude&lt;/code&gt; and
      &lt;code&gt;calendar-longitude&lt;/code&gt; by&lt;br /&gt;
      geocoding my address &amp;#x2014; geocoding is done by calling the
      Google
      Maps&lt;br /&gt;
      API.  The geocoding API is plenty fast that you normally dont
      notice&lt;br /&gt;
      it &amp;#x2014; but it was adding anywhere from 1&amp;#x2013;3
      seconds
      during&lt;br /&gt;
      startup. Since my address doesn&#39;t change that often, I updated
      module&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/g-client/gmaps.el#L1&quot;&gt;gmaps&lt;/a&gt; to use a memoized version. My address is set via &lt;code&gt;Customize&lt;/code&gt;,&lt;br /&gt;
      and the geocoded lat/long is saved to disk automatically.&lt;br
      /&gt;      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org049dfc4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org049dfc4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt;
      References&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;&lt;a
      
      
      href=&quot;https://anuragpeshne.github.io/essays/emacsSpeed.html&quot;&gt;Emacs Speed&lt;/a&gt; What got it all started.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;https://www.reddit.com/r/emacs/comments/3kqt6e/2_easy_little_known_steps_to_speed_up_emacs_start/&quot;&gt;file-name-handler-alist&lt;/a&gt; The article that gave me the most useful&lt;br /&gt;
      tip of them all.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;Net &lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4341440097842408642'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4341440097842408642'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/08/emacs-start-up-speeding-it-up.html' title='Emacs Start-Up: Speeding It Up'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1936852790942836877
    </id>
    <published>
      2017-07-27T14:09:00.001-07:00
    </published>
    <updated>2017-07-27T14:09:16.226-07:00
    </updated>
    <title type='text'>
      Data-Binding In Emacs Lisp: let-alist When Processing JSON Data
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Data-Binding
      In  Emacs Lisp:  let-alist When Processing  JSON
      Data&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org6cb1d80&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org6cb1d80&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Module
      &lt;i&gt;json-read&lt;/i&gt;      consumes JSON data structures and
      transforms them&lt;br /&gt;
      into their elisp equivalent, where JSON dictionaries become alists
      and&lt;br /&gt;
      JSON arrays become vectors. Accessing that data from lisp
      would&lt;br      /&gt;
      ordinarily require using lisp accessors such as &lt;span
      class=&quot;underline&quot;&gt;assoc&lt;/span&gt;, &lt;span
      class=&quot;underline&quot;&gt;car&lt;/span&gt; and&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;cdr&lt;/span&gt;. With
      &lt;i&gt;let-alist&lt;/i&gt;, we get data-binding for free
      &amp;#x2014;
      the result&lt;br /&gt;
      is elisp code that uses dotted-variables to directly access
      specific&lt;br /&gt;
      slots in a deeply nested data structure. Thus, processing data&lt;br
      /&gt;available as JSON via Web APIs is a really good use-case
      for&lt;br
      /&gt;
      &lt;i&gt;let-alist&lt;/i&gt;. Long-standing wish &amp;#x2014; I wish
      Emacs&#39; JSON parsing were&lt;br /&gt;
      implemented in native code rather than in elisp.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgf8ed66d&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgf8ed66d&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; A Working
      Example&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-1-1&quot;&gt;&lt;p&gt;I recently implemented myself a
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-wizards.el#L3494&quot;&gt;NOAA Weather API Client&lt;/a&gt; &amp;#x2014; it pulls&lt;br /&gt;
      the NOAA Weather Forecast (weekly and hourly) as JSON objects,
      and&lt;br
      /&gt;
      produces an &lt;i&gt;org-mode&lt;/i&gt; buffer that renders the
      data.&lt;br /&gt;
      Note that though the above is part of a much larger&lt;br /&gt;
      &lt;i&gt;emacspeak-wizards&lt;/i&gt; module, the above function and
      its
      dependencies&lt;br /&gt;
      are themselves mostly independent of Emacspeak, except for the
      last&lt;br
      /&gt;
      two forms in the weather forecast function.&lt;br /&gt;
      Here is an annotated version of the  function that gets NOAA data
      and&lt;br /&gt;
      leverages &lt;i&gt;let-alist&lt;/i&gt; to process the 
      results:&lt;br      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div class=&quot;org-src-container&quot;&gt;&lt;pre
      class=&quot;src
      src-emacs-lisp&quot;&gt;(defun ems--noaa-get-data (ask)
      &quot;Internal function that gets NOAA data and returns a results
      buffer.&quot;
      (declare (special gweb-my-address))
      (let* ((buffer (get-buffer-create &quot;*NOAA Weather*&quot;))
      (inhibit-read-only  t)
      (date nil)
      (start (point-min))
      (address (when ask (read-from-minibuffer &quot;Address:&quot;)))
      (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 &quot;NOAA Weather For %s&quot;
      address))      (insert (format &quot;* Weather Forecast For
      %s\n\n&quot;
      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
      &quot;** Forecast For %s: %s\n\n%s\n\n&quot;
      .name .shortForecast .detailedForecast)))
      (fill-region start (point)))
      (insert
      (format &quot;\nUpdated at %s\n&quot;
      (ems--noaa-time &quot;%c&quot; .properties.updated))))
      (let-alist ;;; Now produce hourly forecast
      (g-json-from-url (concat (ems--noaa-url geo) &quot;/hourly&quot;))
      (insert
      (format &quot;\n* Hourly Forecast:Updated At %s \n&quot;
      (ems--noaa-time &quot;%c&quot; .properties.updated)))
      (cl-loop
      for p across .properties.periods do
      (let-alist p
      (unless (and date (string= date (ems--noaa-time &quot;%x&quot;
      .startTime)))
      (insert (format &quot;** %s\n&quot; (ems--noaa-time &quot;%A
      %X&quot;      .startTime)))
      (setq date (ems--noaa-time &quot;%x&quot; .startTime)))
      (insert
      (format
      &quot;  - %s %s %s:  Wind Speed: %s Wind Direction: %s\n&quot;
      (ems--noaa-time &quot;%R&quot; .startTime)
      .shortForecast
      .temperature .windSpeed .windDirection)))))
      (goto-char (point-min)))
      buffer))
      &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;In the above_
      /gweb-my-address_ is a Lat/Lng pair as returned by&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;gmaps-geocode&lt;/span&gt;
      defined in &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/g-client/gmaps.el#L89&quot;&gt;g-client/gmaps.el&lt;/a&gt;. That is used as the&lt;br /&gt;
      default location for which we retrieve the forecast.&lt;/li&gt;
      &lt;li&gt;Parameter &lt;span
      class=&quot;underline&quot;&gt;ask&lt;/span&gt; if non-nil results
      in the
      user being prompted&lt;br /&gt;
      for the address &amp;#x2014; that address is then geocoded
      using&lt;br
      /&gt;
      the Google Maps API.&lt;/li&gt;
      &lt;li&gt;The weather forecast display will leverage &lt;span
      class=&quot;underline&quot;&gt;org-mode&lt;/span&gt; for&lt;br /&gt;
      structured navigation; however we dont want that buffer to be&lt;br
      /&gt;
      editable in general; moreover &lt;span
      class=&quot;underline&quot;&gt;special-mode&lt;/span&gt; gives us
      nice&lt;br /&gt;
      features  such as &lt;span
      class=&quot;underline&quot;&gt;q&lt;/span&gt;
      for quitting that window. So we use&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;special-mode&lt;/span&gt; as
      the
      major mode, and &lt;span
      class=&quot;underline&quot;&gt;orgstruct-mode&lt;/span&gt; as a
      minor&lt;br /&gt;
      mode to get the best of both worlds.&lt;/li&gt;
      &lt;li&gt;The API call to NOAA results in a JSON data structure
      where&lt;br /&gt;
      &lt;span
      
      class=&quot;underline&quot;&gt;result.properties.periods&lt;/span&gt;      holds an array of forecast&lt;br /&gt;
      objects. Using that result in &lt;i&gt;let-alist&lt;/i&gt; gives us
      data
      binding&lt;br /&gt;
      for free! Notice the following:&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;We can  use &lt;span
      class=&quot;underline&quot;&gt;.properties.periods&lt;/span&gt; in
      the
      &lt;span class=&quot;underline&quot;&gt;cl-loop&lt;/span&gt; as the
      list&lt;br /&gt;
      to iterate over.&lt;/li&gt;
      &lt;li&gt;Within that loop body, a second
      &lt;i&gt;let-list&lt;/i&gt; 
      enables data&lt;br /&gt;
      binding over the forecast object that we are processing in the&lt;br
      /&gt;loop body.&lt;/li&gt;
      &lt;li&gt;Data accesses inside the loop body are again simple given
      the&lt;br /&gt;
      data binding created by the &lt;i&gt;let-alist&lt;/i&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;The code for generating the hourly forecast is similar in
      spirit
      &amp;#x2014;&lt;br /&gt;
      the main take-away here is that &lt;i&gt;let-alist&lt;/i&gt; saves a
      lot
      of&lt;br /&gt;
      boiler-plate code that would have been otherwise required to
      take&lt;br
      /&gt;
      apart the nested list structure we got back with our data.&lt;br
      /&gt;
      
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1936852790942836877'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1936852790942836877'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/07/data-binding-in-emacs-lisp-let-alist.html' title='Data-Binding In Emacs Lisp: let-alist When Processing JSON Data'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2825901112317370482
    </id>
    <published>
      2017-07-24T18:49:00.002-07:00
    </published>
    <updated>2017-07-24T18:49:57.381-07:00
    </updated>
    <title type='text'>Spatial
      Audio: ALSA Virtual Devices Using LADSPA
    </title>
    <content type='html'>&lt;br /&gt;
      &lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;
      trbidi=&quot;on&quot;&gt;&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Spatial Audio:  ALSA Virtual Devices
      Using      LADSPA&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org6e5a6af&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org6e5a6af&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Overview&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;I have long wanted to apply HRTF
      filters to &lt;a
      
      
      href=&quot;https://emacspeak.blogspot.com/2015/12/soundscapes-on-emacspeak-audio-desktop.html&quot;&gt;soundscapes&lt;/a&gt; on the&lt;br /&gt;
      Emacspeak Audio Desktop to produce effects that are better&lt;br
      /&gt;
      spatialized.  I just got this working over the weekend using
      LADSPA&lt;br
      /&gt;
      Plugin &lt;i&gt;ZamHeadX2-ladspa.so&lt;/i&gt; from package &lt;a
      
      
      href=&quot;https://github.com/zamaudio/zam-plugins.git&quot;&gt;zam-plugins&lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org25e9a57&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org25e9a57&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Getting ZAM
      Plugins&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;pre class=&quot;example&quot;&gt;git
      clone
      https://github.com/zamaudio/zam-plugins.git 
      &lt;/pre&gt;&lt;p&gt;And follow the instructions in the  README
      file.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Next,   do &lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;sudo make install
      &lt;/pre&gt;&lt;p&gt;to install the plugins.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Finally, make sure that the install location is on your
      LADSPA
      path.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org55c948b&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org55c948b&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.1&lt;/span&gt; Adding HRTF
      Virtual  Devices Via ASOUNDRC&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-2-1&quot;&gt;&lt;p&gt;After updating Emacspeak from
      GitHub,&lt;br /&gt;
      open file &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak//blob/2d93e0f92427e4f64064aa75e380fa66bbb87fcf/servers/linux-outloud/asoundrc&quot;&gt;servers/linux-outloud/asoundrc&lt;/a&gt; &lt;br /&gt;
      and copy the section marked &lt;i&gt;HRTF&lt;/i&gt; to your personal
      &lt;span class=&quot;underline&quot;&gt;.asoundrc&lt;/span&gt;
      &amp;#x2014;&lt;br /&gt;
      this defines a number of virtual devices that use the newly
      installed&lt;br /&gt;
      LADSPA plugin.&lt;br /&gt;
      &lt;b&gt;Beware&lt;/b&gt;: Back-up your &lt;span
      class=&quot;underline&quot;&gt;.asoundrc&lt;/span&gt; first and make
      sure
      you can restore&lt;br /&gt;
      it even if you lose speech.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orga3aa9b3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orga3aa9b3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Spatialized
      Soundscapes&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;In a running Emacspeak session, 
      invoke
      command &lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;soundscape-restart
      &lt;/pre&gt;&lt;p&gt;with an interactive prefix arg  and specify one
      of
      the available&lt;br /&gt;
      devices using standard Emacs completion.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;For use with Soundscapes, I recommend one of the devices
      that
      place&lt;br /&gt;
      sound directly in front of the listener (azimuth 0) but with a
      non-0&lt;br /&gt;
      elevation.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The HRTF devices are named with prefix &lt;span
      class=&quot;underline&quot;&gt;tts&lt;/span&gt; because I  would
      like      to&lt;br /&gt;
      use thesee with software TTS; but for now the   result with TTS is
      not&lt;br /&gt;
      as good as it is with Soundscapes.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Notice that command &lt;span
      class=&quot;underline&quot;&gt;soundscape-restart&lt;/span&gt;
      offers a
      number of virtual&lt;br /&gt;
      ALSA devices based on your &lt;span
      class=&quot;underline&quot;&gt;.asoundrc&lt;/span&gt;; see the next
      section for a&lt;br /&gt;
      summary. &lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-org8553b23&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org8553b23&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Virtual ALSA
      Devices
      For Use As A Soundscape Filter&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;Here
      is a list of available LADSPA devices in my setup that can be&lt;br
      /&gt;
      used  to add additional effects to Soundscapes:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;crossfeed:  Apply a
      BS2B      filter.&lt;/li&gt;
      &lt;li&gt;default:  No filters, vanilla audio.&lt;/li&gt;
      &lt;li&gt;tap-reverb:  Reverb filter from package
      tap-plugins.&lt;/li&gt;
      &lt;li&gt;reverb-crossfeed:  Reverb filter followed by
      BS2B.&lt;/li&gt;
      &lt;li&gt;tts-a0-e15:  HRTF at (0, 15).&lt;/li&gt;
      &lt;li&gt;tts-a0-e30:  HRTF at (0, 30).&lt;/li&gt;
      &lt;li&gt;tts-a0-e60:  HRTF at (0, 60).&lt;/li&gt;
      &lt;li&gt;tts-a0-e90:  HRTF at (0, 90).&lt;/li&gt;
      &lt;li&gt;tts-a0-em15:  HRTF at (0, -15).&lt;/li&gt;
      &lt;li&gt;tts-a0-em30:  HRTF at (0, -30).&lt;/li&gt;
      &lt;li&gt;tts-a0-em45:  HRTF at (0, -45).&lt;/li&gt;
      &lt;li&gt;tts-a135-e45:  HRTF at (135, 45).&lt;/li&gt;
      &lt;li&gt;tts-a135-em45:  HRTF at (135, -45).&lt;/li&gt;
      &lt;li&gt;tts-a225-e45:  HRTF at (225, 45).&lt;/li&gt;
      &lt;li&gt;tts-a225-em45:  HRTF at (225, -45).&lt;/li&gt;
      &lt;li&gt;tts-a45-e45:  HRTF at (45, 45).&lt;/li&gt;
      &lt;li&gt;tts-a45-em45:  HRTF at (45, -45).&lt;/li&gt;
      &lt;li&gt;tts-am45-e45:  HRTF at (-45, 45).&lt;/li&gt;
      &lt;li&gt;tts-am45-em45:  HRTF at (-45, -45).&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2a41e7f&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2a41e7f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Other Uses Of
      HRTF
      Devices&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;p&gt;You can experiment with thesee
      devices
      using aplay e.g.:&lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;aplay -Dtts_a0_e0
      filename.wav
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;You can also apply the HRTF Ladspa plugin from within
      &lt;i&gt;MPlayer&lt;/i&gt; when&lt;br /&gt;
      using emacspeak.&lt;br /&gt;
      To try this, use &lt;span class=&quot;underline&quot;&gt;C-e ;
      f&lt;/span&gt; and pick the Zam effect when prompted.&lt;br /&gt;
      Invoke that command with an interactive prefix arg &amp;#x2014;
      &lt;span
      class=&quot;underline&quot;&gt;C-u C-e ; f&lt;/span&gt;&lt;br /&gt;
      &amp;#x2014; to edit the params passed to the Zam filter.&lt;br
      /&gt;      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;HRTF filters  when  playing media are mostly useful to
      position
      a&lt;br /&gt;
      radio station in 3d space when playing  more than one station&lt;br
      /&gt;
      simultaneously.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2825901112317370482'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2825901112317370482'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/07/spatial-audio-alsa-virtual-devices.html' title='Spatial Audio: ALSA Virtual Devices Using LADSPA'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6900192707323048897
    </id>
    <published>
      2017-04-30T08:12:00.002-07:00
    </published>
    <updated>2017-04-30T08:12:17.073-07:00
    </updated>
    <title type='text'>
      Emacspeak 46.0 (HelpfulDog) Unleashed
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak     
      46.0—HelpfulDog—Unleashed!&lt;/h1&gt;&lt;p&gt;&lt;b&gt;For
      Immediate
      Release:&lt;/b&gt;&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;San Jose, Calif., (May  1, 2017)&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak 46.0 (HelpfulDog): Redefining Accessibility In
      The Age
      Of  Smart Assistants&lt;br /&gt;
      &amp;#x2013;Zero cost of Ownership  makes priceless software
      Universally
      affordable!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt; &amp;#x2014; announces the&lt;br /&gt;
      immediate world-wide availability of &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/44.0/emacspeak-45.0.tar.bz2&quot;&gt;Emacspeak 46.0&lt;/a&gt; (HelpfulDog) &amp;#x2014; a&lt;br /&gt;
      powerful audio desktop for leveraging today&#39;s evolving data,
      social&lt;br /&gt;
      and service-oriented Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org04068a8&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org04068a8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      NASDOG:
      ESPK has now been consistently trading over&lt;br /&gt;
      the social net at levels close to that once attained by DogCom&lt;br
      /&gt;high-fliers—and as of May 2017 is trading at levels close
      to&lt;br
      /&gt;
      that achieved by once better known stocks in the tech sector.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org788f812&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org788f812&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      Web-surfing, blogging, social computing and electronic messaging
      into&lt;br /&gt;
      the audio desktop, Emacspeak enables speech access to local and
      remote&lt;br /&gt;
      information with a consistent and well-integrated user interface.
      A&lt;br
      /&gt;
      rich suite of task-oriented tools provides efficient
      speech-enabled&lt;br
      /&gt;
      access to the evolving service-oriented social Internet cloud.&lt;br
      /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc43ee98&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgc43ee98&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;This version
      &lt;b&gt;requires&lt;/b&gt; emacs-25.1 or later. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Audio-formatted
      Mathematics
      using NodeJS.  ⟋🕪&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;DBus integration for
      handling DBus events. 🚌&lt;/li&gt;
      &lt;li&gt;Outloud is Easier To Install On 64-Bit Systems.
      ʕ&lt;/li&gt;
      &lt;li&gt;Managing Shell Buffers across multiple projects.  
      📽&lt;/li&gt;
      &lt;li&gt;EWW loads  EBook  settings when opening EPub files.
      🕮&lt;/li&gt;
      &lt;li&gt;Bash Utils  for power users.    🐚&lt;/li&gt;
      &lt;li&gt;Speech-Enabled Elisp-Refs. 🤞&lt;/li&gt;
      &lt;li&gt;Updated C/C++ Mode Support. ䷢&lt;/li&gt;
      &lt;li&gt;Updated EShell Support. ︹&lt;/li&gt;
      &lt;li&gt;Speach-Enabled Clojure.  𝍏&lt;/li&gt;
      &lt;li&gt;Speech-Enabled Geiser For Scheme Interaction.
      ♨&lt;/li&gt;
      &lt;li&gt;Speech-Enabled Cider. 🍎&lt;/li&gt;
      &lt;li&gt;Speech-Enable Racket IDE. ƛ&lt;/li&gt;
      &lt;li&gt;Parameterized auditory icons using  SoX-Gen.
      🔊&lt;/li&gt;
      &lt;li&gt;IHeart Radio wizard. 📻&lt;/li&gt;
      &lt;li&gt;Speech-Enabled Projectile. 🢫&lt;/li&gt;
      &lt;li&gt;Spoken notifications are cached in a special buffer.
      ⏰&lt;/li&gt;
      &lt;li&gt;Flycheck And Interactive Correction. 𐄂&lt;br /&gt;
      &lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;And a lot more than will
      fit
      this margin. … 🗞&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;/ol&gt;&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org74928bf&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org74928bf&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;&lt;p&gt; 
      Never a toy system, Emacspeak is voluntarily bundled with all&lt;br
      /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free Assistance and social interaction and carries forward
      the&lt;br
      /&gt;
      well-established Open Source tradition of introducing user
      interface&lt;br /&gt;
      features that eventually show up in luser environments.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orge5e01ec&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orge5e01ec&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-5&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; &quot;It is the user
      &amp;#x2013;and not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!&quot;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org067df87&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org067df87&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-5-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org44d04f8&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org44d04f8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      via&lt;br /&gt;
      Git  from GitHub  at &lt;br /&gt;
      &lt;a
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak
      GitHub &lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org40c328f&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org40c328f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 46.0 (HelpfulDog)
      heralds
      the  coming of Smart Assistants.&lt;/li&gt;
      &lt;li&gt;Emacspeak 45.0 (IdealDog) is named in recognition of
      Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgb7e4e38&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgb7e4e38&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org3c51d59&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org3c51d59&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop, and&lt;br
      /&gt;      promises to exercise this freedom to innovate and her
      resulting&lt;br
      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6900192707323048897'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6900192707323048897'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/04/emacspeak-460-helpfuldog-unleashed.html' title='Emacspeak 46.0 (HelpfulDog) Unleashed'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7931447715247066201
    </id>
    <published>
      2017-04-22T20:19:00.004-07:00
    </published>
    <updated>2017-04-22T20:19:38.429-07:00
    </updated>
    <title type='text'>Mail On
      The emacspeak Audio Desktop 
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Email On The Emacspeak Audio
      Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgc57f2b7&quot;     
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgc57f2b7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Overview&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;This question comes up every few
      months
      on the emacspeak mailing&lt;br /&gt;
      list. In general, see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://tvraman.github.io/emacspeak/applications.html&quot;&gt;Emacspeak Tools&lt;/a&gt; to quickly discover available speech-enabled&lt;br /&gt;
      applications. This article outlines some of the available email
      setups&lt;br /&gt;
      given the wide degree of variance in this space.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org472e202&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org472e202&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Background&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;How one puts together an email
      environment is a function of the&lt;br /&gt;
      following:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;How email is
      retrieved.&lt;/li&gt;
      &lt;li&gt;How email is stored (if storing locally).&lt;/li&gt;
      &lt;li&gt;How email is sent.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;Here is an overview of what is available as viewed from the
      world of&lt;br /&gt;
      Linux in general and Emacs in particular: &lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org6bfd003&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org6bfd003&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.1&lt;/span&gt; Email
      Retrieval&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-2-1&quot;&gt;&lt;p&gt;Email can be retrieved in a
      number of
      ways:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;IMap via Emacs This is
      implemented well in GNUS, and poorly in&lt;br /&gt;
      Emacs/VM. Note that Emacs is single-threaded, and fetching
      large&lt;br
      /&gt;
      volumes of email via IMap is painful.&lt;/li&gt;
      &lt;li&gt;Batch Retrieval: IMap Tools like &lt;span
      class=&quot;underline&quot;&gt;fetchmail&lt;/span&gt;, &lt;span
      class=&quot;underline&quot;&gt;offlineimap&lt;/span&gt; and friends
      that
      live&lt;br /&gt;
      outside of Emacs can be used to batch-retrieve email in the&lt;br
      /&gt;
      background. The retrieved mail gets delivered
      &lt;i&gt;locally&lt;/i&gt;
      as in the past.&lt;/li&gt;
      &lt;li&gt;Mail Filtering: UNIX &lt;span
      class=&quot;underline&quot;&gt;procmail&lt;/span&gt; enables
      filtering of
      locally&lt;br /&gt;
      delivered email into separate folders for automatically
      organizing&lt;br
      /&gt;
      incoming email.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc17c2ee&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgc17c2ee&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.2&lt;/span&gt; Sending
      Email&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-2-2&quot;&gt;&lt;p&gt;Sending email involves:&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Composing email
      &amp;#x2014;
      typically invoked  via key-sequence  &lt;span
      class=&quot;underline&quot;&gt;C-x m&lt;/span&gt;&lt;br /&gt;
      (command: &lt;i&gt;compose-mail&lt;/i&gt;). Emacs email packages
      implement&lt;br /&gt;
      specific versions of this command, e.g. &lt;i&gt;vm-mail&lt;/i&gt;
      from
      package&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;emacs/vm&lt;/span&gt;,
      &lt;i&gt;message-mail&lt;/i&gt; from the &lt;span
      class=&quot;underline&quot;&gt;message&lt;/span&gt; package
      etc.&lt;/li&gt;
      &lt;li&gt;Sending email: This is specific to the email provider
      being      used,&lt;br /&gt;
      e.g., &lt;i&gt;GMail&lt;/i&gt;. In the past, UNIX machines could
      talk      &lt;i&gt;SMTP&lt;/i&gt; to&lt;br /&gt;
      the Mail Gateway, but this has mostly disappeared over time.
      For&lt;br
      /&gt;
      an example of how to configure Emacs to send email via GMail&lt;br
      /&gt;
      using SMTP , see file &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/gm-smtp.el#L1&quot;&gt;tvr/gm-smtp.el&lt;/a&gt; in the emacspeak repository.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgc45b6b3&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgc45b6b3&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;2.3&lt;/span&gt; Local Storage
      Format&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-2-3&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;UNIX Mail:       An email
      folder is
      a file of messages. This&lt;br /&gt;
      format is used by clients like Emacs/VM, UNIX Mail etc.&lt;/li&gt;
      &lt;li&gt;Maildir:  A mail folder  is a directory, with&lt;br /&gt;
      individual email messages living in files of their&lt;br /&gt;
      own. Sample clients include MH-E (UNIX MH), MU4E.&lt;/li&gt;
      &lt;li&gt;RMail     This is Emacs&#39; original email
      format.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org49386ea&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org49386ea&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Putting It All
      Together&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;The next sections show my present
      email
      setup put together using the&lt;br /&gt;
      building blocks described above. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;I use Linux on all my
      machines, and Android on my phone.&lt;/li&gt;
      &lt;li&gt;I mostly limit email usage on my phone  to get a quick
      overview
      of email that might require immediate attention &amp;#x2014; toward
      this
      end, I have a &lt;i&gt;to-mobile&lt;/i&gt; GMail label that collects
      urgent messages.&lt;/li&gt;
      &lt;li&gt;Linux is where I handle email in volume.&lt;/li&gt;
      &lt;li&gt;I use my &lt;i&gt;Inbox&lt;/i&gt; as&lt;/li&gt;
      &lt;/ol&gt;&lt;p&gt;my ToDo list &amp;#x2014; which means that I
      leave
      little or no email in my&lt;br /&gt;
      &lt;i&gt;Inbox&lt;/i&gt; unless I&#39;m on vacation and disconnected
      from
      email.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orge0a9247&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orge0a9247&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.1&lt;/span&gt; Desktop:
      Batch      Retrieval  And Emacs/VM&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-3-1&quot;&gt;&lt;p&gt;This
      is the email setup on my workstation. See next section for the&lt;br
      /&gt;email setup while mobile.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;I batch-retrieve  
      email      using &lt;span
      class=&quot;underline&quot;&gt;fetchmail&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;This email gets filtered through &lt;span
      class=&quot;underline&quot;&gt;procmail&lt;/span&gt; and auto-filed
      into&lt;br /&gt;
      several folders based on a set of procmail rules. Typical
      rules&lt;br      /&gt;
      include separating out various email lists into their  respective
      folders.&lt;/li&gt;
      &lt;li&gt;Note that this does not preclude using &lt;span
      class=&quot;underline&quot;&gt;IMap&lt;/span&gt; via GNUS   to 
      read&lt;br /&gt;
      email while online.&lt;/li&gt;
      &lt;li&gt;Email that is not filtered into separate folders  e.g.
      email
      that&lt;br /&gt;
      is sent directly to me, email regarding projects that need&lt;br
      /&gt;
      immediate attention etc., land up in folder &lt;span
      class=&quot;underline&quot;&gt;~/mbox&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;So when I launch &lt;span
      class=&quot;underline&quot;&gt;emacs/vm&lt;/span&gt; on my desktop,
      the
      above is all I&lt;br /&gt;
      need to deal with at any given moment.&lt;/li&gt;
      &lt;li&gt;I typically read Auto-filed mailing lists  using &lt;span
      class=&quot;underline&quot;&gt;emacs/vm&lt;/span&gt; about once a
      day      or&lt;br /&gt;
      less &amp;#x2014; I use package &lt;span
      class=&quot;underline&quot;&gt;mspools&lt;/span&gt;  to get a quick
      overview of the&lt;br /&gt;
      state of those mail folders.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgd7ebcf5&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgd7ebcf5&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.2&lt;/span&gt; Mobile
      AccessOn
      Laptop: GNUS And IMap&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-3-2&quot;&gt;&lt;p&gt;See  &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/gnus-prepare.el#L1&quot;&gt;gnus-prepare.el&lt;/a&gt; for my &lt;span class=&quot;underline&quot;&gt;gnus&lt;/span&gt; configuration for accessing GMail&lt;br /&gt;
      via &lt;span class=&quot;underline&quot;&gt;imap&lt;/span&gt;. That
      configuration is setup to access multiple GMail accounts.&lt;br
      /&gt;      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;I see each GMail label
      as a
      separate group in &lt;span
      class=&quot;underline&quot;&gt;GNUS&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;I only sync  high-priority labels &amp;#x2014; this works
      well
      even&lt;br /&gt;
      over slow WIFI connections while on the road. As an example,
      the&lt;br
      /&gt;
      afore-mentioned &lt;i&gt;to-mobile&lt;/i&gt; GMail label is a
      high-priority group.&lt;/li&gt;
      &lt;li&gt;Module &lt;span
      class=&quot;underline&quot;&gt;gm-nnir&lt;/span&gt; defines a 
      &lt;span
      class=&quot;underline&quot;&gt;GNUS/GMail&lt;/span&gt; extension
      that      enables&lt;br /&gt;
      one to search GMail using GMail&#39;s search operators &amp;#x2014;
      that
      is my&lt;br /&gt;
      preferred means of quickly finding email messages using&lt;br /&gt;
      search. This is very fast since the search happens
      server-side,&lt;br      /&gt;
      and  only email headers are retrieved when displaying the
      search&lt;br
      /&gt;
      hits.&lt;/li&gt;
      &lt;li&gt;Note that this solution is not laptop/mobile specific
      &amp;#x2014; I  use&lt;br /&gt;
      this setup for searching GMail   from my desktop as well.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgea285cc&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgea285cc&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.3&lt;/span&gt; Composing And
      Sending EMail&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-3-3&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;I
      use &lt;i&gt;compose-mail&lt;/i&gt; to compose email.&lt;/li&gt;
      &lt;li&gt;I optionally activate &lt;span
      class=&quot;underline&quot;&gt;orgtbl-mode&lt;/span&gt; and/or 
      &lt;span
      class=&quot;underline&quot;&gt;orgstruct-mode&lt;/span&gt; if&lt;br
      /&gt;
      editing structured content within the email body.&lt;/li&gt;
      &lt;li&gt;I send email out using the setup in  &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/gm-smtp.el#L1&quot;&gt;gm-smtp.el&lt;/a&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org9b97991&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org9b97991&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt;
      Conclusion&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;Email in Linux/Emacs  is 
      composed
      of a set of&lt;br /&gt;
      independent building blocks &amp;#x2014; this gives maximal
      flexibility.&lt;/li&gt;
      &lt;li&gt;That flexibility allows one to put together different
      email&lt;br /&gt;
      workflows depending on the connectivity environment in
      use.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7931447715247066201'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7931447715247066201'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/04/mail-on-emacspeak-audio-desktop.html' title='Mail On The emacspeak Audio Desktop '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3929777056515885596
    </id>
    <published>
      2017-03-01T09:24:00.001-08:00
    </published>
    <updated>2017-03-01T09:24:56.402-08:00
    </updated>
    <title type='text'>Emacs:
      Check Interactive Call For Emacspeak
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacs: Check Interactive Call For
      Emacspeak&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org56178b1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org56178b1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Background&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Emacspeak uses advice as the means
      to
      speech-enable Emacs.&lt;br /&gt;
      Emacspeak&#39;s &lt;b&gt;advice&lt;/b&gt; forms  need to check if
      the      function being&lt;br /&gt;
      speech-enabled is being called interactively &amp;#x2014; otherwise
      one
      would&lt;br /&gt;
      get a lot of chatter as thesee functions get called from within
      elisp&lt;br /&gt;
      programs, e.g. functions like &lt;span
      class=&quot;underline&quot;&gt;forward-sexp&lt;/span&gt; or &lt;span
      class=&quot;underline&quot;&gt;kill-sexp&lt;/span&gt;, that
      play&lt;br
      /&gt;
      the dual role of both an interactive command, as well as a
      convenient&lt;br /&gt;
      elisp function.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;Until Emacs 24, the solution used was to write code   that
      did
      the&lt;br /&gt;
      following check:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;(when (interactive-p) ...
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;In Emacs-24, &lt;span
      class=&quot;underline&quot;&gt;interactive-p&lt;/span&gt; was made
      obsolete and replaced with &lt;br /&gt;
      &lt;/p&gt;&lt;pre
      class=&quot;example&quot;&gt;(called-interactively-p
      &#39;interactive)
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak initially used the above form to perform the
      equivalent&lt;br /&gt;
      check. However, around the same time, Emacs&#39;
      &lt;b&gt;advice&lt;/b&gt; implementation&lt;br /&gt;
      went through some changes, and there was an attempt to replace&lt;br
      /&gt;&lt;b&gt;advice.el&lt;/b&gt; with
      &lt;b&gt;nadvice.el&lt;/b&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the end of that round of changes, some problems emerged
      with
      the&lt;br /&gt;
      new &lt;span
      class=&quot;underline&quot;&gt;called-interactively-p&lt;/span&gt;
      implementation; specifically, calling&lt;br /&gt;
      :called-interactively-p_ within &lt;span
      class=&quot;underline&quot;&gt;around&lt;/span&gt; advice forms
      resulted
      in hard&lt;br /&gt;
      to debug errors, including one case of infinite recursion 
      involving&lt;br /&gt;
      library &lt;b&gt;smie.el&lt;/b&gt; when invoked from within &lt;span
      class=&quot;underline&quot;&gt;ruby-mode&lt;/span&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;After studying the problem in depth in 2014, I decided to
      create
      an&lt;br /&gt;
      Emacspeak-specific implementation of the &lt;span
      class=&quot;underline&quot;&gt;is-interactive&lt;/span&gt;
      check.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The resulting implementation has worked well for the last
      30      months;&lt;br /&gt;
      this article is here mostly to document how it works, and the
      reason&lt;br /&gt;
      for its existence. Note that Emacspeak uses this custom
      predicate&lt;br
      /&gt;
      &lt;b&gt;only&lt;/b&gt; within &lt;span
      class=&quot;underline&quot;&gt;advice&lt;/span&gt; forms. Further,
      this
      predicate has been coded&lt;br /&gt;
      to only work within &lt;span
      class=&quot;underline&quot;&gt;advice&lt;/span&gt; forms created by
      &lt;span class=&quot;underline&quot;&gt;emacspeak&lt;/span&gt;.
      This&lt;br /&gt;
      constraint can likely be relaxed, but the tighter implementation
      is&lt;br
      /&gt;
      less risky.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgbf6c7c7&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgbf6c7c7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Implementation
      &amp;#x2014;  &lt;span
      
      
      class=&quot;underline&quot;&gt;ems-interactive-p&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;&lt;/div&gt;&lt;div id=&quot;outline-container-orge4c53de&quot; class=&quot;outline-3&quot;&gt;&lt;h3 id=&quot;orge4c53de&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;2.1&lt;/span&gt; Overview&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-1&quot;&gt;&lt;p&gt;Within an &lt;span class=&quot;underline&quot;&gt;advice&lt;/span&gt; forms defined by Emacspeak, detect if the enclosing&lt;br /&gt;
      function call is the result of explicit user interaction, i.e.
      by&lt;br
      /&gt;
      pressing a key, or via an explicit call to&lt;br /&gt;
      &lt;span
      class=&quot;underline&quot;&gt;call-interactively&lt;/span&gt;.
      Emacspeak produces auditory feedback only if&lt;br /&gt;
      this predicate returns &lt;span
      class=&quot;underline&quot;&gt;t&lt;/span&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;We first introduce a flag that will be used to record if
      the      enclosing&lt;br /&gt;
      (containing) function has an Emacspeak-defined advice on it and
      is&lt;br
      /&gt;
      called interactively &amp;#x2014; thesee are the only cases that our
      predicate&lt;br /&gt;
      needs to test.&lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;(defvar
      ems-called-interactively-p nil
      &quot;Flag that records if containing function was called
      interactively.&quot;
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;Next, we define a function that checks if interactive calls
      to
      a&lt;br /&gt;
      function should be recorded. We&#39;re only interested in functions
      that&lt;br /&gt;
      have an &lt;span class=&quot;underline&quot;&gt;advice&lt;/span&gt;
      form
      defined by Emacspeak &amp;#x2014; all Emacspeak-defined&lt;br /&gt;
      advice forms have the name &lt;span
      class=&quot;underline&quot;&gt;emacspeak&lt;/span&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;(defun ems-record-interactive-p
      (f)
      &quot;Predicate to test if we need to record interactive calls of
      this function. Memoizes result for future use by placing a
      property &#39;emacspeak on the function symbol.&quot;
      (cond
      ((not (symbolp f)) nil)
      ((get f &#39;emacspeak) t) ; already memoized
      ((ad-find-some-advice f &#39;any  &quot;emacspeak&quot;) ; there is
      an
      emacspeak advice
      (put f &#39;emacspeak t)) ; memoize for future and return true
      (t nil)))
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;This is a memoized function that remembers earlier
      invocations
      by&lt;br /&gt;
      setting property &lt;span
      class=&quot;underline&quot;&gt;emacspeak&lt;/span&gt; on the
      function      symbol.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;All &lt;span
      class=&quot;underline&quot;&gt;advice&lt;/span&gt;
      forms created by Emacspeak are named &lt;span
      class=&quot;underline&quot;&gt;emacspeak&lt;/span&gt;, so we&lt;br
      /&gt;
      can test for the presence of such advice forms using the test:&lt;br
      /&gt;&lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;(ad-find-some-advice f &#39;any
            &quot;emacspeak&quot;)
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;If this test returns &lt;span
      class=&quot;underline&quot;&gt;T&lt;/span&gt;, we memoize the result
      and
      return it.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Next, we advice function &lt;span
      class=&quot;underline&quot;&gt;call-interactively&lt;/span&gt; to
      check 
      &lt;br /&gt;
      if the function being called interactively is one of the
      functions&lt;br
      /&gt;
      that has been advised by Emacspeak. If so, we record the fact in 
      the&lt;br /&gt;
      previously declared global flag &lt;br /&gt;
      &lt;span
      
      
      class=&quot;underline&quot;&gt;ems-called-interactively-p&lt;/span&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;(defadvice call-interactively
      (around emacspeak  pre act comp)
      &quot;Set emacspeak  interactive flag if there is an Emacspeak
      advice 
      on the function being called.&quot;
      (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))
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;We define an equivalent advice form on function&lt;br /&gt;
      &lt;span
      class=&quot;underline&quot;&gt;funcall-interactively&lt;/span&gt; as
      well. Now, whenever any function that has&lt;br /&gt;
      been advised by Emacspeak is called interactively, that
      interactive&lt;br
      /&gt;
      call gets recorded in the global flag. In the custom Emacspeak&lt;br
      /&gt;predicate we define, we check the value of this flag, and
      if&lt;br
      /&gt;
      set, consume it, i.e. unset the flag and return &lt;span
      class=&quot;underline&quot;&gt;T&lt;/span&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;(defsubst ems-interactive-p ()
      &quot;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.&quot;
      (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 
      &#39;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))))
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;The only fragile part of the above predicate is the call
      to&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;backtrace-frame&lt;/span&gt;
      which we use to discover the name of the enclosing&lt;br /&gt;
      function. Notice however that this is no more fragile than the
      current&lt;br /&gt;
      implementation of &lt;span
      class=&quot;underline&quot;&gt;called-interactively-p&lt;/span&gt;
      &amp;#x2014; which also uses&lt;br /&gt;
      &lt;span
      class=&quot;underline&quot;&gt;backtrace-frame&lt;/span&gt;; If
      there are changes in the byte-compiler, this&lt;br /&gt;
      form may need to be updated. The implementation above has the&lt;br
      /&gt;
      advantage of working correctly for Emacspeak&#39;s specific
      use-case.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3929777056515885596'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3929777056515885596'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/03/emacs-check-interactive-call-for.html' title='Emacs: Check Interactive Call For Emacspeak'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1299713174330353715
    </id>
    <published>
      2017-02-10T11:22:00.000-08:00
    </published>
    <updated>2017-02-10T11:22:27.544-08:00
    </updated>
    <title type='text'>Audio
      Deja Vu: Audio Formatted Math On The Emacspeak Desktop
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Audio
      Deja Vu: Audio Formatted Math On The Emacspeak
      Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orge11e00b&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orge11e00b&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Overview&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;This article previews a new
      feature in
      the next Emacspeak release  — &lt;br /&gt;
      audio-formatted Mathematics using Aural CSS. &lt;a
      href=&quot;http://www.cs.bham.ac.uk/~vxs&quot;&gt; Volker
      Sorge&lt;/a&gt;
      worked&lt;br /&gt;
      at Google as a Visiting Scientist from Sep 2012 to August 2013,
      when&lt;br /&gt;
      we implemented &lt;a
      
      
      href=&quot;https://www.youtube.com/watch?v=YyWu9HB9QtU&quot;&gt;math&lt;br /&gt;
      access in ChromeVox&lt;/a&gt;  —  see &lt;a
      
      
      href=&quot;http://allthingsd.com/20130604/t-v-ramans-audio-deja-vu-from-google-a-math-reading-system-for-the-web/&quot;&gt;this brief overview&lt;/a&gt;. Since leaving&lt;br /&gt;
      Google, Volker has refactored and extended his work to create an
      Open&lt;br /&gt;
      Source &lt;a
      
      
      href=&quot;https://github.com/zorkow/speech-rule-engine&quot;&gt;Speech-Rule-Engine&lt;/a&gt; implemented using NodeJS. This&lt;br /&gt;
      speech-rule-engine can be used in many different environments;&lt;br
      /&gt;Emacspeak leverages that work to enable audio-formatting
      and&lt;br
      /&gt;
      interactive browsing of math content.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org077db06&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org077db06&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Overview Of
      Functionality&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Math access on the Emacspeak
      desktop is
      implemented via module&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/lisp/emacspeak-maths.el#L558&quot;&gt;emacspeak-maths.el&lt;/a&gt;  —  see &lt;a href=&quot;https://github.com/tvraman/emacspeak/blob/master/js/node/Readme.org#L40&quot;&gt;js/node/Readme.org&lt;/a&gt; in the Emacspeak GitHub&lt;br /&gt;
      repository for setup instructions. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Once loaded, module
      &lt;code&gt;emacspeak-maths&lt;/code&gt;      provides a
      &lt;i&gt;Math Navigator&lt;/i&gt; that&lt;br /&gt;
      implements the user interface for sending Math expressions to
      the&lt;br
      /&gt;
      Speech-Rule-Engine, and for interactively browsing the
      resulting&lt;br
      /&gt;
      structure. At each step of the interaction, Emacspeak receives
      math&lt;br
      /&gt;
      expressions that have been annotated with Aural CSS and
      produces&lt;br
      /&gt;
      audio-formatted output. The audio-formatted text can itself be&lt;br
      /&gt;navigated in a special &lt;i&gt;&lt;b&gt;Spoken
      Math&lt;/b&gt;&lt;/i&gt; emacs buffer.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Module &lt;code&gt;emacspeak-maths.el&lt;/code&gt;
      implements
      various affordances for&lt;br /&gt;
      dispatching mathematical content to the Speech-Rule-Engine  — 
      see&lt;br /&gt;
      usage examples in the next section.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org01ccc81&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org01ccc81&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Usage
      Examples&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-org902c07f&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org902c07f&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.1&lt;/span&gt; The Emacspeak
      Maths Navigator&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-3-1&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;The &lt;i&gt;maths
      navigator&lt;/i&gt; can be invoked by pressing &lt;span
      class=&quot;underline&quot;&gt;S-SPC&lt;/span&gt; (hold&lt;br /&gt;
      down Windows key and press SPC)   —  this runs the command
      &lt;span      
      
      class=&quot;underline&quot;&gt;emacspeak-maths-navigator/body&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;Once invoked, the /Maths Navigator can be used to enter
      an&lt;br /&gt;
      expression to read.&lt;/li&gt;
      &lt;li&gt;Pressing &lt;span
      class=&quot;underline&quot;&gt;SPC&lt;/span&gt; again prompts for
      the      LaTeX math expression.&lt;/li&gt;
      &lt;li&gt;Pressing  &lt;span
      class=&quot;underline&quot;&gt;RET&lt;/span&gt; guesses the
      expression to
      read from the current context.&lt;/li&gt;
      &lt;li&gt;The arrow keys navigate the expression being
      read.&lt;/li&gt;
      &lt;li&gt;Pressing &lt;span
      class=&quot;underline&quot;&gt;o&lt;/span&gt;
      switches to the &lt;i&gt;&lt;b&gt;Spoken Math&lt;/b&gt;&lt;/i&gt;
      buffer
      and exits the&lt;br /&gt;
      navigator.&lt;/li&gt;
      &lt;/ul&gt;&lt;br /&gt;
      &lt;p&gt;See the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/manual/emacspeak_002dmaths.html#emacspeak_002dmaths&quot;&gt;relevant chapter&lt;/a&gt; in the online Emacspeak manual for details.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org1a9896c&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org1a9896c&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.2&lt;/span&gt; Math Content
      In
      LaTeX Documents&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-3-2&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;Open a LaTeX document
      containing
      math content.&lt;/li&gt;
      &lt;li&gt;Move point to a line containing   mathematical
      markup.&lt;/li&gt;
      &lt;li&gt;Press &lt;span
      class=&quot;underline&quot;&gt;S-SPC&lt;/span&gt; &lt;span
      class=&quot;underline&quot;&gt;RET&lt;/span&gt; to have that
      expression
      audio-formatted.&lt;/li&gt;
      &lt;li&gt;Use arrow keys to navigate the resulting
      structure.&lt;/li&gt;
      &lt;li&gt;Press any other key to exit the navigator.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2a619d9&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org2a619d9&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.3&lt;/span&gt; Math Content
      On
      Wikipedia&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-3-3&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;Open a Wikipedia page in the
      Emacs
      Web Wowser (EWW) that has&lt;br /&gt;
      mathematical content.&lt;/li&gt;
      &lt;li&gt;Wikipedia displays math as images, with the alt-text
      giving      the&lt;br /&gt;
      LaTeX representation.&lt;/li&gt;
      &lt;li&gt;Navigate to some math content on the page, then press
      &lt;span
      class=&quot;underline&quot;&gt;S-SPC&lt;/span&gt;&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;a&lt;/span&gt; to speak that
      content  —  &lt;span class=&quot;underline&quot;&gt;a&lt;/span&gt;
      is
      for alt.&lt;/li&gt;
      &lt;li&gt;As an example, navigate to &lt;a
      
      href=&quot;https://en.wikipedia.org/wiki/Derangement&quot;&gt;Wikipedia
      Math Example&lt;/a&gt;, locate math expressions on that page,
      then&lt;br
      /&gt;
      press &lt;span class=&quot;underline&quot;&gt;S-SPC
      a&lt;/span&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org89e3330&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;org89e3330&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;3.4&lt;/span&gt; Math Content
      From
      The Emacs Calculator&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-3-4&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;The built-in Emacs Calculator
      (&lt;code&gt;calc&lt;/code&gt;) provides  many complex&lt;br /&gt;
      math functions including symbolic algebra.&lt;/li&gt;
      &lt;li&gt;For my personal &lt;code&gt;calc&lt;/code&gt; setup, see 
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/tvr/calc-prepare.el#L25&quot;&gt;tvr/calc-prepare.el&lt;/a&gt; in the&lt;br /&gt;
      Emacspeak GitHub repo.&lt;/li&gt;
      &lt;li&gt;This setting below sets up the Emacs Calculator to output
      results&lt;br /&gt;
      as LaTeX: &lt;span class=&quot;underline&quot;&gt;(setq
      calc-language      &#39;tex)&lt;/span&gt;&lt;/li&gt;
      &lt;li&gt;With the above setting in effect, launch the emacs
      Calculator
      by&lt;br /&gt;
      pressing &lt;span
      class=&quot;underline&quot;&gt;M-##&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;Press &lt;span
      class=&quot;underline&quot;&gt;&#39;&lt;/span&gt; — to use
      algebraic
      mode —  and enter &lt;code&gt;sin(x)&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Press &lt;span class=&quot;underline&quot;&gt;a
      t&lt;/span&gt;
      to get the Taylor series expansion of the above&lt;br /&gt;
      expression, and press &lt;span
      class=&quot;underline&quot;&gt;x&lt;/span&gt; when prompted for the
      variable.&lt;/li&gt;
      &lt;li&gt;This displays the Taylor Series expansion up to the
      desired&lt;br /&gt;
      number of terms  —  try &lt;span
      class=&quot;underline&quot;&gt;7&lt;/span&gt; terms.&lt;/li&gt;
      &lt;li&gt;Now, with Calc having shown the results as TeX, press
      &lt;span
      class=&quot;underline&quot;&gt;S-SPC&lt;/span&gt;&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;RET&lt;/span&gt; to browse
      this
      expression using the &lt;i&gt;Maths Navigator&lt;/i&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org2deefc5&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2deefc5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; And The Best Is
      Yet
      To Come&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;This is intentionally called an
      &lt;i&gt;early preview&lt;/i&gt; because there is still&lt;br /&gt;
      much that can be improved:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Enhance the rule engine
      to
      infer and convey more semantics.&lt;/li&gt;
      &lt;li&gt;Improved audio formatting rules to better present the
      available
      information.&lt;/li&gt;
      &lt;li&gt;Update/tune the use of Aural CSS properties to best
      leverage&lt;br /&gt;
      today&#39;s TTS engines.&lt;/li&gt;
      &lt;li&gt;Integrate math-reading functionality into more usage
      contexts
      in&lt;br /&gt;
      addition to the ones enumerated in this article.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org5287b6e&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5287b6e&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt;
      References&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;&lt;a
      
      href=&quot;https://www.youtube.com/watch?v=YyWu9HB9QtU&quot;&gt;Youtube
      Video from early 2013 demonstrating Math Access in
      Chrome&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;http://allthingsd.com/20130604/t-v-ramans-audio-deja-vu-from-google-a-math-reading-system-for-the-web/&quot;&gt;AllThings Digital&lt;/a&gt;  outlining math access  —  published June 2013.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;https://github.com/zorkow/emacs-math-speak/blob/master/paper/assets16.tex&quot;&gt;Assets 2016&lt;/a&gt; publication describing this work.&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/js/node/aster-math-examples.tex&quot;&gt;js/node/aster-math-examples.tex&lt;/a&gt; Collection of math examples in&lt;br /&gt;
      LaTeX from AsTeR. Used to progressively improve speech-rules
      and&lt;br
      /&gt;
      the resulting audio-formatted output&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;https://github.com/zorkow/speech-rule-engine&quot;&gt;Speech-Rule-Engine&lt;/a&gt; on github.&lt;/li&gt;
      &lt;li&gt;Speech-Rule-Engine in action:  &lt;a
      
      
      href=&quot;https://www.mathjax.org/mathjax-accessibility-extensions-v1-now-available/&quot;&gt;Accessible Maths in all browsers&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: 2017-02-08 Wed 00:00&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: T.V
      Raman&lt;/p&gt;&lt;/div&gt;&lt;br
      /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1299713174330353715'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1299713174330353715'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/02/audio-deja-vu-audio-formatted-math-on.html' title='Audio Deja Vu: Audio Formatted Math On The Emacspeak Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5333731054405976919
    </id>
    <published>
      2017-01-04T11:09:00.001-08:00
    </published>
    <updated>2017-01-04T11:13:59.260-08:00
    </updated>
    <title type='text'>Fun With
      TTS (Voxin) And Ladspa
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Fun With
      TTS
      (Voxin) And Ladspa&lt;/h1&gt;&lt;div
      id=&quot;outline-container-org2e8f78d&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2e8f78d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Voxin 1.6 &amp;#x2014; AKA
      ViaVoice      Outloud &amp;#x2014; no longer requires that the&lt;br
      /&gt;
      Emacspeak TTS server be built as a 32-bit binary. This means
      that&lt;br
      /&gt;
      installing Voxin on 64-bit systems is now significantly easier
      since&lt;br /&gt;
      you no longer need to install 32-bit versions of TCL, TCLX, and
      the&lt;br
      /&gt;
      dependencies  needed by library &lt;span
      class=&quot;underline&quot;&gt;libibmeci.so&lt;/span&gt;. In
      addition      to&lt;br /&gt;
      easing the installation process, not needing 32-bit binaries
      means&lt;br
      /&gt;
      that the Emacspeak Outloud server can now take advantage of
      audio&lt;br
      /&gt;
      processing such as that provided by LADSPA.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org5150d58&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org5150d58&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Going 64-Bit:
      Upgrading To Voxin 1.6&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;Install Voxin-1.6 or later
      from      &lt;a
      
      
      href=&quot;https://voxin.oralux.net/update/voxin-update-1.6.tgz&quot;&gt;Voxin&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Update Emacspeak from GitHub (this will be part of the
      next&lt;br /&gt;
      public release).&lt;/li&gt;
      &lt;li&gt;Rebuild the &lt;span
      class=&quot;underline&quot;&gt;atcleci.so&lt;/span&gt; binary in the
      &lt;span
      
      class=&quot;underline&quot;&gt;servers/linux-outloud&lt;/span&gt;&lt;br
      /&gt;
      directory:&lt;/li&gt;
      &lt;/ol&gt;&lt;pre class=&quot;example&quot;&gt;cd
      servers/linux-outloud
      &amp;amp;&amp;amp; make clean &amp;amp;&amp;amp; make
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;If all goes well, you&#39;ll now have a 64-bit version of
      &lt;span
      class=&quot;underline&quot;&gt;atcleci.so&lt;/span&gt;.&lt;br
      /&gt;
      You can now run the Outloud server as &lt;span
      class=&quot;underline&quot;&gt;servers/outloud&lt;/span&gt;.&lt;br
      /&gt;
      In about a year&#39;s time,  &lt;span
      class=&quot;underline&quot;&gt;servers/32-outloud&lt;/span&gt; will
      move
      to&lt;br /&gt;
      &lt;span
      class=&quot;underline&quot;&gt;servers/obsolete&lt;/span&gt;, as
      will the associated &lt;span
      
      
      class=&quot;underline&quot;&gt;servers/32-speech-server&lt;/span&gt;&lt;br /&gt;
      and &lt;span
      
      class=&quot;underline&quot;&gt;servers/ssh-32-outloud&lt;/span&gt;.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org9a57fc2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org9a57fc2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Applying LADSPA
      Effects Processing To TTS&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;With a
      64-bit build of &lt;span
      class=&quot;underline&quot;&gt;atcleci.so&lt;/span&gt; in place, we
      can
      now call on&lt;br /&gt;
      installed LADSPA plugins to apply digital sound processing to 
      TTS&lt;br
      /&gt;
      output.  To experiment with  the possibilities, see some of
      the&lt;br      /&gt;
      virtual sound devices defined in &lt;span
      
      
      class=&quot;underline&quot;&gt;servers/linux-outloud/asoundrc&lt;/span&gt;.&lt;br /&gt;
      Copy over that file to your &lt;span
      class=&quot;underline&quot;&gt;~/.asoundrc&lt;/span&gt; after
      updating it
      to match&lt;br /&gt;
      your sound setup &amp;#x2014; you&#39;ll likely need to change the
      default&lt;br /&gt;
      sound-card to match your setup.&lt;br /&gt;
      You can now set environment variable
      &lt;code&gt;ALSA_DEFAULT&lt;/code&gt; to one of  the&lt;br /&gt;
      &lt;code&gt;tts_&amp;lt;effect&amp;gt;&lt;/code&gt; virtual devices
      &amp;#x2014; and have the Outloud server apply&lt;br /&gt;
      the specified LADSPA effect to the generated TTS. Here is an
      example:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;cd servers 
      (export ALSA_DEFAULT=tts_reverb; ./outloud)
      tts_selftest
      &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgad06121&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgad06121&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; The Best Is Yet
      To
      Come &amp;#x2026;&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;The possibilities are endless
      &amp;#x2014; ALSA with LADSPA provides a rich&lt;br /&gt;
      suite of audio processing possibilities.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org8489d49&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org8489d49&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt;
      Acknowledgements&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;p&gt;I&#39;d like to acknowledge &lt;a
      href=&quot;https://github.com/Oralux/libvoxin&quot;&gt;Gilles Casse
      &lt;/a&gt; for his work over the years on&lt;br /&gt;
      ensuring that Linux users have access to good quality TTS.
      Outloud&lt;br
      /&gt;
      would have been dead a long time ago if it weren&#39;t for his
      continued&lt;br /&gt;
      efforts toward keeping the lights on. His newest creation, &lt;span
      class=&quot;underline&quot;&gt;libvoxin&lt;/span&gt;&lt;br /&gt;
      that forms the crux of Voxin-1.6 is an excellent piece of
      engineering&lt;br /&gt;
      that is likely to help Outloud survive for the future on modern
      Linux&lt;br /&gt;
      distros. Note that Gilles is also the primary author of the
      Emacspeak&lt;br /&gt;
      ESpeak server.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5333731054405976919'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5333731054405976919'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2017/01/fun-with-tts-voxin-and-ladspa.html' title='Fun With TTS (Voxin) And Ladspa'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7506835408639025840
    </id>
    <published>
      2016-11-29T15:01:00.000-08:00
    </published>
    <updated>2016-11-29T15:06:20.859-08:00
    </updated>
    <title type='text'>
      Follow-Up: Soundscapes On The Emacspeak Audio Desktop
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Follow-Up:
      Soundscapes On The Emacspeak Audio Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgf3ef09d&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgf3ef09d&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Nearly a year ago, I &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2015/12/soundscapes-on-emacspeak-audio-desktop.html&quot;&gt;blogged here&lt;/a&gt; about Soundscapes on the emacspeak&lt;br /&gt;
      Audio Desktop. That article ended with this following
      paragraph:&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;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.
      &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org69a9232&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org69a9232&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; And Nearly A
      Year
      Later &amp;#x2026;&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-2&quot;&gt;&lt;p&gt;I have not found the need to turn
      off
      Soundscapes in Emacspeak. As&lt;br /&gt;
      conjectured, it has definitely increased my productivity,
      specifically&lt;br /&gt;
      in terms of staying focused on a given task at hand. Over the
      year,&lt;br
      /&gt;
      I&#39;ve also augmented the emacspeak Audio Desktop with support
      for&lt;br /&gt;
      binaural audio — see module &lt;code&gt;sox-gen&lt;/code&gt; —
      which
      provides a collection of&lt;br /&gt;
      binaural themes for use during different times of the day.
      Binaural&lt;br
      /&gt;
      themes generated by that module overlay Emacspeak Soundscapes
      to&lt;br
      /&gt;
      provide an ideal auditory environment for use over headphones.&lt;br
      /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org18030cb&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org18030cb&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Soundscape
      Enhancements&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Since the publication of the
      original
      article, Emacspeak Soundscapes&lt;br /&gt;
      have been enhanced with additional sounds from&lt;br /&gt;
      &lt;a
      href=&quot;http://freesound.org&quot;&gt;Freesound.org&lt;/a&gt;.
      Emacspeak Soundscapes have been updated to take&lt;br /&gt;
      advantage of Boodler&#39;s limited abilities in the areas of
      spatial&lt;br /&gt;
      positioning. I typically use &lt;code&gt;Soundscapes&lt;/code&gt;
      with
      one of several virtual&lt;br /&gt;
      ALSA devices that have been configured to apply different
      Ladspa&lt;br
      /&gt;
      effects such as &lt;i&gt;reverb&lt;/i&gt; or
      &lt;i&gt;crossfeed&lt;/i&gt;
      depending on the ambient&lt;br /&gt;
      environment where I am working &amp;#x2014; this significantly
      improves
      the&lt;br /&gt;
      spatialization of soundscapes being played &amp;#x2014; see
      file&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/scapes/ladspa-asoundrc#L1&quot;&gt;ladspa-asoundrc&lt;/a&gt;. Finally, the mapping of Soundscapes to various Emacs&lt;br /&gt;
      modes has also been tuned. &amp;#x2014; see table below.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;table border=&quot;2&quot; cellspacing=&quot;0&quot;
      cellpadding=&quot;6&quot; rules=&quot;groups&quot;
      frame=&quot;hsides&quot;&gt;
      
      &lt;colgroup&gt;
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      &lt;/colgroup&gt;
      &lt;tbody&gt;
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Soundscape (Mood)&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;List Of Major Modes&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;BirdSongs&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;shell term&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;BlopEchoes&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;elfeed-search&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Bonfire&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;calendar diary&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;BuddhaLoop&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;comint&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Cavern&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;prog&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;ChangingLoops&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;special&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;ChangingLoopsPitches&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;lisp-interaction&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Drip&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;message gnus-summary
      gnus-article
      gnus-group mspools vm-presentation vm mail twittering jabber-roster
      jabber-chat erc&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;LoopStew&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;emacspeak-m-player&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;NoStormYet&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;fundamental&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;RainForever&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Info help Man Custom
      messages-buffer&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;RainSounds&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;magit vc&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Still&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;text view&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;SurfWaves&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;w3 eww&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;TonkSpace&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;tabulated-list&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;WaterFlow&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;dired&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org2da2aea&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2da2aea&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt;
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;As outlined in a previous article,
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2016/02/augmented-headphone-listening-on-linux.html&quot;&gt; sound on Linux&lt;/a&gt; provides unending&lt;br /&gt;
      possibilities with respect to innovation, here&#39;s looking forward
      to&lt;br /&gt;
      better things to come.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7506835408639025840'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7506835408639025840'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2016/11/follow-up-soundscapes-on-emacspeak.html' title='Follow-Up: Soundscapes On The Emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5460777600046934416
    </id>
    <published>
      2016-11-20T08:43:00.001-08:00
    </published>
    <updated>2016-11-20T08:43:03.277-08:00
    </updated>
    <title type='text'>
      Emacspeak 45.0 (IdealDog) Unleashed!
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak
      45.0—IdealDog—Unleashed!&lt;/h1&gt;&lt;p&gt;&lt;b&gt;For
      Immediate
      Release:&lt;/b&gt;&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;San Jose, Calif., (Nov  21, 2016)&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak:  Redefining Accessibility In The Era Of
      (Real)Intelligent  Computing &lt;br /&gt;
      &amp;#x2013;Zero cost of Ownership  makes priceless software
      Universally
      affordable!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) &amp;#x2014; &lt;a
      
      
      href=&quot;http://github.com/tvraman/emacspeak&quot;&gt;http://github.com/tvraman/emacspeak&lt;/a&gt; &amp;#x2014; announces the&lt;br /&gt;
      immediate world-wide availability of &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/44.0/emacspeak-45.0.tar.bz2&quot;&gt;Emacspeak 45.0&lt;/a&gt; (IdealDog) &amp;#x2014; a&lt;br /&gt;
      powerful audio desktop for leveraging today&#39;s evolving data,
      social&lt;br /&gt;
      and service-oriented Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org2d710c6&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org2d710c6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      NASDOG:
      ESPK has now been consistently trading over&lt;br /&gt;
      the social net at levels close to that once attained by DogCom&lt;br
      /&gt;high-fliers—and as of Nov 2016 is trading at levels close
      to&lt;br
      /&gt;
      that achieved by once better known stocks in the tech sector.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgb45aece&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgb45aece&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      Web-surfing, blogging, social computing and electronic messaging
      into&lt;br /&gt;
      the audio desktop, Emacspeak enables speech access to local and
      remote&lt;br /&gt;
      information with a consistent and well-integrated user interface.
      A&lt;br
      /&gt;
      rich suite of task-oriented tools provides efficient
      speech-enabled&lt;br
      /&gt;
      access to the evolving service-oriented social Internet cloud.&lt;br
      /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org19ce274&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org19ce274&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Speech-enabled
      &lt;code&gt;tide&lt;/code&gt; for typescript development. 
      🌊&lt;/li&gt;&lt;li&gt;Speech-enabled
      &lt;code&gt;jade&lt;/code&gt; for
      Javascript WebApp development. ⺩&lt;/li&gt;
      &lt;li&gt;Improved &lt;code&gt;slime&lt;/code&gt; support for Lisp
      programming. Λ&lt;/li&gt;
      &lt;li&gt;Support for rst-mode for editing ReST
      files.🖹&lt;/li&gt;
      &lt;li&gt;Version control info in modeline.⎔&lt;/li&gt;
      &lt;li&gt;Speech-enabled &lt;code&gt;elisp-refs&lt;/code&gt; to aid
      in
      refactoring. ※&lt;/li&gt;
      &lt;li&gt;GPG integration including pinentry support.
      🔐&lt;/li&gt;      &lt;li&gt;ElScreen support for window-layout
      management. 🆜&lt;/li&gt;
      &lt;li&gt;Updated Librivox client for audio books. 
      🔊🕮&lt;/li&gt;
      &lt;li&gt;Updated sound themes. 🔉&lt;/li&gt;
      &lt;li&gt;Support for Emacs&#39; visual-line-mode. 🎁&lt;/li&gt;
      &lt;li&gt;Speech-enabled Threes game. 🎮&lt;/li&gt;
      &lt;li&gt;Updated Google News support. 📰&lt;/li&gt;
      &lt;li&gt;Binaural audio support  including  several predefined
      binaural
      themes. ℗&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Updated multilingual
      support
      for ESpeak.   󠀁&lt;/li&gt;
      &lt;/ul&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&quot;https://gist.github.com/08046e9befd9755dc05282ae5c8d32f5&quot;&gt;Script etc/bootstrap.sh&lt;/a&gt;  for bootstrapping into Emacspeak on a well-configured Linux system. 👢&lt;/li&gt;
      &lt;li&gt;And a lot more than will fit this margin. …
      🗞&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-org3d817b7&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org3d817b7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;Never
      a toy system, Emacspeak is voluntarily bundled with all&lt;br /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free social interaction and carries forward the&lt;br /&gt;
      well-established Open Source tradition of introducing user&lt;br
      /&gt;
      interface features that eventually show up in luser
      environments.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org7205772&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org7205772&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-5&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; &quot;It is the user
      &amp;#x2013;and not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!&quot;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgdd4d5fe&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgdd4d5fe&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-5-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgd2bf09f&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgd2bf09f&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      via&lt;br /&gt;
      Git  from GitHub  at &lt;br /&gt;
      &lt;a
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak
      GitHub &lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orged73986&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orged73986&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 45.0 (IdealDog) is
      named
      in recognition of Emacs&#39;&lt;br /&gt;
      excellent integration with various programming language&lt;br /&gt;
      environments &amp;#x2014; thanks to this, Emacspeak is the IDE of
      choice&lt;br /&gt;
      for eyes-free software engineering.&lt;/li&gt;
      &lt;li&gt;Emacspeak 44.0 continues the steady pace of innovation on
      the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2014; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-org57e89f5&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;org57e89f5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW,  Emacspeak is now maintained on
      GitHub&lt;br
      /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgffc8bbd&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgffc8bbd&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop, and&lt;br
      /&gt;      promises to exercise this freedom to innovate and her
      resulting&lt;br
      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr  /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5460777600046934416'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5460777600046934416'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2016/11/emacspeak-450-idealdog-unleashed.html' title='Emacspeak 45.0 (IdealDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6159575909849664627
    </id>
    <published>
      2016-04-30T10:51:00.000-07:00
    </published>
    <updated>2016-04-30T10:51:00.652-07:00
    </updated>
    <title type='text'>
      Emacspeak 44.0 (SteadyDog) Unleashed
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak
      44.0—SteadyDog—Unleashed!&lt;/h1&gt;&lt;p&gt;&lt;b&gt;For
      Immediate
      Release:&lt;/b&gt;&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;San Jose, Calif., (May 1, 2016)&lt;br /&gt;
      Emacspeak:  Redefining Accessibility In The Era Of (Real)Intelligent
            Computing &lt;br /&gt;
      &amp;#x2013;Zero cost of Ownership  makes priceless software
      Universally
      affordable!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;&amp;#x2013; announces the&lt;br /&gt;
      immediate world-wide availability of &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/44.0/emacspeak-44.0.tar.bz2&quot;&gt;Emacspeak 44.0&lt;/a&gt; (SteadyDog) &amp;#x2013;a&lt;br /&gt;
      powerful audio desktop for leveraging today&#39;s evolving data,
      social&lt;br /&gt;
      and service-oriented Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      NASDOG:
      ESPK has now been consistently trading over&lt;br /&gt;
      the social net at levels close to that once attained by DogCom&lt;br
      /&gt;high-fliers—and as of May 2016 is trading at levels close
      to&lt;br
      /&gt;
      that achieved by once better known stocks in the tech sector.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides complete&lt;br /&gt;
      eyes-free access to all major 32 and 64 bit operating environments.
      By&lt;br /&gt;
      seamlessly blending live access to all aspects of the Internet such
      as&lt;br /&gt;
      Web-surfing, blogging, social computing and electronic messaging
      into&lt;br /&gt;
      the audio desktop, Emacspeak enables speech access to local and
      remote&lt;br /&gt;
      information with a consistent and well-integrated user interface.
      A&lt;br
      /&gt;
      rich suite of task-oriented tools provides efficient
      speech-enabled&lt;br
      /&gt;
      access to the evolving service-oriented social Internet cloud.&lt;br
      /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Enable playing multiple media
      streams using &lt;b&gt;mplayer&lt;/b&gt;. 🔊&lt;/li&gt;
      &lt;li&gt;Smart Ladspa effects in &lt;b&gt;mplayer&lt;/b&gt;, 
      including
      panning.  🕪&lt;/li&gt;
      &lt;li&gt;Sound theme &lt;b&gt;chimes&lt;/b&gt; has been spatialized
      to
      create theme &lt;b&gt;pan-chimes&lt;/b&gt;.  🕭-&lt;/li&gt;
      &lt;li&gt;Package &lt;b&gt;elpy&lt;/b&gt; has been speech-enabled. 
      🐍&lt;/li&gt;
      &lt;li&gt;Emacspeak now implements automatic soundscapes.
      🏙&lt;/li&gt;
      &lt;li&gt;Speech-enables package
      &lt;code&gt;helm&lt;/code&gt;.𝍎&lt;/li&gt;
      &lt;li&gt;Emacs EWW: Consume Web content efficiently.  
      🕷&lt;/li&gt;
      &lt;li&gt;Updated Info manual 🕮&lt;/li&gt;
      &lt;li&gt;emacspeak-url-templates: Smart Web access.  ♅&lt;/li&gt;
      &lt;li&gt;emacspeak-websearch.el Find things fast. ♁&lt;/li&gt;
      &lt;li&gt;And a lot more than will fit this margin. …&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;&lt;p&gt; 
      Never a toy system, Emacspeak is voluntarily bundled with all&lt;br
      /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free social interaction and carries forward the&lt;br /&gt;
      well-established Open Source tradition of introducing user&lt;br
      /&gt;
      interface features that eventually show up in luser
      environments.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline6&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-5&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; &quot;It is the user
      &amp;#x2013;and not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!&quot;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline5&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgheadline5&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-5-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline7&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; you can visit Emacspeak on the&lt;br /&gt;
      WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net&quot;&gt;http://emacspeak.sf.net&lt;/a&gt;. You can subscribe to the emacspeak&lt;br /&gt;
      mailing list — emacspeak@cs.vassar.edu — by sending mail to
      the&lt;br
      /&gt;
      list request address emacspeak-request@cs.vassar.edu. The &lt;a
      href=&quot;http://emacspeak.blogspot.com&quot;&gt;Emacspeak&lt;br
      /&gt;
      Blog&lt;/a&gt; is a good source for news about recent enhancements
      and
      how to&lt;br /&gt;
      use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      via&lt;br /&gt;
      Git  from GitHub  at &lt;br /&gt;
      &lt;a
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak
      GitHub &lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline8&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak 44.0 continues the
      steady
      pace of innovation on the&lt;br /&gt;
      audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak  43.0 brings even more end-user efficiency by
      leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support — hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks — and is aptly code-named HeadDog
      in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog — adds tweeting to the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2013; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline9&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;p&gt;Originally based at Cornell (NY)
      —&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW, - Emacspeak is now maintained on
      GitHub&lt;br /&gt;
      —&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On
      Monday,&lt;br
      /&gt;
      April 12, 1999, Emacspeak became part of the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/blog/smithsonian-study.html&quot;&gt;Smithsonian&#39;s Permanent&lt;br /&gt;
      Research Collection&lt;/a&gt; on Information Technology at the
      Smithsonian&#39;s&lt;br /&gt;
      National Museum of American History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline10&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline10&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop, and&lt;br
      /&gt;      promises to exercise this freedom to innovate and her
      resulting&lt;br
      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr  /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster, Hubbell and Tilden Labrador. All
      Writes      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6159575909849664627'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6159575909849664627'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2016/04/emacspeak-440-steadydog-unleashed.html' title='Emacspeak 44.0 (SteadyDog) Unleashed'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8485619754252778620
    </id>
    <published>
      2016-02-25T17:56:00.001-08:00
    </published>
    <updated>2016-02-25T17:56:25.651-08:00
    </updated>
    <title type='text'>
      Augmented Headphone Listening On Linux For The Emacspeak Audio
      Desktop
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Augmented      Headphone Listening On
      Linux For The Emacspeak Audio
      Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;A combination of
      &lt;b&gt;ALSA&lt;/b&gt;, &lt;b&gt;Ladspa&lt;/b&gt; and
      &lt;b&gt;OpenAL&lt;/b&gt; can provide an enhanced&lt;br /&gt;
      headphone listening experience on Linux &amp;#x2014;  this article
      summarizes&lt;br /&gt;
      various tools and techniques for leveraging thesee affordances on
      the&lt;br /&gt;
      Emacspeak Audio Desktop.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Glossary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;dl
      
      class=&quot;org-dl&quot;&gt;&lt;dt&gt;ALSA&lt;/dt&gt;&lt;dd&gt;Advanced
      Linux Sound Architecture. This is my  preferred
      means of controlling audio, and I entirely avoid Pulseaudio on
      all my machines.&lt;/dd&gt;
      &lt;dt&gt;Ladspa &lt;/dt&gt;&lt;dd&gt;Linux Audio Developer&#39;s
      Simple
      Plugin API. Enables
      the injection of Digital Signal Processing (DSP)  when playing
      media. It is a layer that sits above &lt;b&gt;ALSA&lt;/b&gt;.
      &lt;b&gt;Ladspa&lt;/b&gt; filters
      can be  used by  user-space applications like
      &lt;b&gt;MPlayer&lt;/b&gt;
      and
      &lt;b&gt;SoX&lt;/b&gt; when playing media. They can also be used 
      within
      the
      user&#39;s &lt;b&gt;ASoundRC&lt;/b&gt; to define virtual audio
      devices
      that inject
      DSP plugins into the media stream.&lt;/dd&gt;
      &lt;dt&gt;OpenAL&lt;/dt&gt;&lt;dd&gt;OpenAL is an API for enabling
      cross-platform 3D
      audio. User-space applications like &lt;b&gt;MPlayer&lt;/b&gt; can
      use
      OpenAL as
      the audio output driver &amp;#x2014; note that OpenAL on Linux
      writes to
      &lt;b&gt;ALSA&lt;/b&gt; under the covers.&lt;/dd&gt;
      &lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Playing Media
      Using
      MPlayer&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;With Ladspa and its associated
      plugins installed &amp;#x2014; at the minimum&lt;br /&gt;
      I would recommend installing &lt;code&gt;tap-plugins&lt;/code&gt;,
      module&lt;br /&gt;
      &lt;code&gt;emacspeak-m-player&lt;/code&gt; provides a number of
      affordances for&lt;br /&gt;
      interactively applying Ladspa filters. See commands&lt;br /&gt;
      &lt;span
      
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-apply-reverb-preset_(bound to _P&lt;/span&gt; in &lt;code&gt;M-Player&lt;/code&gt;)&lt;br /&gt;
      and command &lt;span
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-add-filter&lt;/span&gt;
      (bound to &lt;span class=&quot;underline&quot;&gt;f&lt;/span&gt;
      in&lt;br
      /&gt;
      &lt;code&gt;M-Player&lt;/code&gt;).&lt;/li&gt;
      &lt;li&gt;Command &lt;span
      
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-apply-reverb-preset&lt;/span&gt; lets you pick&lt;br /&gt;
      among a total of 42 reverb presets defined by Ladspa module
      &lt;code&gt;tap_reverb&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Command &lt;span
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-add-filter&lt;/span&gt;
      lets you add some of the&lt;br /&gt;
      more commonly used Ladspa effects with smart minibuffer&lt;br /&gt;
      prompts. Use tab completion to discover some of the predefined&lt;br
      /&gt;filters &amp;#x2014; thesee are just convenience shortcuts
      &amp;#x2014; and you can&lt;br /&gt;
      add  any filters you use commonly to this list.&lt;/li&gt;
      &lt;li&gt;Note that &lt;code&gt;mplayer&lt;/code&gt; also has its
      own&lt;br /&gt;
      HRTF filter, but that  filter requires that the stream being played
      is&lt;br /&gt;
      a 48K stream.&lt;/li&gt;
      &lt;li&gt;Command &lt;span
      
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-using-openal&lt;/span&gt; bound by default to&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;Hyper ;&lt;/span&gt;
      launches      &lt;code&gt;mplayer&lt;/code&gt; with &lt;span
      class=&quot;underline&quot;&gt;OpenAL&lt;/span&gt; as the audio
      output&lt;br /&gt;
      driver &amp;#x2014; adding  the following line&lt;/li&gt;
      &lt;/ol&gt;&lt;p&gt;to your _~/.alsoftrc~ file will apply a suitable
            HRTF filter for&lt;br /&gt;
      augmented headphone listening. &lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;hrtf=true
      &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Defining
      Virtual      Audio Devices For Use With
      Soundscapes&lt;/h2&gt;&lt;div      class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;I use
      soundscapes to provide a pleasant auditory background as I
      work&lt;br      /&gt;
      &amp;#x2014; see earlier blog article that describes &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2015/12/soundscapes-on-emacspeak-audio-desktop.html&quot;&gt;Soundscapes On The&lt;br /&gt;
      Emacspeak Audio Desktop&lt;/a&gt;. Defining virtual ALSA devices
      that      inject&lt;br /&gt;
      Ladspa plugins into the output processing chain is an elegant
      means&lt;br
      /&gt;
      for enhancing the auditory experience provided by thesee&lt;br /&gt;
      soundscapes. In this instance, I apply one of the predefined
      reverb&lt;br
      /&gt;
      effects (Ambiance) from Ladspa module
      &lt;code&gt;tap-plugins&lt;/code&gt; and pass the&lt;br /&gt;
      results through a BS2B (Bauer Stereo To Binaural) filter
      &amp;#x2014; see
      file&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/blob/master/scapes/ladspa-asoundrc&quot;&gt;scapes/ladspa-asoundrc&lt;/a&gt; in the emacspeak Github Repo. Notice that that&lt;br /&gt;
      file defines a number of virtual audio devices and can serve as
      a&lt;br
      /&gt;
      template for injecting any installed Ladspa plugins &amp;#x2014; you
      can
      first&lt;br /&gt;
      experiment with filters using Emacspeak&#39;s  &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2015/12/a-ladspa-work-bench-for-emacspeak.html&quot;&gt;Laudible&lt;/a&gt; module to find&lt;br /&gt;
      settings that work for you before applying them via a virtual
      device&lt;br /&gt;
      defined in your &lt;code&gt;asoundrc&lt;/code&gt; file. Finally, you
      can
      customize option&lt;br /&gt;
      &lt;code&gt;soundscape-manager-options&lt;/code&gt;  to add &lt;span
      class=&quot;underline&quot;&gt;&amp;#x2013;device
      &amp;lt;devicename&amp;gt;&lt;/span&gt; to have&lt;br /&gt;
      the soundscapes use the desired virtual device.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline5&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt;
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;p&gt;Laptops today have plenty of
      processing
      power and some really nice&lt;br /&gt;
      audio hardware.  Linux has a powerful audio processing stack in
      ALSA,&lt;br /&gt;
      Ladspa and OpenAL. Connecting the dots can be fun and provide
      an&lt;br
      /&gt;
      enhanced auditory environment.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: &lt;span
      class=&quot;timestamp-wrapper&quot;&gt;&lt;span
      class=&quot;timestamp&quot;&gt;&amp;lt;2016-02-25
      Thu&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2016-02-25 Thu
      17:47&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8485619754252778620'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8485619754252778620'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2016/02/augmented-headphone-listening-on-linux.html' title='Augmented Headphone Listening On Linux For The Emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1743443909224540427
    </id>
    <published>
      2015-12-18T11:07:00.004-08:00
    </published>
    <updated>2015-12-18T11:07:51.853-08:00
    </updated>
    <title type='text'>
      Soundscapes On The Emacspeak Audio Desktop
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Soundscapes
      On The Emacspeak Audio Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Emacspeak module &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/manual/soundscape.html&quot;&gt;soundscape&lt;/a&gt; adds the ability to automatically switch&lt;br /&gt;
      &lt;b&gt;Soundscapes&lt;/b&gt; based on the current buffer. A
      &lt;b&gt;Soundscape&lt;/b&gt; can be any&lt;br /&gt;
      continuously playing stream of audio; in practice, using nature
      sounds&lt;br /&gt;
      that repeat softly in a pseudo-random manner appears to be&lt;br
      /&gt;
      effective. Soundscapes are activated based on the currently
      active&lt;br
      /&gt;
      &lt;i&gt;Emacs Major Mode&lt;/i&gt; and as a consequence directly
      mirror
      the user&#39;s&lt;br /&gt;
      current activity. The present implementation uses Python
      package&lt;br
      /&gt;
      &lt;a href=&quot;http://boodler.org/&quot;&gt;Boodler&lt;/a&gt; to
      generate soundscapes.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Usage&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Note that package
      &lt;code&gt;soundscape.el&lt;/code&gt; does not have any
      Emacspeak&lt;br
      /&gt;
      dependencies. See the &lt;a
      
      
      href=&quot;http://tvraman.github.io/emacspeak/manual/soundscape&quot;&gt;package documentation&lt;/a&gt; for details on installing&lt;br /&gt;
      and configuring &lt;a
      href=&quot;http://boodler.org/&quot;&gt;Boodler&lt;/a&gt;. &lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;You can experiment with installed Boodler agents using
      command&lt;br /&gt;
      &lt;code&gt;soundscape&lt;/code&gt; and
      &lt;code&gt;soundscape-stop&lt;/code&gt;. You can enable and
      disable&lt;br /&gt;
      &lt;i&gt;automatic soundscapes&lt;/i&gt; using command
      &lt;code&gt;soundscape-toggle&lt;/code&gt;. The&lt;br /&gt;
      currently active default Soundscape theme can be inspected via
      command&lt;br /&gt;
      &lt;code&gt;soundscape-display&lt;/code&gt; &amp;#x2014; this
      produces a
      buffer that lists the&lt;br /&gt;
      currently defined /major-mode -&amp;gt; Soundscape mapping. &lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Package &lt;code&gt;soundscape.el&lt;/code&gt; considers
      the      inheritance relationship among&lt;br /&gt;
      Emacs major-modes when computing the set of
      &lt;i&gt;soundscapes&lt;/i&gt; to&lt;br /&gt;
      activate.As an example, &lt;span
      class=&quot;underline&quot;&gt;eww-mode&lt;/span&gt; inherits from
      &lt;span class=&quot;underline&quot;&gt;special-mode&lt;/span&gt;
      &amp;#x2014; as&lt;br /&gt;
      a consequence, two soundscapes (&lt;i&gt;LightWind&lt;/i&gt; and
      &lt;i&gt;BackgroundWaves&lt;/i&gt;)&lt;br /&gt;
      become active when reading Web content.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Default
      Major-Mode-&amp;gt;Soundscape (Mood) Mapping:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Here
      is a table showing the mapping of major-mmodes to Soundscape&lt;br
      /&gt;
      moods at the time of writing. For readability, I have stripped out
      the&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;package-name&lt;/span&gt;
      for      thesee soundscapes.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;table border=&quot;2&quot; cellspacing=&quot;0&quot;
      cellpadding=&quot;6&quot; rules=&quot;groups&quot;
      frame=&quot;hsides&quot;&gt;
      
      &lt;colgroup&gt;
      &lt;col  class=&quot;org-left&quot; /&gt;
      
      &lt;col  class=&quot;org-left&quot; /&gt;
      &lt;/colgroup&gt;
      &lt;tbody&gt;
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Soundscape (Mood)&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;List Of Major Modes&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;BuddhaLoop&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;fundamental&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;LightStorm&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;special&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;RainForever&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;Info help Man Custom
      messages-buffer&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;LightWind&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;comint elfeed-search&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;TonkSpace&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;tabulated-list&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Cavern&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;prog&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Drip&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;message gnus-summary
      gnus-article
      gnus-group mspools vm-presentation vm mail twittering jabber-roster
      jabber-chat erc&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Still&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;text&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Water&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;dired&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;Steady&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;calendar diary&lt;/td&gt;
      &lt;/tr&gt;
      
      &lt;tr&gt;
      &lt;td class=&quot;org-left&quot;&gt;BackgroundWaves&lt;/td&gt;
      &lt;td class=&quot;org-left&quot;&gt;w3 eww&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Soundscape
      Research&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;I implemented package
      &lt;code&gt;soundscape.el&lt;/code&gt; to create a platform that
      would&lt;br /&gt;
      let me experiment with different tools that aid in&lt;br /&gt;
      concentration. After using Soundscapes for about a week, I have
      also&lt;br /&gt;
      found that it reduces some of the fatigue that results from having
      to&lt;br /&gt;
      listen to synthetic text-to-speech for extended  periods.&lt;br
      /&gt;      The true value (if any) of this package will be a
      function of how
      heavily&lt;br /&gt;
      I find myself using it six months from now &amp;#x2014; as a metric,
      &lt;i&gt;complete&lt;br /&gt;
      success&lt;/i&gt;  might mean that in mid-2016, I still  have
      automatic&lt;br /&gt;
      soundscapes turned on.&lt;br /&gt;
      As I type this article in Emacs &lt;span
      class=&quot;underline&quot;&gt;org-mode&lt;/span&gt;, I hear  the
      sound
      of&lt;br /&gt;
      water-drops falling softly in the background, and I take note&lt;br
      /&gt;
      that I have not switched tasks  for the entire time I have
      spent&lt;br
      /&gt;
      writing this article.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Other success metrics &amp;#x2014; harder to measure
      &amp;#x2014; might include how&lt;br /&gt;
      effective Soundscapes are in helping the user stay focused on
      a&lt;br      /&gt;
      given activity for extended periods of time. In an
      ever-connected&lt;br
      /&gt;
      world buzzing with a constant stream of distractions ranging
      from&lt;br
      /&gt;
      incoming email and instant-messages to a flood of twitter
      updates,&lt;br
      /&gt;
      this is likely the most relevant metric.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1743443909224540427'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1743443909224540427'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/12/soundscapes-on-emacspeak-audio-desktop.html' title='Soundscapes On The Emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6914615005759113231
    </id>
    <published>
      2015-12-04T20:09:00.003-08:00
    </published>
    <updated>2015-12-04T20:09:41.132-08:00
    </updated>
    <title type='text'>A Ladspa
      Work-Bench For The Emacspeak Desktop 
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;A Ladspa
      Work-Bench For The Emacspeak Audio Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Module
      &lt;code&gt;ladspa.el&lt;/code&gt;  in the Emacspeak GitHub
      repository
      implements a&lt;br /&gt;
      high-level interface for experimenting with Ladspa Plugins
      using&lt;br
      /&gt;
      &lt;code&gt;MPlayer&lt;/code&gt; and
      &lt;code&gt;SoX&lt;/code&gt;.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Module
      &lt;code&gt;ladspa.el&lt;/code&gt;&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;This 
      module implements the following functionality:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Builds up a table of
      installed Ladspa plugins along with their&lt;br /&gt;
      associated metadata.&lt;/li&gt;
      &lt;li&gt;Command &lt;code&gt;M-x ladspa&lt;/code&gt; displays 
      installed
      Ladspa Plugins in a&lt;br /&gt;
      special &lt;code&gt;*Ladspa*&lt;/code&gt; buffer.&lt;/li&gt;
      &lt;li&gt;Plugins can be instantiated by pressing
      &lt;code&gt;RET&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Instantiating a plugin prompts for its arguments and
      displays
      the&lt;br /&gt;
      instantiated plugin in a new buffer.&lt;/li&gt;
      &lt;li&gt;This plugin can then be applied to a running
      &lt;code&gt;MPlayer&lt;/code&gt; media&lt;br /&gt;
      stream by pressing &lt;code&gt;a&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;The effect can be deleted by pressing
      &lt;code&gt;d&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Plugin parameters can be edited  by pressing
      &lt;code&gt;e&lt;/code&gt; with point on&lt;br /&gt;
      the parameter to edit.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Interfacing
      With      SoX&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;Module
      &lt;code&gt;sox.el&lt;/code&gt;
      implements an &lt;b&gt;Audio Workbench&lt;/b&gt; using
      &lt;code&gt;SoX&lt;/code&gt;. Module&lt;br /&gt;
      &lt;code&gt;ladspa.el&lt;/code&gt; integrates with that module by
      allowing the addition of&lt;br /&gt;
      &lt;code&gt;ladspa&lt;/code&gt; as a supported SoX effect. Adding a
      &lt;code&gt;ladspa&lt;/code&gt; effect results&lt;br /&gt;
      in a completion interface for picking one of the available
      Ladspa&lt;br
      /&gt;
      plugin; once selected, that plugin then prompts for its parameters
      as&lt;br /&gt;
      needed.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: &lt;span
      class=&quot;timestamp-wrapper&quot;&gt;&lt;span
      class=&quot;timestamp&quot;&gt;&amp;lt;2015-12-04
      Fri&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2015-12-04 Fri
      20:03&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6914615005759113231'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6914615005759113231'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/12/a-ladspa-work-bench-for-emacspeak.html' title='A Ladspa Work-Bench For The Emacspeak Desktop '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3241221996464808070
    </id>
    <published>
      2015-11-30T17:21:00.003-08:00
    </published>
    <updated>2015-11-30T17:21:56.651-08:00
    </updated>
    <title type='text'>
      Generating Spatialized Auditory Icons Using MPlayer And Ladspa
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Generating
      Spatialized Auditory Icons Using MPlayer And
      Ladspa&lt;/h1&gt;&lt;div     
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;The Emacspeak GitHub repository
      now      includes a new auditory icon theme&lt;br /&gt;
      &lt;code&gt;pan-chimes&lt;/code&gt; &amp;#x2014; thesee are the
      result of
      spatializing theme &lt;code&gt;chimes&lt;/code&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Fun With
      Ladspa,      MPlayer and Library
      &lt;code&gt;tap-plugins&lt;/code&gt;&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Here
      is the result of some fun with MPlayer and Ladspa over the&lt;br
      /&gt;
      Thanksgiving weekend. Package &lt;code&gt;tap-plugins&lt;/code&gt;
      provides a number of&lt;br /&gt;
      interesting Ladspa plugins; one of thesee,
      &lt;code&gt;tap_reverb&lt;/code&gt; is used in&lt;br /&gt;
      module &lt;code&gt;emacspeak-m-player&lt;/code&gt; to provide a
      variety
      of predefined&lt;br /&gt;
      effects.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Library &lt;code&gt;tap-plugins&lt;/code&gt; also includes
      Ladspa filter &lt;code&gt;tap_autopan&lt;/code&gt; that&lt;br /&gt;
      pans the input audio signal &amp;#x2014; see that  plugin&#39;s
      documentation for&lt;br /&gt;
      details.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Linux media player &lt;code&gt;mplayer&lt;/code&gt; 
      allows
      the injection of &lt;code&gt;ladspa&lt;br /&gt;
      plugins&lt;/code&gt; in its processing chain.&lt;br /&gt;
      Combining thesee, I have created theme
      &lt;code&gt;pan-chimes&lt;/code&gt;
      that  provides a&lt;br /&gt;
      spatialized version of sound-theme
      &lt;code&gt;chimes&lt;/code&gt;.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;See script &lt;code&gt;apply-pan.sh&lt;/code&gt; in the
      Github
      repository to see how this new&lt;br /&gt;
      theme was generated.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3241221996464808070'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3241221996464808070'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/11/generating-spatialized-auditory-icons.html' title='Generating Spatialized Auditory Icons Using MPlayer And Ladspa'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7606050581558531435
    </id>
    <published>
      2015-11-23T15:25:00.001-08:00
    </published>
    <updated>2015-11-23T15:25:28.520-08:00
    </updated>
    <title type='text'>
      Listening To Multiple Media Streams On The Emacspeak Audio Desktop
    </title>
    <content type='html'> &lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Listening To
      Multiple Media Streams On The Emacspeak Audio
      Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;The GitHub version of Emacspeak
      now      supports launching and controlling&lt;br /&gt;
      multiple media streams. This enables one to listen to the news
      while&lt;br /&gt;
      playing a music stream, or relaxing nature sounds.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Sample
      Usage&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Here are some examples of using
      this
      feature:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Launch your favorite
      news
      station &amp;#x2014; BBC World Service in my&lt;br /&gt;
      case &amp;#x2014; &lt;span class=&quot;underline&quot;&gt;C-e ;
      RET&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;Place the News on the left channel &amp;#x2014; &lt;span
      class=&quot;underline&quot;&gt;C-e ; (&lt;/span&gt;.&lt;/li&gt;
      &lt;li&gt;Persist the currently playing News stream by invoking
      command&lt;br /&gt;
      &lt;span
      
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-persist-stream&lt;/span&gt; bound to &lt;span class=&quot;underline&quot;&gt;C-e ; \&lt;/span&gt;. This lets&lt;br /&gt;
      you launch a second stream via Emacspeak media key &lt;span
      class=&quot;underline&quot;&gt;C-e ;&lt;/span&gt; rather&lt;br /&gt;
      than controlling the currently playing stream.&lt;/li&gt;
      &lt;li&gt;Launch a classical music  media-stream  &amp;#x2014;
      &lt;span
      class=&quot;underline&quot;&gt;C-e ; lu RET&lt;/span&gt; for a
      lullaby&lt;br /&gt;
      media stream.&lt;/li&gt;
      &lt;li&gt;Now Emacspeak M-Player commands will  control the most
      recently&lt;br /&gt;
      launched stream;  you can once again invoke command&lt;br /&gt;
      &lt;span
      
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-persist-stream&lt;/span&gt; if you  wish.&lt;/li&gt;
      &lt;li&gt;The previously launched (and still playing) News stream is
      now
      in a&lt;br /&gt;
      buffer named &lt;code&gt;*Persistent-...*&lt;/code&gt;.
      Command&lt;br      /&gt;
      &lt;span
      
      
      class=&quot;underline&quot;&gt;emacspeak-wizards-view-buffers-filtered-by-m-player-mode&lt;/span&gt; can be&lt;br /&gt;
      used to list   buffers that hold a live
      &lt;code&gt;m-player&lt;/code&gt;
      instance. It is&lt;br /&gt;
      bound to &lt;span class=&quot;underline&quot;&gt;b&lt;/span&gt; in
      &lt;code&gt;emacspeak-m-player-mode&lt;/code&gt;. I also bind this
      command&lt;br /&gt;
      to &lt;span class=&quot;underline&quot;&gt;C-; ;&lt;/span&gt; in my
      global keymap.&lt;/li&gt;
      &lt;li&gt;You can make  an M-Player instance
      &lt;b&gt;current&lt;/b&gt;
      by switching to its&lt;br /&gt;
      buffer and invoking command &lt;span
      
      
      class=&quot;underline&quot;&gt;emacspeak-m-player-restore-process&lt;/span&gt;&lt;br /&gt;
      bound to &lt;span class=&quot;underline&quot;&gt;/&lt;/span&gt; in
      &lt;code&gt;emacspeak-m-player-mode&lt;/code&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;p&gt;Share And Enjoy&amp;#x2013;&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7606050581558531435'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7606050581558531435'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/11/listening-to-multiple-media-streams-on.html' title='Listening To Multiple Media Streams On The Emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-9210947851534696007
    </id>
    <published>
      2015-11-20T08:59:00.001-08:00
    </published>
    <updated>2015-11-20T10:07:08.626-08:00
    </updated>
    <title type='text'>
      Emacspeak 43.0 (SoundDog) Unleashed!
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak     
      43.0—SoundDog—Unleashed!&lt;/h1&gt;&lt;p&gt;&lt;b&gt;For
      Immediate
      Release:&lt;/b&gt;&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;San Jose, Calif., (Nov 20, 2015)&lt;br /&gt;
      Emacspeak:  Redefining Accessibility In The Era Of Internet 
      Computing
      &lt;br /&gt;
      &amp;#x2013;Zero cost of Ownership  makes priceless software
      Universally
      affordable!&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&quot;http://emacspeak.sf.net/&quot;&gt;http://emacspeak.sf.net/&lt;/a&gt;&amp;#x2013; announces the&lt;br /&gt;
      immediate world-wide availability of &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak/releases/download/43.0/emacspeak-43.0.tar.bz2&quot;&gt;Emacspeak 43.0&lt;/a&gt; (SoundDog) &amp;#x2013;a&lt;br /&gt;
      powerful audio desktop for leveraging today&#39;s evolving data,
      social&lt;br /&gt;
      and service-oriented Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Investors
      Note:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;With several prominent tweeters
      expanding coverage of&lt;br /&gt;
      &lt;span class=&quot;underline&quot;&gt;#emacspeak&lt;/span&gt;,
      NASDOG:
      ESPK has now been consistently trading over&lt;br /&gt;
      the social net at levels close to that once attained by DogCom&lt;br
      /&gt;high-fliers—and as of Nov 2015 is trading at levels close
      to&lt;br
      /&gt;
      that achieved by once better known stocks in the tech sector.&lt;br
      /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; What Is
      It?&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Emacspeak is a fully functional
      audio
      desktop that provides&lt;br /&gt;
      complete eyes-free access to all major 32 and 64 bit operating&lt;br
      /&gt;environments. By seamlessly blending live access to all
      aspects&lt;br /&gt;
      of the Internet such as Web-surfing, blogging, social
      computing&lt;br      /&gt;
      and electronic messaging into the audio desktop, Emacspeak&lt;br
      /&gt;
      enables speech access to local and remote information with a&lt;br
      /&gt;
      consistent and well-integrated user interface. A rich suite of&lt;br
      /&gt;task-oriented tools provides efficient speech-enabled access
      to&lt;br /&gt;
      the evolving service-oriented social Internet cloud.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Major
      Enhancements:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Multiple spatially located TTS
      streams  for efficient communication. 🕪&lt;/li&gt;
      &lt;li&gt;Refactored, improved sound themes.℗&lt;/li&gt;
      &lt;li&gt;Updated org-mode support.  🎶&lt;/li&gt;
      &lt;li&gt;Speech-enables package
      &lt;code&gt;helm&lt;/code&gt;.𝍎&lt;/li&gt;
      &lt;li&gt;Speech-enable package &lt;code&gt;yasnippet&lt;/code&gt;
      for
      smart templates. ䷾&lt;/li&gt;
      &lt;li&gt;Context-sensitive  keyboard shortcuts via package
      &lt;code&gt;emacspeak-muggles&lt;/code&gt;. ⌨&lt;/li&gt;
      &lt;li&gt;Speech-enables &lt;code&gt;lua-mode&lt;/code&gt; for LUA
      programming. &lt;/li&gt;
      &lt;li&gt;Speech-enable package &lt;code&gt;projectile&lt;/code&gt;
      for
      software project&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;management. 📽&lt;br /&gt;
      &lt;/p&gt;&lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Speech-enable
      package &lt;code&gt;slime&lt;/code&gt; for Lisp programming.
      Λ&lt;/li&gt;&lt;li&gt;Updated Librivox support to the new API.
      📖&lt;/li&gt;
      &lt;li&gt;Package &lt;code&gt;XBacklight&lt;/code&gt; for
      controlling LCD
      brightness. ⎚&lt;/li&gt;
      &lt;li&gt;Updated NPR client for one-click access to present and
      past NPR
      content.📻&lt;/li&gt;
      &lt;li&gt;BBC radio programs via IPlayer and friends.
      📢&lt;/li&gt;      &lt;li&gt;Emacs EWW: Consume Web content
      efficiently.   🕷&lt;/li&gt;
      &lt;li&gt;Updated Info manual 🕮&lt;/li&gt;
      &lt;li&gt;Speech-enabled Elfeed, an Emacs Feed Reader
      🗞&lt;/li&gt;      &lt;li&gt;emacspeak-url-templates: Smart Web
      access.  ♅&lt;/li&gt;
      &lt;li&gt;emacspeak-websearch.el Find things fast. ♁&lt;/li&gt;
      &lt;li&gt;And a lot more than will fit this margin. …&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;Never
      a toy system, Emacspeak is voluntarily bundled with all&lt;br /&gt;
      major Linux distributions. Though designed to be modular,&lt;br
      /&gt;      distributors have freely chosen to bundle the fully
      integrated&lt;br
      /&gt;system without any undue pressure—a documented success
      for&lt;br
      /&gt;
      the integrated innovation embodied by Emacspeak. As the system&lt;br
      /&gt;evolves, both upgrades and downgrades continue to be available
      at&lt;br /&gt;
      the same zero-cost to all users. The integrity of the
      Emacspeak&lt;br      /&gt;
      codebase is ensured by the reliable and secure Linux platform&lt;br
      /&gt;
      used to develop and distribute the software.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Extensive studies have shown that thanks to thesee features,
      users&lt;br /&gt;
      consider Emacspeak to be absolutely priceless. Thanks to this&lt;br
      /&gt;
      wide-spread user demand, the present version remains  
      priceless&lt;br
      /&gt;
      as ever—it is being made available at the same zero-cost as&lt;br
      /&gt;
      previous releases.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;At the same time, Emacspeak continues to innovate in the
      area
      of&lt;br /&gt;
      eyes-free social interaction and carries forward the&lt;br /&gt;
      well-established Open Source tradition of introducing user&lt;br
      /&gt;
      interface features that eventually show up in luser
      environments.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;On this theme, when once challenged by a proponent of a
      crash-prone&lt;br /&gt;
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from&lt;br /&gt;
      the 70&#39;s&quot;, the creator of Emacspeak evinced surprise at the
      unusual&lt;br /&gt;
      candor manifest in the assertion that it would take popular&lt;br
      /&gt;
      idiot-proven interfaces until the year 2070 to catch up to where
      the&lt;br /&gt;
      Emacspeak audio desktop is today. Industry experts welcomed
      this&lt;br
      /&gt;
      refreshing breath of Courage Certainty and Clarity (CCC) at a
      time&lt;br
      /&gt;
      when users are reeling from the Fear Uncertainty and Doubt
      (FUD)&lt;br
      /&gt;
      unleashed by complex software systems backed by even more
      convoluted&lt;br /&gt;
      press releases.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline6&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline6&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt; Independent
      Test      Results:&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;     
      id=&quot;text-5&quot;&gt;&lt;p&gt;Independent test results have
      proven
      that unlike some modern (and&lt;br /&gt;
      not so modern) software, Emacspeak can be safely uninstalled
      without&lt;br /&gt;
      adversely affecting the continued performance of the computer.
      These&lt;br /&gt;
      same tests also revealed that once uninstalled, the user
      stopped&lt;br
      /&gt;
      functioning altogether. Speaking with Aster Labrador, the creator
      of&lt;br /&gt;
      Emacspeak once pointed out that thesee results re-emphasize the&lt;br
      /&gt;user-centric design of Emacspeak; &quot;It is the user
      &amp;#x2013;and not the&lt;br /&gt;
      computer&amp;#x2013; that stops functioning when Emacspeak is
      uninstalled!&quot;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline5&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;orgheadline5&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h3&gt;&lt;div
      class=&quot;outline-text-3&quot;
      id=&quot;text-5-1&quot;&gt;&lt;p&gt;UnDoctored Videos Inc. is
      looking for
      volunteers to star in a&lt;br /&gt;
      video demonstrating such complete user failure.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline7&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline7&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-6&quot;&gt;&lt;p&gt;Emacspeak can be downloaded from
      GitHub
      &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;  you can visit &lt;br /&gt;
      Emacspeak on the WWW at &lt;a
      
      
      href=&quot;http://emacspeak.sf.net/&quot;&gt;http://emacspeak.sf.net/&lt;/a&gt;.  You can subscribe&lt;br /&gt;
      to the emacspeak mailing list emacspeak@cs.vassar.edu by
      sending&lt;br
      /&gt;
      mail to the list request address&lt;br /&gt;
      emacspeak-request@cs.vassar.edu. The&lt;br /&gt;
      &lt;a href=&quot;http://emacspeak.blogspot.com/&quot;&gt;Emacspeak
      Blog&lt;/a&gt; is a good source&lt;br /&gt;
      for news about recent enhancements and how to use them.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The latest development snapshot of Emacspeak is always
      available
      via&lt;br /&gt;
      Git  from GitHub  at &lt;br /&gt;
      &lt;a
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;Emacspeak
      GitHub &lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline8&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline8&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;7&lt;/span&gt;
      History:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-7&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak  43.0 brings even
      more
      end-user efficiency by leveraging the&lt;br /&gt;
      ability to spatially place multiple audio streams to provide
      timely&lt;br
      /&gt;
      auditory feedback.&lt;/li&gt;
      &lt;li&gt;Emacspeak 42.0 while moving to GitHub from Google Code
      continues to&lt;br /&gt;
      innovate in the areas of auditory user interfaces and
      efficient,&lt;br
      /&gt;
      light-weight Internet access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 41.0 continues to improve &lt;br /&gt;
      on  the desire to provide not just equal, but superior access
      —&lt;br
      /&gt;
      technology when correctly implemented can significantly enhance
      the&lt;br
      /&gt;
      human ability.&lt;/li&gt;
      &lt;li&gt;Emacspeak 40.0 goes back to Web basics by enabling&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&quot;&gt;efficient access&lt;/a&gt; to large amounts of readable Web content.&lt;/li&gt;
      &lt;li&gt;Emacspeak 39.0 continues the Emacspeak tradition of
      increasing
      the breadth of&lt;br /&gt;
      user tasks that are covered without introducing unnecessary&lt;br
      /&gt;
      bloatware.&lt;/li&gt;
      &lt;li&gt;Emacspeak 38.0 is the latest in a series of
      award-winning&lt;br
      /&gt;
      releases from Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak 37.0 continues the tradition of&lt;br /&gt;
      delivering robust software as reflected by its code-name.&lt;/li&gt;
      &lt;li&gt;Emacspeak 36.0 enhances the audio desktop with many new
      tools
      including full&lt;br /&gt;
      EPub support &amp;#x2014; hence the name EPubDog.&lt;/li&gt;
      &lt;li&gt;Emacspeak 35.0 is all about&lt;br /&gt;
      teaching a new dog old tricks &amp;#x2014; and is aptly code-named
      HeadDog in&lt;br /&gt;
      on  of our new Press/Analyst contact. emacspeak-34.0 (AKA
      Bubbles)&lt;br
      /&gt;
      established a new beach-head with respect to rapid task completion
      in&lt;br /&gt;
      an eyes-free environment.&lt;/li&gt;
      &lt;li&gt;Emacspeak-33.0 AKA StarDog brings&lt;br /&gt;
      unparalleled cloud access to the audio desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 32.0 AKA&lt;br /&gt;
      LuckyDog continues to innovate via open technologies for
      better&lt;br      /&gt;
      access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 31.0 AKA TweetDog &amp;#x2014; adds tweeting to
      the
      Emacspeak&lt;br /&gt;
      desktop.&lt;/li&gt;
      &lt;li&gt;Emacspeak 30.0 AKA SocialDog brings the Social Web to
      the&lt;br
      /&gt;
      audio desktop—you can't but be social if you speak!&lt;/li&gt;
      &lt;li&gt;Emacspeak 29.0—AKAAbleDog—is a testament to the
      resilliance
      and innovation&lt;br /&gt;
      embodied by Open Source software—it would not exist without
      the&lt;br
      /&gt;
      thriving Emacs community that continues to ensure that Emacs
      remains&lt;br /&gt;
      one of the premier user environments despite perhaps also being one
      of&lt;br /&gt;
      the oldest.&lt;/li&gt;
      &lt;li&gt;Emacspeak 28.0—AKA PuppyDog—exemplifies the rapid pace
      of&lt;br /&gt;
      development evinced by Open Source software.&lt;/li&gt;
      &lt;li&gt;Emacspeak 27.0—AKA&lt;br /&gt;
      FastDog—is the latest in a sequence of upgrades that make
      previous&lt;br /&gt;
      releases obsolete and downgrades unnecessary.&lt;/li&gt;
      &lt;li&gt;Emacspeak 26—AKA&lt;br /&gt;
      LeadDog—continues the tradition of introducing innovative
      access&lt;br
      /&gt;
      solutions that are unfettered by the constraints inherent in&lt;br
      /&gt;
      traditional adaptive technologies.&lt;/li&gt;
      &lt;li&gt;Emacspeak 25 —AKA ActiveDog&lt;br /&gt;
      —re-activates open, unfettered access to online&lt;br /&gt;
      information.&lt;/li&gt;
      &lt;li&gt;Emacspeak-Alive —AKA LiveDog —enlivens open,
      unfettered&lt;br /&gt;
      information access with a series of live updates that once
      again&lt;br
      /&gt;
      demonstrate the power and agility of open source software&lt;br
      /&gt;      development.&lt;/li&gt;
      &lt;li&gt;Emacspeak 23.0 &amp;#x2013; AKA Retriever—went the extra
      mile
      in&lt;br /&gt;
      fetching full access.&lt;/li&gt;
      &lt;li&gt;Emacspeak 22.0 —AKA GuideDog —helps users&lt;br /&gt;
      navigate the Web more effectively than ever before.&lt;/li&gt;
      &lt;li&gt;Emacspeak 21.0&lt;br /&gt;
      —AKA PlayDog —continued the &lt;br /&gt;
      Emacspeak tradition of relying on enhanced&lt;br /&gt;
      productivity to liberate users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-20.0 —AKA LeapDog —continues&lt;br /&gt;
      the long established GNU/Emacs tradition of integrated innovation
      to&lt;br /&gt;
      create a pleasurable computing environment for eyes-free&lt;br /&gt;
      interaction.&lt;/li&gt;
      &lt;li&gt;emacspeak-19.0 &amp;#x2013;AKA WorkDog&amp;#x2013; is
      designed
      to enhance&lt;br /&gt;
      user productivity at work and leisure.&lt;/li&gt;
      &lt;li&gt;Emacspeak-18.0 &amp;#x2013;code named&lt;br /&gt;
      GoodDog&amp;#x2013; continued the Emacspeak tradition of enhancing
      user&lt;br /&gt;
      productivity and thereby reducing total cost of&lt;br /&gt;
      ownership.&lt;/li&gt;
      &lt;li&gt;Emacspeak-17.0 &amp;#x2013;code named HappyDog&amp;#x2013;
      enhances user&lt;br /&gt;
      productivity by exploiting today&#39;s evolving WWW&lt;br /&gt;
      standards.&lt;/li&gt;
      &lt;li&gt;Emacspeak-16.0 &amp;#x2013;code named
      CleverDog&amp;#x2013; the
      follow-up to&lt;br /&gt;
      SmartDog&amp;#x2013; continued the tradition of working better,
      faster,&lt;br /&gt;
      smarter.&lt;/li&gt;
      &lt;li&gt;Emacspeak-15.0 &amp;#x2013;code named
      SmartDog&amp;#x2013;followed up on TopDog&lt;br /&gt;
      as the next in a continuing  series of award-winning audio
      desktop&lt;br
      /&gt;
      releases from  Emacspeak Inc.&lt;/li&gt;
      &lt;li&gt;Emacspeak-14.0 &amp;#x2013;code named
      TopDog&amp;#x2013;was&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;the first release of this millennium. &lt;br
      /&gt;
      &lt;/p&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak-13.0     
      &amp;#x2013;codenamed&lt;br /&gt;
      YellowLab&amp;#x2013; was the closing release of the&lt;br /&gt;
      20th. century.&lt;/li&gt;
      &lt;li&gt;Emacspeak-12.0 &amp;#x2013;code named
      GoldenDog&amp;#x2013;      began&lt;br /&gt;
      leveraging the evolving semantic WWW to provide task-oriented
      speech&lt;br /&gt;
      access to Webformation.&lt;/li&gt;
      &lt;li&gt;Emacspeak-11.0 &amp;#x2013;code named Aster&amp;#x2013;
      went
      the&lt;br /&gt;
      final step in making Linux a zero-cost Internet access solution
      for&lt;br
      /&gt;
      blind and visually impaired users.&lt;/li&gt;
      &lt;li&gt;Emacspeak-10.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak-2000) code named WonderDog&amp;#x2013; continued the
      tradition
      of&lt;br /&gt;
      award-winning software releases designed to make eyes-free computing
      a&lt;br /&gt;
      productive and pleasurable experience.&lt;/li&gt;
      &lt;li&gt;Emacspeak-9.0 &amp;#x2013;(AKA&lt;br /&gt;
      Emacspeak 99) code named BlackLab&amp;#x2013; continued to innovate
      in
      the areas&lt;br /&gt;
      of speech interaction and interactive accessibility.&lt;/li&gt;
      &lt;li&gt;Emacspeak-8.0 &amp;#x2013;(AKA Emacspeak-98++) code named
      BlackDog&amp;#x2013; was a major upgrade to&lt;br /&gt;
      the speech output extension to Emacs.&lt;/li&gt;
      &lt;li&gt;Emacspeak-95 (code named Illinois) was released as
      OpenSource
      on&lt;br /&gt;
      the Internet in May 1995 as the first complete speech
      interface&lt;br      /&gt;
      to UNIX workstations. The subsequent release, Emacspeak-96
      (code&lt;br
      /&gt;
      named Egypt) made available in May 1996 provided significant&lt;br
      /&gt;
      enhancements to the interface. Emacspeak-97 (Tennessee) went&lt;br
      /&gt;
      further in providing a true audio desktop. Emacspeak-98&lt;br /&gt;
      integrated Internetworking into all aspects of the audio
      desktop&lt;br
      /&gt;
      to provide the first fully interactive speech-enabled
      WebTop.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline9&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline9&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;8&lt;/span&gt; About
      Emacspeak:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-8&quot;&gt;&lt;p&gt;Originally based at Cornell
      (NY)&lt;br
      /&gt;
      &lt;a
      
      
      href=&quot;http://www.cs.cornell.edu/home/raman&quot;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; &amp;#x2013;home to Auditory User&lt;br /&gt;
      Interfaces (AUI) on the WWW&amp;#x2013; Emacspeak is now maintained
      on&lt;br /&gt;
      GitHub --&lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; —and&lt;br /&gt;
      Sourceforge —&lt;a
      
      
      href=&quot;http://emacspeak.sf.net/&quot;&gt;http://emacspeak.sf.net/&lt;/a&gt;. The system is mirrored&lt;br /&gt;
      world-wide by an international network of software archives
      and&lt;br      /&gt;
      bundled voluntarily with all major Linux distributions. On&lt;br
      /&gt;
      Monday, April 12, 1999, Emacspeak became part of the&lt;br /&gt;
      Smithsonian&#39;s Permanent Research Collection on Information&lt;br
      /&gt;Technology at the Smithsonian&#39;s National Museum of
      American&lt;br /&gt;
      History.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The Emacspeak mailing list is archived at Vassar
      &amp;#x2013;the
      home of the&lt;br /&gt;
      Emacspeak mailing list&amp;#x2013; thanks to Greg Priest-Dorman, and
      provides a&lt;br /&gt;
      valuable knowledge base for new users.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline10&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline10&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-9&quot;&gt;&lt;p&gt;Going
      forward, Tilden acknowledges his exclusive monopoly on&lt;br /&gt;
      setting the direction of the Emacspeak Audio Desktop, and&lt;br
      /&gt;      promises to exercise this freedom to innovate and her
      resulting&lt;br
      /&gt;
      power responsibly (as before) in the interest of all dogs.&lt;br
      /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;*About This Release:&lt;br /&gt;
      &lt;/p&gt;&lt;hr  /&gt;&lt;br /&gt;
      &lt;p&gt;Windows-Free (WF) is a favorite battle-cry of The League
      Against&lt;br /&gt;
      Forced Fenestration (LAFF).  &amp;#x2013;see&lt;br /&gt;
      &lt;a
      
      
      href=&quot;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&quot;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on&lt;br /&gt;
      the ill-effects of Forced Fenestration.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;CopyWrite )C( Aster and Hubbell Labrador. All Writes
      Reserved.&lt;br /&gt;
      HeadDog (DM), LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are
      Registered&lt;br /&gt;
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to&lt;br /&gt;
      their respective owners.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br
      /&gt;
      m
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9210947851534696007'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9210947851534696007'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/11/emacspeak-430-sounddog-unleashed.html' title='Emacspeak 43.0 (SoundDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4148707080078147942
    </id>
    <published>
      2015-11-10T18:07:00.000-08:00
    </published>
    <updated>2015-11-10T18:12:14.858-08:00
    </updated>
    <title type='text'>Using
      Multiple TTS Streams On The emacspeak Audio Desktop
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Using
      Multiple TTS Streams On The Emacspeak Audio
      Desktop&lt;/h1&gt;&lt;div     
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Emacspeak now uses multiple
      text-to-speech streams &amp;#x2014; as an example,&lt;br /&gt;
      this enables spoken notifications that do not interrupt ongoing
      spoken&lt;br /&gt;
      output. To make such notifications more perceivable, Emacspeak
      places&lt;br /&gt;
      notifications to the right of the user by leveraging
      Linux-ALSA&lt;br      /&gt;
      features that allow one to scale the amplitude of the left and
      right&lt;br /&gt;
      audio channels.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Background&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Until now, Emacspeak has used a
      single
      instance of a Text-To-Speech&lt;br /&gt;
      (TTS) engine to produce all spoken feedback. An unfortunate&lt;br
      /&gt;
      consequence is that any spoken announcement necessarily
      interrupts&lt;br
      /&gt;
      ongoing speech; as an example, an incoming instant-message
      (e.g.,&lt;br
      /&gt;
      Jabber notification) can interrupt what you&#39;re currently&lt;br
      /&gt;
      reading. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Emacs itself produces a large number of asynchronous
      messages&lt;br /&gt;
      depending on the number of processes running within Emacs; at
      present,&lt;br /&gt;
      all Emacs generated messages are &lt;i&gt;equal&lt;/i&gt; though
      there
      are ongoing&lt;br /&gt;
      plans to improve this situation going forward, e.g., using
      package&lt;br
      /&gt;
      &lt;code&gt;alert&lt;/code&gt;. With Emacspeak now able to use
      multiple
      TTS streams, arrival&lt;br /&gt;
      of package &lt;code&gt;alert&lt;/code&gt; within Emacs should
      facilitate
      smarter handling of&lt;br /&gt;
      different categories of messages over time.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;Playing multiple TTS streams simultaneously can make it
      hard      to&lt;br /&gt;
      understand the resulting output; Emacspeak leverages underlying
      ALSA&lt;br /&gt;
      functionality to send notifications to a virtual ALSA device
      that&lt;br
      /&gt;
      places the auditory output &lt;i&gt;mostly&lt;/i&gt; on the right
      channel. See the&lt;br /&gt;
      following paragraphs on setup/configuration. I&#39;m presently using
      this&lt;br /&gt;
      on Linux with the &lt;code&gt;linux-outloud&lt;/code&gt; voice
      &amp;#x2014; you need to have a copy of&lt;br /&gt;
      this TTS engine installed and working &amp;#x2014; see &lt;a
      href=&quot;http://voxin.oralux.net/&quot;&gt;Voxin&lt;/a&gt; for
      details
      on&lt;br /&gt;
      obtaining that engine. Note: the Emacspeak
      &lt;code&gt;espeak&lt;/code&gt; server does not&lt;br /&gt;
      use raw ALSA for its output &amp;#x2014; consequently, notifications
      produced&lt;br /&gt;
      by  &lt;code&gt;espeak&lt;/code&gt; play on both left and right
      channels,
      making it&lt;br /&gt;
      impossible to understand. The &lt;code&gt;mac&lt;/code&gt; server
      may be
      able to support&lt;br /&gt;
      this functionality using something Mac-specific &amp;#x2014; patches
      welcome.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Emacspeak
      Setup&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;ul
      class=&quot;org-ul&quot;&gt;&lt;li&gt;Emacspeak now adds
      user-option&lt;br /&gt;
      &lt;code&gt;emacspeak-tts-use-notify-stream&lt;/code&gt;. If this is
      set
      to &lt;code&gt;t&lt;/code&gt; in the&lt;br /&gt;
      user&#39;s initialization file &lt;b&gt;before Emacspeak is
      loaded&lt;/b&gt;, Emacspeak&lt;br /&gt;
      checks to see if the user&#39;s selected TTS engine supports
      multiple&lt;br /&gt;
      instances, and if so launches a second instance of the TTS
      engine&lt;br
      /&gt;
      for use as a &lt;i&gt;Notification TTS Stream&lt;/i&gt;. See
      my&lt;br      /&gt;
      &lt;code&gt;tvr/emacs-startup.el&lt;/code&gt; in the Emacspeak Git
      Repository for  an&lt;br /&gt;
      example setup.&lt;/li&gt;
      &lt;li&gt;The &lt;i&gt;Notification TTS Stream&lt;/i&gt; can be
      restarted
      via command&lt;br /&gt;
      &lt;code&gt;dtk-notify-initialize&lt;/code&gt; bound to
      &lt;code&gt;C-e d
      C-n&lt;/code&gt;. You should&lt;br /&gt;
      ordinarily not need   to invoke this command.&lt;/li&gt;
      &lt;li&gt;The &lt;i&gt;Notification TTS Stream&lt;/i&gt; can be
      shut-down
      using command&lt;br /&gt;
      &lt;code&gt;dtk-notify-shutdown&lt;/code&gt; bound to
      &lt;code&gt;C-e d
      C-s&lt;/code&gt;. When  the  /Notification&lt;br /&gt;
      TTS Stream is not available, Emacspeak defaults to using a
      single&lt;br
      /&gt;
      TTS stream for all spoken output &amp;#x2014; i.e., no
      change.&lt;/li&gt;
      &lt;li&gt;At present, emacspeak tries to use a separate 
      &lt;i&gt;Notification TTS&lt;br /&gt;
      Stream&lt;/i&gt;  when the selected TTS engine is a software TTS
      &lt;br
      /&gt;
      running locally.&lt;/li&gt;
      &lt;li&gt;File
      &lt;code&gt;servers/linux-outloud/notify-asoundrc&lt;/code&gt;
      contains
      the&lt;br /&gt;
      &lt;code&gt;.asoundrc&lt;/code&gt; that I am using on my thinkpad.
      To      have Emacspeak&lt;br /&gt;
      place the &lt;i&gt;Notification TTS Stream&lt;/i&gt; mostly on the
      right,
      the&lt;br /&gt;
      contents of that file (suitably modified for your sound card)&lt;br
      /&gt;
      need  to be placed in file &lt;code&gt;$HOME/.asoundrc&lt;/code&gt;.
      Warning: Handle with&lt;br /&gt;
      care &amp;#x2014; a broken &lt;code&gt;.asoundrc&lt;/code&gt; can
      kill
      all audio output.&lt;/li&gt;
      &lt;li&gt;The &lt;code&gt;.asoundrc&lt;/code&gt; scales  left and
      right
      amplitude  to place the&lt;br /&gt;
      output &lt;i&gt;mostly on the right&lt;/i&gt; &amp;#x2014; to change
      this
      behavior, you can&lt;br /&gt;
      edit the &lt;i&gt;Transformation Table&lt;/i&gt; for virtual device
      &lt;code&gt;tts_mono&lt;/code&gt; in&lt;br /&gt;
      the &lt;code&gt;.asoundrc&lt;/code&gt; file.&lt;/li&gt;
      &lt;li&gt;This set-up has not been tested with
      &lt;code&gt;pulseaudio&lt;/code&gt;.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt;
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;Share and enjoy &amp;#x2014;&lt;br
      /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4148707080078147942'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4148707080078147942'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/11/using-multiple-tts-streams-on-emacspeak.html' title='Using Multiple TTS Streams On The emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-563774085883333398
    </id>
    <published>
      2015-10-16T15:46:00.002-07:00
    </published>
    <updated>2015-10-16T15:46:38.322-07:00
    </updated>
    <title type='text'>Smart
      Actions In Directory Buffers For The Emacspeak Audio Desktop
    </title>
    <content type='html'>&lt;div dir=&quot;ltr&quot;
      style=&quot;text-align:
      left;&quot; trbidi=&quot;on&quot;&gt;&lt;div
      id=&quot;content&quot;&gt;&lt;h1 class=&quot;title&quot;&gt;Smart
      Actions
      In Directory Buffers For The Emacspeak Audio
      Desktop&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Overview&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Emacspeak now provides  a
      &lt;b&gt;smart  actions&lt;/b&gt; feature in Emacs&#39;
      Directory&lt;br
      /&gt;
      Editor (DirEd) buffers.&lt;br /&gt;
      Pressing key &lt;code&gt;Ctrl-RET&lt;/code&gt; in
      &lt;code&gt;DirEd&lt;/code&gt; buffers now invokes &lt;br /&gt;
      an appropriate Emacspeak action on the current file.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Background&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Over time, Emacspeak has come to
      include a number of smart handlers&lt;br /&gt;
      for different file types:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;An MPlayer interface
      for      media files.&lt;/li&gt;
      &lt;li&gt;An EPub reader for electronic books.&lt;/li&gt;
      &lt;li&gt;A light-weight PDF viewer.&lt;/li&gt;
      &lt;li&gt;A table browser for &lt;code&gt;csv&lt;/code&gt;
      files.&lt;/li&gt;
      &lt;/ul&gt;&lt;br /&gt;
      &lt;p&gt;Command
      &lt;code&gt;emacspeak-dired-open-this-file&lt;/code&gt;
      bound to &lt;code&gt;Ctrl-RET&lt;/code&gt; in&lt;br /&gt;
      &lt;code&gt;DirEd&lt;/code&gt; buffers unifies this functionality by
      invoking the appropriate&lt;br /&gt;
      Emacspeak action on the file on the current line. &lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Extending To
      &lt;code&gt;*Locate*&lt;/code&gt; Buffers&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;This
      facility is also available in
      &lt;code&gt;locate-mode&lt;/code&gt;&lt;br
      /&gt;
      buffers.  Emacspeak provides two content-specific&lt;br /&gt;
      &lt;b&gt;Locate&lt;/b&gt; commands:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Command
      &lt;code&gt;emacspeak-m-player-locate (I have this bound to
      key&lt;br      /&gt;
      ~Super-l&lt;/code&gt;) for locating media files that match a
      pattern.&lt;/li&gt;
      &lt;li&gt;Command 
      &lt;code&gt;emacspeak-epub-locate-epub&lt;/code&gt;
      bound to &lt;code&gt;l&lt;/code&gt; in &lt;b&gt;EPub&lt;br /&gt;
      Interaction&lt;/b&gt; for locating &lt;code&gt;epub&lt;/code&gt;
      files.&lt;/li&gt;
      &lt;/ul&gt;&lt;br /&gt;
      &lt;p&gt;Pressing key &lt;code&gt;Ctrl-RET&lt;/code&gt; in the
      resulting
      &lt;code&gt;*Locate*&lt;/code&gt; buffers invokes&lt;br /&gt;
      the afore-mentioned smart action.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/563774085883333398'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/563774085883333398'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/10/smart-actions-in-directory-buffers-for.html' title='Smart Actions In Directory Buffers For The Emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4176978858272937705
    </id>
    <published>
      2015-09-21T11:24:00.000-07:00
    </published>
    <updated>2015-09-21T14:18:00.842-07:00
    </updated>
    <title type='text'>
      Announcing Emacspeak-Muggles: Keyboard Conveniences For Emacspeak
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Announcing Emacspeak-Muggles: Keyboard
      Conveniences For Emacspeak&lt;/h1&gt;&lt;div
      id=&quot;outline-container-sec-1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;sec-1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Announcing
      Emacspeak-Muggles: Keyboard Conveniences For
      Emacspeak&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-sec-1-1&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;sec-1-1&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; Executive
      Summary:&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-1-1&quot;&gt;&lt;p&gt;new module
      &lt;i&gt;emacspeak-muggles&lt;/i&gt; uses package &lt;span
      class=&quot;underline&quot;&gt;hydra&lt;/span&gt; to provide
      keyboard      conveniences.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-sec-1-2&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;sec-1-2&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.2&lt;/span&gt;
      Overview:&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-1-2&quot;&gt;&lt;p&gt;Package &lt;span
      class=&quot;underline&quot;&gt;hydra&lt;/span&gt; allows convenient
      grouping of keyboard commands, see that package&#39;s description
      for      details. It can be installed by executing&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;M-x package-install hydra
      &lt;/pre&gt;&lt;br /&gt;
      &lt;p&gt;Module &lt;span
      class=&quot;underline&quot;&gt;emacspeak-muggles&lt;/span&gt;
      implements
      a set of convenience hydras  that make invoking groups of related
      commands easy. Here are the  &lt;b&gt;Muggles&lt;/b&gt; currently
      implemented:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;dl class=&quot;org-dl&quot;&gt;&lt;dt&gt; Brightness
      &lt;/dt&gt;&lt;dd&gt;Control laptop display brightness using
      xbacklight.
      &lt;dl class=&quot;org-dl&quot;&gt;&lt;dt&gt; view-mode
      &lt;/dt&gt;&lt;dd&gt;Access view-mode functionality without 
      invoking      view-mode explicitly.
      &lt;/dd&gt;
      &lt;dt&gt; org-table-ui  &lt;/dt&gt;&lt;dd&gt;Access Emacspeak Table
      UI
      functionality for org-mode tables.
      &lt;/dd&gt;
      &lt;dt&gt; … &lt;/dt&gt;&lt;dd&gt;And a lot more to come.
      &lt;/dd&gt;
      &lt;/dl&gt;&lt;/dd&gt;&lt;br /&gt;
      &lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-sec-1-3&quot;
      class=&quot;outline-3&quot;&gt;&lt;h3
      id=&quot;sec-1-3&quot;&gt;&lt;span
      class=&quot;section-number-3&quot;&gt;1.3&lt;/span&gt; Blogger
      Note:&lt;/h3&gt;&lt;div class=&quot;outline-text-3&quot;
      id=&quot;text-1-3&quot;&gt;&lt;p&gt;Going forward, thesee articles
      will be
      published via GitHub &amp;#x2013; rather than Blogspot &amp;#x2014;
      the
      new Blogspot API  requires  browser-based authentication that is
      beyond
      Emacs.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: &lt;span
      class=&quot;timestamp-wrapper&quot;&gt;&lt;span
      class=&quot;timestamp&quot;&gt;&amp;lt;2015-07-13
      Mon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2015-07-13 Mon
      09:17&lt;/p&gt;&lt;p
      class=&quot;creator&quot;&gt;Emacs 25.0.50.1 (Org mode
      8.2.10)&lt;/p&gt;&lt;p class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4176978858272937705'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4176978858272937705'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/09/announcing-emacspeak-muggles-keyboard.html' title='Announcing Emacspeak-Muggles: Keyboard Conveniences For Emacspeak'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-283249542002790254
    </id>
    <published>
      2015-09-21T11:22:00.000-07:00
    </published>
    <updated>2015-09-21T14:21:56.607-07:00
    </updated>
    <title type='text'>
      Emacspeak: An Overview Of Voice-Lock Over The Years
    </title>
    <content type='html'>&lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak: An Overview Of Voice-Lock Over
      The
      Years&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;     
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Audio formatted output is provided
      via
      &lt;code&gt;voice-lock&lt;/code&gt; in Emacspeak.&lt;br /&gt;
      The feature was originally implemented in 1994 and 
      significantly&lt;br
      /&gt;
      overhauled in 2002 (with no change in functionality). Now, in
      2015,&lt;br
      /&gt;
      the implementation has been reworked to be once again simpler
      &amp;#x2014; but&lt;br /&gt;
      with the same functionality.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; 1994: Original
      Implementation&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;Font-lock was a new feature in
      Emacs 19
      &amp;#x2014; it was introduced right&lt;br /&gt;
      around the time the Emacspeak project was started.&lt;br /&gt;
      At the time, there  were multiple font-lock packages in&lt;br /&gt;
      Emacs. Emacspeak implemented &lt;code&gt;voice-lock&lt;/code&gt; via
      a
      stand-alone module&lt;br /&gt;
      that attached property &lt;code&gt;personality&lt;/code&gt; to
      buffer      contents. The&lt;br /&gt;
      &lt;code&gt;dtk-speak&lt;/code&gt; Text-To-Speech module treated
      strings
      annotated with&lt;br /&gt;
      property &lt;code&gt;personality&lt;/code&gt; as an &lt;i&gt;aural
      display list&lt;/i&gt; when producing&lt;br /&gt;
      spoken output.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;In  the winter of 1995, I implemented Aural CSS in
      emacspeak,
      and&lt;br /&gt;
      this resulted in module &lt;code&gt;acss.el&lt;/code&gt;
      &amp;#x2014;      that module provides a clean&lt;br /&gt;
      abstraction for defining &lt;i&gt;values&lt;/i&gt; that can be
      assigned
      to property&lt;br /&gt;
      &lt;code&gt;personality&lt;/code&gt;. Next, the rest of emacspeak
      was      overhauled to&lt;br /&gt;
      express all &lt;code&gt;voice-lock&lt;/code&gt; features via the
      ACSS      abstraction.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; 2002
      Overhaul&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;p&gt;With feature
      &lt;code&gt;font-lock&lt;/code&gt; now mature, Emacs itself
      converged on
      a&lt;br /&gt;
      single font-lock module with &lt;code&gt;jit-lock.el&lt;/code&gt;
      providing just-in-time font&lt;br /&gt;
      locking. This meant that Emacspeak&#39;s
      &lt;code&gt;voice-lock&lt;/code&gt; feature could now be&lt;br /&gt;
      more easily implemented by attaching appropriate advice to
      lisp&lt;br      /&gt;
      functions &lt;code&gt;put-text-property&lt;/code&gt; and friends
      &amp;#x2014; this led to the deletion&lt;br /&gt;
      of module &lt;code&gt;voice-lock.el&lt;/code&gt; and the creation of
      module&lt;br /&gt;
      &lt;code&gt;emacspeak-personality.el&lt;/code&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;That module provided multiple options for how faces were
      mapped
      to&lt;br /&gt;
      personalities:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ul class=&quot;org-ul&quot;&gt;&lt;li&gt;Cumulative where 
      property
      &lt;code&gt;personality&lt;/code&gt; was either appended or&lt;br
      /&gt;
      prepended to the list of personalities  at any given
      position.&lt;/li&gt;
      &lt;li&gt;Simple: where the new personality directly replaced any
      previously&lt;br /&gt;
      applied &lt;code&gt;personality&lt;/code&gt; property.&lt;/li&gt;
      &lt;li&gt;None: Where faces were not mapped to
      personalities.&lt;/li&gt;
      &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; 2015
      Overhaul&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;And now, in 2015, the code in
      module
      &lt;code&gt;dtk-speak.el&lt;/code&gt; that implements&lt;br /&gt;
      audio-formatting has been overhauled to directly map faces to&lt;br
      /&gt;
      personalities.  This implementation can be enabled by setting
      the&lt;br
      /&gt;
      option &lt;code&gt;emacspeak-personality-voiceify-faces&lt;/code&gt;
      provided in module&lt;br /&gt;
      &lt;code&gt;emacspeak-personality.el&lt;/code&gt; to &lt;span
      class=&quot;underline&quot;&gt;All&lt;/span&gt;.  This means that
      the      new&lt;br /&gt;
      implementation can co-exist (at least for a while) with the
      earlier&lt;br
      /&gt;
      advice-based implementation from module
      &lt;code&gt;emacspeak-personality.el&lt;/code&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;once deemed to be stable, the new implementation will
      become      the&lt;br /&gt;
      default &amp;#x2014; by changing the default value of&lt;br /&gt;
      &lt;code&gt;emacspeak-personality-voiceify-faces&lt;/code&gt; to
      &lt;span
      class=&quot;underline&quot;&gt;none&lt;/span&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;outline-container-orgheadline5&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline5&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;5&lt;/span&gt;
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-5&quot;&gt;&lt;p&gt;From an end-user&#39;s
      perspective,      nothing has changed in 21 years. From&lt;br /&gt;
      the perspective of implementing voice-lock for Emacs modules,
      nothing&lt;br /&gt;
      has changed &amp;#x2014; all that an Emacspeak extension for a
      specific
      package&lt;br /&gt;
      needs to do to enable &lt;code&gt;voice-lock&lt;/code&gt; is to set
      up a
      face-&amp;gt;personality&lt;br /&gt;
      mapping as before via function
      &lt;code&gt;voice-setup-add-map&lt;/code&gt;. Note that&lt;br /&gt;
      property &lt;code&gt;personality&lt;/code&gt; will continue to have
      higher precedence than&lt;br /&gt;
      property &lt;code&gt;face&lt;/code&gt; with respect to the audio
      formatting that gets applied&lt;br /&gt;
      i.e. Emacspeak first consults value of property
      &lt;code&gt;personality&lt;/code&gt;, and if&lt;br /&gt;
      that is not set, but there is a &lt;code&gt;face&lt;/code&gt;
      property
      set, then that&lt;br /&gt;
      face-&amp;gt;personality mapping (if defined) is used as the aural
      style.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: &lt;span
      class=&quot;timestamp-wrapper&quot;&gt;&lt;span
      class=&quot;timestamp&quot;&gt;&amp;lt;2015-08-18
      Tue&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: T.V Raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2015-08-21 Fri
      10:18&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/283249542002790254'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/283249542002790254'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/09/emacspeak-overview-of-voice-lock-over.html' title='Emacspeak: An Overview Of Voice-Lock Over The Years'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-59350072126563443
    </id>
    <published>
      2015-09-21T11:20:00.002-07:00
    </published>
    <updated>2015-09-21T11:20:34.475-07:00
    </updated>
    <title type='text'>
      Emacspeak:Setting up StumpWM as a speech-enabled Window Manager. 
    </title>
    <content type='html'>&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Emacspeak support for
      StumpWM&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt;
      Summary:&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;Describes my Linux X-Windowing
      setup
      using &lt;b&gt;lightdm&lt;/b&gt; to initialize the desktop and
      StumpWM
      configured as a talking Window Manager.&lt;br /&gt;
      These files can be found under
      &lt;code&gt;emacspeak/stumpwm&lt;/code&gt;
      in your Emacspeak installation, or  in the source code cloned from 
      &lt;a
      
      
      href=&quot;https://github.com/tvraman/emacspeak&quot;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt;
      Overview&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-2&quot;&gt;&lt;p&gt;File
      &lt;code&gt;stumpwmrc&lt;/code&gt;
      is my StumpWM init file that  I use to set up&lt;br /&gt;
      StumpWM as a talking window manager.  With this setup, I run Emacs
      in&lt;br /&gt;
      one window and Chrome+ChromeVox in another window. &lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;File &lt;code&gt;xsession&lt;/code&gt; is my
      &lt;code&gt;.xsession&lt;/code&gt; file  &amp;#x2014; it launches
      StumpWM
      once &lt;code&gt;lightdm&lt;/code&gt; has finished
      authentication.&lt;br
      /&gt;
      You can find my &lt;code&gt;lightdm&lt;/code&gt; setup files in 
      directory &lt;code&gt;emacspeak/tvr/lightdm&lt;/code&gt;.&lt;br
      /&gt;      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt;
      Contents&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-3&quot;&gt;&lt;dl
      
      
      class=&quot;org-dl&quot;&gt;&lt;dt&gt;tts.lisp&lt;/dt&gt;&lt;dd&gt;Interface to Emacspeak TTS  servers.&lt;/dd&gt;
      &lt;dt&gt;stumpwmrc&lt;/dt&gt;&lt;dd&gt;Code to insert into personal
      =.stumpwmr&lt;/dd&gt;
      &lt;dt&gt;xsession- &lt;/dt&gt;&lt;dd&gt;My= .xsession=
      file.&lt;/dd&gt;
      &lt;dt&gt;xlock&lt;/dt&gt;&lt;dd&gt;A light-weight screen-lock
      script.&lt;/dd&gt;
      &lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Resulting
      Functionality&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-4&quot;&gt;&lt;p&gt;To set this up, You should only
      need to
      edit the value of&lt;br /&gt;
      &lt;code&gt;*emacspeak-dir*&lt;/code&gt; in the
      &lt;code&gt;stumpwmrc&lt;/code&gt; file for setup.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;All Keybindings  match
      my
      usual &lt;code&gt;screen&lt;/code&gt; setup, including the
      window-manager
      prefix-key.&lt;/li&gt;
      &lt;li&gt;C-\ is the window-manager key.&lt;/li&gt;
      &lt;li&gt;Switching windows speaks the title of the new
      window.&lt;/li&gt;&lt;li&gt;Stumpwm command for displaying window
      list
      &lt;code&gt;C-\w&lt;/code&gt; also speaks the output.&lt;/li&gt;
      &lt;li&gt;The init file provides a simple lock-screen command bound
      to
      &lt;code&gt;C-\d&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;The above lock command invokes shell script
      &lt;code&gt;xlock&lt;/code&gt; &amp;#x2014; that script takes care
      of      playing an auditory icon when the desktop is locked or
      unlocked.&lt;/li&gt;
      &lt;li&gt;Window manager messages speak automatically; this can be
      toggled with &lt;code&gt;C-\t&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;If there is a lot of activity in a window that is not
      focused,&lt;br /&gt;
      you can turn off automatic speaking of messages using
      &lt;code&gt;C-\t&lt;/code&gt; to&lt;br /&gt;
      avoid distraction.&lt;/li&gt;
      &lt;li&gt;StumpWM is set up to deny raise-focus requests
      &amp;#x2014;      this is so that activity in a window doesn&#39;t
      automatically grab
      focus.&lt;br /&gt;
      I typically run with only one window displayed at a time.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: &lt;span
      class=&quot;timestamp-wrapper&quot;&gt;&lt;span
      class=&quot;timestamp&quot;&gt;&amp;lt;2015-09-07
      Mon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2015-09-07 Mon
      14:44&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/59350072126563443'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/59350072126563443'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/09/emacspeaksetting-up-stumpwm-as-speech.html' title='Emacspeak:Setting up StumpWM as a speech-enabled Window Manager. '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4287314264250464130
    </id>
    <published>
      2015-09-21T11:18:00.001-07:00
    </published>
    <updated>2015-09-21T11:18:45.471-07:00
    </updated>
    <title type='text'>Setting
      Up An X Environment For Using With Emacspeak, ChromeVox and StumpWM 
    </title>
    <content type='html'>&lt;br /&gt;
      &lt;div id=&quot;content&quot;&gt;&lt;h1
      class=&quot;title&quot;&gt;Setting Up An X Environment For Using
      With      Emacspeak, ChromeVox and StumpWM&lt;/h1&gt;&lt;div
      id=&quot;outline-container-orgheadline1&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline1&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;1&lt;/span&gt; Executive
      Summary&lt;/h2&gt;&lt;div class=&quot;outline-text-2&quot;
      id=&quot;text-1&quot;&gt;&lt;p&gt;This is a follow-up to &lt;a
      href=&quot;./stumpwm-setup.html&quot;&gt;the article on my Window
      Manager
      set-up&lt;/a&gt;&lt;br /&gt;
      and details the setup of my X environment. This setup is
      specifically      geared around the following use-cases:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;ol class=&quot;org-ol&quot;&gt;&lt;li&gt;Emacspeak running in a
      window to provide a local audio desktop.&lt;/li&gt;
      &lt;li&gt;ChromeVox running in a second window to provide access to
      JS-powered WebApps. Note  that for the content-oriented Web, I  use
      Emacs&#39; built-in EWW browser.&lt;/li&gt;
      &lt;li&gt;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.&lt;/li&gt;
      &lt;/ol&gt;&lt;br /&gt;
      &lt;p&gt;The setup described below is implemented via my personal
      &lt;code&gt;.XResources&lt;/code&gt;&lt;br /&gt;
      file &amp;#x2014; that file along with my
      &lt;code&gt;.xsession&lt;/code&gt; file that loads it are&lt;br
      /&gt;      both checked into the GitHub repo under
      &lt;code&gt;emacspeak/stumpwm&lt;/code&gt; along with any needed
      helper
      files.&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;p&gt;The remaining sections give a brief descriptive overview of
      the&lt;br /&gt;
      &lt;code&gt;.XResources&lt;/code&gt; and
      &lt;code&gt;.xsession&lt;/code&gt; files as they exist  at the time
      of&lt;br /&gt;
      writing.&lt;br /&gt;
      &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline2&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline2&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Resulting
      Functionality: What This Gives  Us&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;&lt;ol
      class=&quot;org-ol&quot;&gt;&lt;li&gt;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.&lt;/li&gt;
      &lt;li&gt;Output displayed in the Xterm, e.g., by the remote
      Emacspeak
      session, can be brought into the local Emacspeak session by hitting
      &lt;code&gt;PrintEverything&lt;/code&gt; bound to
      &lt;code&gt;Ctrl-Return&lt;/code&gt; in the XTerm window.&lt;/li&gt;
      &lt;li&gt;Contents of  the local clipboard, i.e. Chrome, Emacspeak
      etc.,
      can be pasted into the remote Emacspeak  running in the XTerm using
      key
      &lt;code&gt;Ctrl-Shift-Space&lt;/code&gt;.&lt;/li&gt;
      &lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline3&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline3&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;3&lt;/span&gt; Initializing X
      Session Via File
      &lt;code&gt;.xsession&lt;/code&gt;&lt;/h2&gt;&lt;div     
      class=&quot;outline-text-2&quot; id=&quot;text-3&quot;&gt;&lt;pre
      class=&quot;example&quot;&gt;#!/bin/sh
      #Caps Lock is Control
      setxkbmap -option ctrl:nocaps       
      #load in XResources to customize X environment 
      xrdb -merge $HOME/.Xresources &amp;amp;
      #Display locks after  30 minutes of inactivity
      xautolock -detectsleep -time 30  -locker 
      &quot;$HOME/bin/xlock&quot;      &amp;amp; 
      # Launch Emacs 
      emacs  -title Emacs &amp;amp;
      # XTerm for SSH to remote desktop
      xterm  -title Retriever &amp;amp;
      # StumpWM Setup: Use SBCL 
      export LISP=sbcl
      # Export our  X auth environment 
      ${HOME}/bin/export_x_info &amp;amp;
      # Launch StumpWM
      exec  /usr/local/bin/stumpwm
      &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
      &lt;div id=&quot;outline-container-orgheadline4&quot;
      class=&quot;outline-2&quot;&gt;&lt;h2
      id=&quot;orgheadline4&quot;&gt;&lt;span
      class=&quot;section-number-2&quot;&gt;4&lt;/span&gt; Customizing X
      Environment Via File
      &lt;code&gt;.XResources&lt;/code&gt;&lt;/h2&gt;&lt;div
      class=&quot;outline-text-2&quot; id=&quot;text-4&quot;&gt;&lt;pre
      class=&quot;example&quot;&gt;! 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
      &lt;/pre&gt;&lt;p&gt;:! Setup XTerm Look And Feel:&lt;br /&gt;
      &lt;/p&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;XTerm*Background:       black
      XTerm*Foreground:       white
      ! Setup XTerm key-bindings to match Emacspeak
      XTerm*VT100.translations:       #override \n\
      Ctrl &amp;lt;Key&amp;gt;semicolon: string(0x18)
      string(&quot;@h&quot;)
      \n\Ctrl &amp;lt;Key&amp;gt;comma: string(0x18)
      string(&quot;@a&quot;) \n\
      Ctrl &amp;lt;Key&amp;gt;period: string(0x18) string(&quot;@s&quot;)
      \n\
      Ctrl &amp;lt;Key&amp;gt;apostrophe: string(0x18)
      string(&quot;@s&quot;)
      \n\
      Shift &amp;lt;Key&amp;gt;Return: string(0x18) string(&quot;@s&quot;)
      string(0x0d)\n\
      Ctrl &amp;lt;Key&amp;gt;Return: print-everything()\n\
      Ctrl Shift &amp;lt;Key&amp;gt;space:    insert-selection(CLIPBOARD) 
      &lt;/pre&gt;&lt;p&gt;:! Configure rest of XTerm &lt;br /&gt;
      &lt;/p&gt;&lt;pre class=&quot;example&quot;&gt;XTerm*eightBitInput: 
       
      false
      XTerm*faceName: xft:Inconsolata:pixelsize=14
      XTerm*metaSendsEscape:  true
      &lt;/pre&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;! 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
      &lt;/pre&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;XTerm.*.printerCommand:    
      /usr/local/bin/emacs-pipe.pl
      XTerm.*.printAttributes: 0
      &lt;/pre&gt;&lt;br /&gt;
      &lt;pre class=&quot;example&quot;&gt;!X Font environment
      Xft*antialias:  true
      Xft*dpi:        96
      Xft*hinting:    true
      Xft*hintstyle:  hintfull
      Xft*rgba:       rgb
      &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div
      id=&quot;postamble&quot; class=&quot;status&quot;&gt;&lt;p
      class=&quot;date&quot;&gt;Date: &lt;span
      class=&quot;timestamp-wrapper&quot;&gt;&lt;span
      class=&quot;timestamp&quot;&gt;&amp;lt;2015-09-21
      Mon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p
      class=&quot;author&quot;&gt;Author: raman&lt;/p&gt;&lt;p
      class=&quot;date&quot;&gt;Created: 2015-09-21 Mon
      09:14&lt;/p&gt;&lt;p
      class=&quot;validation&quot;&gt;&lt;a
      
      
      href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;Validate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4287314264250464130'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4287314264250464130'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/09/setting-up-x-environment-for-using-with.html' title='Setting Up An X Environment For Using With Emacspeak, ChromeVox and StumpWM '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1698175370010769215
    </id>
    <published>
      2015-04-30T15:37:00.001-07:00
    </published>
    <updated>2015-04-30T15:37:55.362-07:00
    </updated>
    <title type='text'>
      Announcing Emacspeak 42.0 (AnswerDog)
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      42.0—AnswerDog—Unleashed!&lt;/h1&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-42.0
      (AnswerDog) Unleashed!&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      **  For Immediate Release:
      &lt;/p&gt;
      
      &lt;p&gt;
      San Jose, Calif., (May 1, 2015)
      Emacspeak:  Redefining Accessibility In The Era Of Internet 
      Computing 
      –Zero cost of upgrades/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;– announces the
      immediate world-wide availability of &lt;a
      
      
      href=&#39;https://github.com/tvraman/emacspeak/releases/download/42.0/emacspeak-42.0.tar.bz2&#39;&gt;Emacspeak 42.0&lt;/a&gt; (AnswerDog) –a
      powerful audio desktop for leveraging today&#39;s evolving data,
      social
      and service-oriented Internet cloud.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; Investors
      Note:&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      With several prominent tweeters expanding coverage of
      &lt;span class=&#39;underline&#39;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; What Is
      It?&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Major
      Enhancements:&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Emacs EWW: Consume Web content efficiently.   🕷
      &lt;/li&gt;
      &lt;li&gt;Updated Info manual 🕮
      &lt;/li&gt;
      &lt;li&gt;SoX integration for generating auditory feedback ℗
      &lt;/li&gt;
      &lt;li&gt;Speech-enabled Elfeed, an Emacs Feed Reader 🗞
      &lt;/li&gt;
      &lt;li&gt;CSound generated 3d Auditory Icons ⟀
      &lt;/li&gt;
      &lt;li&gt;Audacious — An Audio Workbench using SoX   🝧
      &lt;/li&gt;
      &lt;li&gt;Audio presets for MPlayer using Ladspa filters ♮
      &lt;/li&gt;
      &lt;li&gt;emacspeak-url-templates: Smart Web access.  ♅
      &lt;/li&gt;
      &lt;li&gt;Integrated TuneIn Radio search, browse and play 📻
      &lt;/li&gt;
      &lt;li&gt;emacspeak-websearch.el Find things fast. ♁
      &lt;/li&gt;
      &lt;li&gt;Calibre integration for searching and viewing epub 📚
      📔
      &lt;/li&gt;
      &lt;li&gt;Complete anything via company integration  ∁
      &lt;/li&gt;
      &lt;li&gt;Emacs 24.4: Supports all new features in Emacs 24.4. 🌚
      &lt;/li&gt;
      &lt;li&gt;And a lot more than will fit this margin. …
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-4&#39;&gt;
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h3&gt;
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a crash-prone
      but well-marketed mousetrap with the assertion &quot;Emacs is a
      system
      from
      the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-5&#39;&gt;
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Independent
      Test      Results:&lt;/h3&gt;
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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; &quot;It is the user –and not
      the      computer– that stops functioning when Emacspeak is
      uninstalled!&quot;.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-sec-1-5-1&#39;&gt;
      &lt;h4 id=&#39;sec-1-5-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h4&gt;
      &lt;div id=&#39;text-1-5-1&#39; class=&#39;outline-text-4&#39;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-6&#39;&gt;
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h3&gt;
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from GitHub  –see
      &lt;a
      
      
      href=&#39;https://github.com/tvraman/emacspeak&#39;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt;  you can visit 
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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
      &lt;a href=&#39;http://emacspeak.blogspot.com&#39;&gt;Emacspeak
      Blog&lt;/a&gt; is a good source
      for news about recent enhancements and how to use them.
      &lt;/p&gt;
      
      &lt;p&gt;
      The latest development snapshot of Emacspeak is always available via
      Git  from GitHub  at 
      &lt;a
      href=&#39;https://github.com/tvraman/emacspeak&#39;&gt;Emacspeak
      GitHub &lt;/a&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-7&#39;&gt;
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt;
      History:&lt;/h3&gt;
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&#39;&gt;efficient access&lt;/a&gt; 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&#39;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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-8&#39;&gt;
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; About
      Emacspeak:&lt;/h3&gt;
      &lt;div id=&#39;text-1-8&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Originally based at Cornell (NY)
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; –home to Auditory User
      Interfaces (AUI) on the WWW– Emacspeak is now maintained on
      GitHub --&lt;a
      
      
      href=&#39;https://github.com/tvraman/emacspeak&#39;&gt;https://github.com/tvraman/emacspeak&lt;/a&gt; —and
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information
      Technology at the Smithsonian&#39;s National Museum of American
      History.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-9&#39;&gt;
      &lt;h3 id=&#39;sec-1-9&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.9&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h3&gt;
      &lt;div id=&#39;text-1-9&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      **About This Release:
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  –see
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt;Created: 2015-04-30 Thu
      15:35&lt;/p&gt;      &lt;p class=&#39;creator&#39;&gt;&lt;a
      href=&#39;http://www.gnu.org/software/emacs/&#39;&gt;Emacs&lt;/a&gt;
      25.0.50.1 (&lt;a href=&#39;http://orgmode.org&#39;&gt;Org&lt;/a&gt;
      mode
      8.2.10)&lt;/p&gt;
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1698175370010769215'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1698175370010769215'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/04/announcing-emacspeak-420-answerdog.html' title='Announcing Emacspeak 42.0 (AnswerDog)'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4322999248520814794
    </id>
    <published>
      2015-04-25T09:49:00.001-07:00
    </published>
    <updated>2015-04-25T09:49:43.791-07:00
    </updated>
    <title type='text'>
      Emacspeak 3.0: Released 20 Years Ago Today!
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;twenty-years-after&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak Was
      Released
      Twenty Years Ago Today&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      The more things change, the more they remain the same.
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak was released 20 years ago on April 25, 1995 with &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/releases/release-3.0.html&#39;&gt;this
      announcement&lt;/a&gt;. 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
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4322999248520814794'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4322999248520814794'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/04/emacspeak-30-released-20-years-ago-today.html' title='Emacspeak 3.0: Released 20 Years Ago Today!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-131675225312108827
    </id>
    <published>
      2015-04-15T17:37:00.001-07:00
    </published>
    <updated>2015-04-15T17:37:32.705-07:00
    </updated>
    <title type='text'>HowTo:
      Log Speech Server Output To Aid In Developing TTS Servers
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;HowTo: Log TTS Server Output To Aid
      In
      TTS Server Development&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; HowTo: Log TTS
      Server
      Output To Aid In TTS Server Development&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; How It
      Works&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      The &lt;span
      class=&#39;underline&#39;&gt;emacspeak/servers&lt;/span&gt;
      directory now contains &lt;span
      
      class=&#39;underline&#39;&gt;log_&amp;lt;tts-name&amp;gt;&lt;/span&gt;
      servers for the various supported speech servers.  When selected,
      thesee &lt;i&gt;log-speech&lt;/i&gt; servers produce no speech
      output;      instead, they
      output the speech server commands received from Emacspeak to a file
      in
      &lt;span class=&#39;underline&#39;&gt;/tmp&lt;/span&gt; named
      &lt;span
      class=&#39;underline&#39;&gt;tts-log-$$&lt;/span&gt;.
      Once you&#39;re done logging, you can examine this file  from the
      primary
      Emacs session.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Typical
      Workflow&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Assume you want to see the speech-server commands sent by Emacs when
      you
      perform a specific action, in this instance, pressing &lt;span
      class=&#39;underline&#39;&gt;C-e m&lt;/span&gt; to execute command
      &lt;span
      class=&#39;underline&#39;&gt;emacspeak-speak-mode-line&lt;/span&gt;.
      &lt;/p&gt;
      
      &lt;ol class=&#39;org-ol&#39;&gt;
      &lt;li&gt;In  a separate Linux  console or X-Window, launch Emacs
      with
      Emacspeak loaded — this is  separate from your primary Emacs
      session.
      &lt;/li&gt;
      &lt;li&gt;In this Emacs session, use &lt;span
      class=&#39;underline&#39;&gt;C-e d d&lt;/span&gt; (command &lt;span
      class=&#39;underline&#39;&gt;dtk-select-server&lt;/span&gt;) and
      select
      &lt;span
      
      class=&#39;underline&#39;&gt;log-&amp;lt;tts-name&amp;gt;&lt;/span&gt; as
      the speech server, where &lt;span
      class=&#39;underline&#39;&gt;tts-name&lt;/span&gt; corresponds to
      the      speech engine you&#39;re testing.
      &lt;/li&gt;
      &lt;li&gt;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 &lt;span class=&#39;underline&#39;&gt;/tmp&lt;/span&gt;.
      &lt;/li&gt;
      &lt;li&gt;Press &lt;span class=&#39;underline&#39;&gt;C-e
      m&lt;/span&gt;
      – to produce the log output you want to see.
      &lt;/li&gt;
      &lt;li&gt;Use command _emacspeak-emergency-tts-restart  to get
      speech      back.
      &lt;/li&gt;
      &lt;li&gt;Open a &lt;span
      class=&#39;underline&#39;&gt;dired&lt;/span&gt;
      buffer on &lt;span class=&#39;underline&#39;&gt;/tmp&lt;/span&gt;,
      press
      &lt;span class=&#39;underline&#39;&gt;s&lt;/span&gt; to sort files
      by      date, and find your generated log output at the top of the
      list.
      &lt;/li&gt;
      &lt;li&gt;Note: It is useful to configure your default speech engine
      via 
      Custom – see user option  &lt;span
      
      class=&#39;underline&#39;&gt;emacspeak-emergency-tts-server&lt;/span&gt;.
      It provides a quick-fire means to get speech back if you ever switch
      to
      a speech-server that fails for some reason.
      &lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;
      &lt;b&gt;Share And Enjoy&lt;/b&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: &lt;span
      class=&#39;timestamp-wrapper&#39;&gt;&lt;span
      class=&#39;timestamp&#39;&gt;&amp;lt;2015-04-15
      Wed&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
      &lt;p class=&#39;author&#39;&gt;Author: raman&lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt;Created: 2015-04-15 Wed
      17:33&lt;/p&gt;      &lt;p class=&#39;creator&#39;&gt;Emacs
      25.0.50.1 (Org mode
      8.2.10)&lt;/p&gt;
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/131675225312108827'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/131675225312108827'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/04/howto-log-speech-server-output-to-aid.html' title='HowTo: Log Speech Server Output To Aid In Developing TTS Servers'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7044326487827026820
    </id>
    <published>
      2015-03-09T08:39:00.001-07:00
    </published>
    <updated>2015-03-09T08:39:08.290-07:00
    </updated>
    <title type='text'>
      Emacspeak Development Is Moving To GitHub
    </title>
    <content type='html'> 
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt; 
      &lt;div id=&#39;content&#39;&gt; 
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak Development Is Moving To
      GitHub&lt;/h1&gt; 
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt; 
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt;
      Summary:&lt;/h2&gt; 
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt; 
      &lt;p&gt; 
      Emacspeak development is moving from &lt;a
      href=&#39;http://emacspeak.googlecode.com&#39;&gt;Google Code
      Hosting&lt;/a&gt; to &lt;a
      
      href=&#39;https://github.com/tvraman/emacspeak&#39;&gt;GitHub&lt;/a&gt;. 
      If you have been running from the SVN repository, I recommend you 
      switch to the GitHub version by executing: 
      &lt;/p&gt; 
      
      &lt;pre class=&#39;example&#39;&gt; 
      git clone https://github.com/tvraman/emacspeak.git 
      make config 
      make -j 
      &lt;/pre&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;If using Outloud TTS: 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;pre class=&#39;example&#39;&gt; 
      cd servers/linux-outloud  &amp;amp;&amp;amp;  make 
      &lt;/pre&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;If using Espeak TTS: 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;pre class=&#39;example&#39;&gt; 
      cd servers/linux-espeak &amp;amp;&amp;amp; make 
      &lt;/pre&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;After this,  all you should need to stay up to date is a
      periodic  
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;pre class=&#39;example&#39;&gt; 
      git pull; make config; make  
      &lt;/pre&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-2&#39;&gt; 
      &lt;h2 id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; A Brief
      History&lt;/h2&gt; 
      &lt;div id=&#39;text-2&#39; class=&#39;outline-text-2&#39;&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;The first five years of Emacspeak development used a local
      RCS 
      repository on my home machine (1994 –1999). 
      &lt;/li&gt; 
      &lt;li&gt;The first few releases of Emacspeak were distributed
      through
      the 
      Web site and FTP server at Digital Research; they were also 
      mirrored at Cornell. 
      &lt;/li&gt; 
      &lt;li&gt;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. 
      &lt;/li&gt; 
      &lt;li&gt;In 2000, I created &lt;a
      href=&#39;http://emacspeak.sf.net&#39;&gt;Emacspeak On
      SourceForge&lt;/a&gt; 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;p&gt; 
      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 &lt;a
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;Cornell
      CS&lt;/a&gt; around the same time. 
      &lt;/p&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;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 &lt;a
      href=&#39;http://emacspeak.googlecode.com/svn/trunk&#39;&gt;Google
      Code
      SVN&lt;/a&gt; was a no-brainer. 
      &lt;/li&gt; 
      &lt;li&gt;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. 
      &lt;/li&gt; 
      &lt;li&gt;Now, it&#39;s time to move to GitHub. I&#39;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. 
      &lt;/li&gt; 
      &lt;li&gt;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. 
      &lt;/li&gt; 
      &lt;li&gt;For Git integration in Emacs, my personal preference is
      package
      Magit available through Elpa — 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;pre class=&#39;example&#39;&gt; 
      M-x package-install magit in Emacs. 
      &lt;/pre&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;The GitHub Web site itself is fairly heavy-weight in terms
      of
      its 
      use of scripting, i.e. performing all operations through the 
      &lt;a href=&#39;http://github.com&#39;&gt;github.com&lt;/a&gt; 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. 
      &lt;/li&gt; 
      &lt;li&gt;So this week, I did the work to migrate Emacspeak
      development
      to 
      &lt;a
      href=&#39;https://github.com/tvraman/emacspeak&#39;&gt;Emacspeak On
      GitHub&lt;/a&gt;. 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-3&#39;&gt; 
      &lt;h2 id=&#39;sec-3&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;3&lt;/span&gt; Status Of
      Migration&lt;/h2&gt; 
      &lt;div id=&#39;text-3&#39; class=&#39;outline-text-2&#39;&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;With help from some of the kind folk at Google Code
      Hosting,
      I&#39;ve 
      successfully migrated the source code repository including all 
      release tags to GitHub. 
      &lt;/li&gt; 
      &lt;li&gt;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. 
      &lt;/li&gt; 
      &lt;li&gt;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. 
      &lt;/li&gt; 
      &lt;li&gt;I have also taken this opportunity to prune out legacy
      portions
      of 
      the Emacspeak codebase by moving modules to &lt;span
      class=&#39;underline&#39;&gt;obsolete&lt;/span&gt; at each 
      level of the directory tree. 
      &lt;/li&gt; 
      &lt;li&gt;Since starting the &lt;a
      href=&#39;http://emacspeak.blogspot.com&#39;&gt;Emacspeak
      Blog&lt;/a&gt;
      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 &lt;span
      class=&#39;underline&#39;&gt;blogs&lt;/span&gt;. 
      &lt;/li&gt; 
      &lt;li&gt;Note that newer articles are also available as .org files
      under
      sub-directory &lt;span
      class=&#39;underline&#39;&gt;announcements&lt;/span&gt;. 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-4&#39;&gt; 
      &lt;h2 id=&#39;sec-4&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;4&lt;/span&gt; Next
      Steps&lt;/h2&gt; 
      &lt;div id=&#39;text-4&#39; class=&#39;outline-text-2&#39;&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;I still need to learn how to do software releases on
      GitHub. 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      
      
      
      
      &lt;p&gt; 
      &lt;b&gt;Share And Enjoy!&lt;/b&gt; 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt; 
      &lt;p class=&#39;date&#39;&gt;Date: &lt;span
      class=&#39;timestamp-wrapper&#39;&gt;&lt;span
      class=&#39;timestamp&#39;&gt;&amp;lt;2015-03-06
      Fri&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; 
      &lt;p class=&#39;author&#39;&gt;Author: raman&lt;/p&gt; 
      &lt;p class=&#39;date&#39;&gt;Created: 2015-03-07 Sat
      08:12&lt;/p&gt; 
      &lt;p class=&#39;creator&#39;&gt;Emacs 25.0.50.1 (Org mode
      8.2.10)&lt;/p&gt; 
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7044326487827026820'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7044326487827026820'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/03/emacspeak-development-is-moving-to.html' title='Emacspeak Development Is Moving To GitHub'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8289264463441948640
    </id>
    <published>
      2015-02-17T17:40:00.001-08:00
    </published>
    <updated>2015-02-17T17:40:22.919-08:00
    </updated>
    <title type='text'>Enhanced
      Audio On The Emacspeak Desktop
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Enhanced Audio On The Emacspeak
      Desktop&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Enhanced Audio On
      The
      Emacspeak Desktop&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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!
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; An Audio
      Workbench
      Using SoX&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-sec-1-1-1&#39;&gt;
      &lt;h4 id=&#39;sec-1-1-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.1.1&lt;/span&gt;
      Pre-Requisites&lt;/h4&gt;
      &lt;div id=&#39;text-1-1-1&#39; class=&#39;outline-text-4&#39;&gt;
      &lt;p&gt;
      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. 
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-sec-1-1-2&#39;&gt;
      &lt;h4 id=&#39;sec-1-1-2&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.1.2&lt;/span&gt; Usage
      Instructions
      For SoX.el&lt;/h4&gt;
      &lt;div id=&#39;text-1-1-2&#39; class=&#39;outline-text-4&#39;&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Launch the Audio Workbench via  by  executing &lt;span
      class=&#39;underline&#39;&gt;M-x sox&lt;/span&gt;.
      &lt;/li&gt;
      &lt;li&gt;Use &lt;span class=&#39;underline&#39;&gt;f&lt;/span&gt;
      to      open a wave or mp3 file you wish to manipulate.
      &lt;/li&gt;
      &lt;li&gt;Add any of the supported effects using &lt;span
      class=&#39;underline&#39;&gt;e&lt;/span&gt;.
      &lt;/li&gt;
      &lt;li&gt;Use upper-case &lt;span
      class=&#39;underline&#39;&gt;E&lt;/span&gt; to add more than one
      effect.
      &lt;/li&gt;
      &lt;li&gt;Hit &lt;span class=&#39;underline&#39;&gt;p&lt;/span&gt;
      to      play the result, &lt;span
      class=&#39;underline&#39;&gt;s&lt;/span&gt; to
      save the result to a new
      file.
      &lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;
      At present sox.el supports a few effects such as  &lt;span
      class=&#39;underline&#39;&gt;trim&lt;/span&gt; for
      clipping files, &lt;span
      class=&#39;underline&#39;&gt;reverb&lt;/span&gt;
      for adding a reverb etc., with more to
      come as I use it.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Adding High-End
      Reverb When Playing Media Streams&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      I use &lt;span class=&#39;underline&#39;&gt;mplayer&lt;/span&gt; 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 &lt;span
      class=&#39;underline&#39;&gt;tap-plugins&lt;/span&gt; implements a
      large
      number of high-quality Ladspa filters, including a versatile
      &lt;span class=&#39;underline&#39;&gt;Reverb&lt;/span&gt; filter.
      &lt;/p&gt;
      
      &lt;p&gt;
      Once you have package &lt;span
      class=&#39;underline&#39;&gt;tap-plugins&lt;/span&gt; and its
      dependenciesinstalled, and a relatively new version of MPlayer (with
      support
      for Ladspa plugins), you can now apply various &lt;i&gt;Reverb
      Presets&lt;/i&gt;
      to your media streams via Emacspeak MPlayer command
      &lt;span
      
      
      class=&#39;underline&#39;&gt;emacspeak-m-player-apply-reverb-preset&lt;/span&gt; bound to &lt;span class=&#39;underline&#39;&gt;P&lt;/span&gt; in
      Emacspeak MPlayer. Package &lt;span
      class=&#39;underline&#39;&gt;tap-plugins&lt;/span&gt; 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
      &lt;span
      class=&#39;underline&#39;&gt;R&lt;/span&gt;
      in Emacspeak MPlayer.
      Alternatively, you can pick a default effect to use via Emacs&#39;
      custom interface; see option  &lt;span
      
      
      class=&#39;underline&#39;&gt;emacspeak-m-player-reverb-filter&lt;/span&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Defining
      Convenient
      MPLayer Shortcuts&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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 &lt;i&gt;Music&lt;/i&gt; vs
      &lt;i&gt;Audio Books&lt;/i&gt; –
      see command &lt;span
      
      class=&#39;underline&#39;&gt;emacspeak-m-player-accelerator&lt;/span&gt;.
      This is best used by customizing Emacspeak option
      &lt;span
      
      
      class=&#39;underline&#39;&gt;emacspeak-media-location-bindings&lt;/span&gt; — just use the Customize
      interface to specify  pairs of shortcut keys and media locations.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: &lt;span
      class=&#39;timestamp-wrapper&#39;&gt;&lt;span
      class=&#39;timestamp&#39;&gt;&amp;lt;2015-02-17
      Tue&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
      &lt;p class=&#39;author&#39;&gt;Author: raman&lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt;Created: 2015-02-17 Tue
      17:37&lt;/p&gt;      &lt;p class=&#39;creator&#39;&gt;Emacs
      25.0.50.1 (Org mode
      8.2.10)&lt;/p&gt;
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8289264463441948640'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8289264463441948640'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/02/enhanced-audio-on-emacspeak-desktop.html' title='Enhanced Audio On The Emacspeak Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6710753170618770899
    </id>
    <published>
      2015-02-17T16:49:00.001-08:00
    </published>
    <updated>2015-02-17T16:49:04.554-08:00
    </updated>
    <title type='text'>Internet
      Radio: Tune-In For Emacspeak
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Internet Radio: Tune-In For
      Emacspeak&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Internet Radio:
      Tune-In For Emacspeak&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      I just checked in  the  ability to browse, search and play
      radio-stations from TuneIn  on the Emacspeak Audio Desktop.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt;
      Pre-Requisites&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;ol class=&#39;org-ol&#39;&gt;
      &lt;li&gt;xsltproc for xsl stylesheet processing.
      &lt;/li&gt;
      &lt;li&gt;Linux mplayer for playing streams, preferably the latest
      version&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-2&#39;&gt;&lt;h2
      id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; Simple Usage
      Summary&lt;/h2&gt;
      &lt;div id=&#39;text-2&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;M-x emacspeak-wizards-tune-in-radio-browse brings up  the
      browse interface.
      &lt;/li&gt;
      &lt;li&gt;M-x emacspeak-wizards-tune-in-radio-search prompts for a
      query and brings up search results.
      &lt;/li&gt;
      &lt;li&gt;Both &lt;i&gt;browse&lt;/i&gt; and
      &lt;i&gt;search&lt;/i&gt;
      get the results back as an &lt;span
      class=&#39;underline&#39;&gt;OPML&lt;/span&gt;
      feed, which gets displayed as a simple Web page within the
      Emacs Web Browser (EWW if using 24.4).
      &lt;/li&gt;
      &lt;li&gt;Items identified as (link) are themselves &lt;span
      class=&#39;underline&#39;&gt;OPML&lt;/span&gt; feeds and
      can be opened via command emacspeak-feeds-opml-display.
      &lt;/li&gt;
      &lt;li&gt;The initial browse buffer is set up to use opml-display
      when you click on link items.
      &lt;/li&gt;
      &lt;li&gt;You can play (audio) links by invoking command
      &lt;span
      class=&#39;underline&#39;&gt;emacspeak-webutils-play-media-at-point
      —
      this command is
      bound to _;&lt;/span&gt; in  EWW.
      &lt;/li&gt;
      &lt;li&gt;You need to provide an interactive prefix argument to the
      above command to indicate that it is a playlist — so you
      actually press &lt;span class=&#39;underline&#39;&gt;C-u
      ;&lt;/span&gt;
      on audio links.
      &lt;/li&gt;
      &lt;li&gt;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 &lt;span
      class=&#39;underline&#39;&gt;mplayer&lt;/span&gt;
      will throw a security error — you can
      tell &lt;span class=&#39;underline&#39;&gt;mplayer&lt;/span&gt; to
      follow
      them by invoking the earlier command
      with two prefix args so &lt;span class=&#39;underline&#39;&gt;C-u
      C-u      ;&lt;/span&gt;.
      &lt;/li&gt;
      &lt;li&gt;All this works about 90% of the time. In some cases –
      depending on whether the server failed to generate the right
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      mimetype for the play URL etc, you may need to run
      &lt;/p&gt;
      &lt;pre class=&#39;example&#39;&gt;
      curl --silent &amp;lt;url&amp;gt; 
      &lt;/pre&gt;
      &lt;p&gt;
      where &amp;lt;url&amp;gt; is the URL of the audio link, then  pass
      that
      resulting URL to command &lt;span
      class=&#39;underline&#39;&gt;emacspeak-m-player-url&lt;/span&gt;.
      &lt;/p&gt;
      
      &lt;p&gt;
      Share And Enjoy!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: &lt;span
      class=&#39;timestamp-wrapper&#39;&gt;&lt;span
      class=&#39;timestamp&#39;&gt;&amp;lt;2015-02-17
      Tue&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt;Created: 2015-02-17 Tue
      16:41&lt;/p&gt;      &lt;p class=&#39;creator&#39;&gt;Emacs
      25.0.50.1 (Org mode
      8.2.10)&lt;/p&gt;
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6710753170618770899'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6710753170618770899'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/02/internet-radio-tune-in-for-emacspeak.html' title='Internet Radio: Tune-In For Emacspeak'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8322832952612579359
    </id>
    <published>
      2015-01-06T09:15:00.001-08:00
    </published>
    <updated>2015-01-06T09:15:12.551-08:00
    </updated>
    <title type='text'>3D: A
      Spatial Auditory Icon Theme Generated Using CSound
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h2 class=&#39;title&#39;&gt;Using CSound To Generate Auditory
      Icons&lt;/h2&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h3
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Auditory Icon
      Theme:
      3d&lt;/h3&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      &lt;a href=&#39;http://www.csounds.com/&#39;&gt;CSound&lt;/a&gt; is
      a      sophisticated music sound syntheseis system with a
      strong community of developers.  I&#39;ve played off and on with
      CSound ever since the early 90&#39;s  and have always been intrigued
      by the possibility of   algorithmically creating new auditory icon
      themes
      for
      Emacspeak  using CSound.
      &lt;/p&gt;
      
      &lt;p&gt;
      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 &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/sounds/3d/&#39;&gt;3d&lt;/a&gt;. This theme is best
      experienced with headphones — many of the generated icons use
      spatial audio to good effect.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8322832952612579359'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8322832952612579359'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2015/01/3d-spatial-auditory-icon-theme.html' title='3D: A Spatial Auditory Icon Theme Generated Using CSound'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1737069223455578017
    </id>
    <published>
      2014-11-26T07:09:00.001-08:00
    </published>
    <updated>2014-11-26T07:09:50.389-08:00
    </updated>
    <title type='text'>
      Announcing Emacspeak 41.0: NiceDog
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt; 
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      41.0—NiceDog—Unleashed!&lt;/h1&gt; 
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt; 
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-41.0
      (NiceDog) Unleashed!&lt;/h2&gt; 
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt; 
      &lt;p&gt; 
      **  For Immediate Release: 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      San Jose, Calif., (Nov 26, 2014) 
      Emacspeak:  Redefining Accessibility In The Era Of Web  Computing  
      –Zero cost of upgrades/downgrades makes priceless software
      affordable! 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;– 
      announces the immediate world-wide availability of Emacspeak 41.0 
      (NiceDog) –a powerful audio desktop for leveraging today&#39;s 
      evolving data, social and service-oriented Web cloud. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt; 
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; Investors
      Note:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      With several prominent tweeters expanding coverage of 
      &lt;span class=&#39;underline&#39;&gt;#emacspeak&lt;/span&gt;,
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt; 
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; What Is
      It?&lt;/h3&gt; 
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Major
      Enhancements:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;Emacs EWW: Consume Web content efficiently.   📚 
      &lt;/li&gt; 
      &lt;li&gt;emacspeak-url-templates: Smart Web access. ♅ 
      &lt;/li&gt; 
      &lt;li&gt;emacspeak-websearch.el Find things fast. ♁ 
      &lt;/li&gt; 
      &lt;li&gt;emacspeak-google.el: Improved Google integration. ⁈ 
      &lt;/li&gt; 
      &lt;li&gt;Calibre integration for searching and viewing epub 📚 
      &lt;/li&gt; 
      &lt;li&gt;Complete anything via company integration  🗜 
      &lt;/li&gt; 
      &lt;li&gt;Speech-enabled 2048 🂠 
      &lt;/li&gt; 
      &lt;li&gt;Emacspeak At Twenty -Historical Overview ⛬ 
      &lt;/li&gt; 
      &lt;li&gt;gmaps.el: Find places, read reviews, get there. 🌐 
      &lt;/li&gt; 
      &lt;li&gt;Feed Browser Consume feeds post Google-Reader.  ␌ 
      &lt;/li&gt; 
      &lt;li&gt;Freebase Search: Explore freebase knowledge base. 🆓 
      &lt;/li&gt; 
      &lt;li&gt;Emacs 24.4: Supports all new features in Emacs 24.4. 🌚 
      &lt;/li&gt; 
      &lt;li&gt;And a lot more than will fit this margin. … 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-4&#39;&gt; 
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      On this theme, when once challenged by a proponent of a 
      crash-prone but well-marketed mousetrap with the assertion 
      &quot;Emacs is a system from the 70&#39;s&quot;, 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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-5&#39;&gt; 
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Independent
      Test      Results:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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; &quot;It is the user –and
      not the 
      computer– that stops functioning when Emacspeak is
      uninstalled!&quot;. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-sec-1-5-1&#39;&gt; 
      &lt;h4 id=&#39;sec-1-5-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h4&gt; 
      &lt;div id=&#39;text-1-5-1&#39; class=&#39;outline-text-4&#39;&gt; 
      &lt;p&gt; 
      UnDoctored Videos Inc. is looking for volunteers to star in a 
      video demonstrating such complete user failure. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-6&#39;&gt; 
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      Emacspeak can be downloaded from Google Code  –see 
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit 
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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 
      &lt;a href=&#39;http://emacspeak.blogspot.com&#39;&gt;Emacspeak
      Blog&lt;/a&gt; is a good source 
      for news about recent enhancements and how to use them. 
      The WowDog release is at  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/wiki/downloads/emacspeak-41.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/svn/wiki/downloads/emacspeak-41.0.tar.bz2&lt;/a&gt;. 
      The latest development snapshot of Emacspeak is always available via
            Subversion from Google Code  at  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt; 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-7&#39;&gt; 
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt;
      History:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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 
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&#39;&gt;efficient access&lt;/a&gt; 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&#39;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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      About Emacspeak: 
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Originally based at Cornell (NY) 
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; –home to Auditory User 
      Interfaces (AUI) on the WWW– Emacspeak is now maintained on 
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and 
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information 
      Technology at the Smithsonian&#39;s National Museum of American 
      History. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-8&#39;&gt; 
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h3&gt; 
      &lt;div id=&#39;text-1-8&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      **About This Release: 
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Windows-Free (WF) is a favorite battle-cry of The League Against 
      Forced Fenestration (LAFF).  –see 
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on 
      the ill-effects of Forced Fenestration. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1737069223455578017'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1737069223455578017'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/11/announcing-emacspeak-410-nicedog.html' title='Announcing Emacspeak 41.0: NiceDog'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-669045308065263176
    </id>
    <published>
      2014-09-15T14:11:00.001-07:00
    </published>
    <updated>2014-09-15T14:11:25.613-07:00
    </updated>
    <title type='text'>
      Emacspeak At Twenty: Looking Back, Looking Forward
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak At Twenty: Looking Back,
      Looking Forward&lt;/h1&gt;
      &lt;div id=&#39;table-of-contents&#39;&gt;
      &lt;h2&gt;Table of Contents&lt;/h2&gt;
      &lt;div id=&#39;text-table-of-contents&#39;&gt;
      &lt;ul&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-1&#39;&gt;1.
      Introduction&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-2&#39;&gt;2. Using UNIX With Speech
      Output
      —  1994&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-3&#39;&gt;3. Key Enabler — Emacs
      And      Lisp Advice&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-4&#39;&gt;4. Key Component —  Text
      To
      Speech (TTS)&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-5&#39;&gt;5. Emacspeak And Software
      Development&lt;/a&gt;
      &lt;ul&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-5-1&#39;&gt;5.1. Programming
      Defensively&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-6&#39;&gt;6. Emacspeak And Authoring
      Documents&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-7&#39;&gt;7. Emacspeak And The Early
      Days
      Of The Web&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-8&#39;&gt;8. Audio Formatting — 
      Generalizing Aural CSS&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-9&#39;&gt;9. Conversational Gestures
      For
      The Audio Desktop&lt;/a&gt;
      &lt;ul&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-9-1&#39;&gt;9.1. Speech-Enabling
      Interactive Games&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-10&#39;&gt;10. Accessing Media
      Streams&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-11&#39;&gt;11. EBooks—   Ubiquitous
      Access To Books&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-12&#39;&gt;12. Leveraging
      Computational
      Tools —  From SQL And R To IPython Notebooks&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-13&#39;&gt;13. Social Web  — EMail,
      Instant Messaging, Blogging  And Tweeting Using Open
      Protocols&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-14&#39;&gt;14. The RESTful Web — 
      Web
      Wizards And URL Templates For Faster Access&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-15&#39;&gt;15. Mashing It Up — 
      Leveraging Evolving Web APIs&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-16&#39;&gt;16.
      Conclusion&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&#39;#sec-17&#39;&gt;17.
      References&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt;
      Introduction&lt;/h2&gt;&lt;div id=&#39;text-1&#39;
      class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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 &lt;a
      href=&#39;http://norvig.com/21-days.html&#39;&gt;Learning To Program
      In 10 Years&lt;/a&gt; by Peter Norvig for some of its inspiration.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-2&#39;&gt;&lt;h2
      id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; Using UNIX With
      Speech
      Output —  1994&lt;/h2&gt;
      &lt;div id=&#39;text-2&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      As a graduate student at &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/info/people/raman/raman.html&#39;&gt;Cornell&lt;/a&gt;, 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.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      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!
      &lt;/p&gt;
      
      &lt;p&gt;
      Another colleague, Win Treese, had pointed out the interesting
      possibilities presented by package &lt;b&gt;advice&lt;/b&gt; in
      Emacs      19.23 — a
      few weeks earlier, he had sent around a small snippet of code
      that magically modified Emacs&#39; version-control primitive to
      first      create an &lt;i&gt;RCS&lt;/i&gt; 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!
      &lt;/p&gt;
      
      &lt;p&gt;
      Connecting the dots, I decided to write myself a tool that
      augmented Emacs&#39; default behavior to &lt;i&gt;speak&lt;/i&gt;
      —      within about 4
      hours, version 0.01 of Emacspeak was up and running.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-3&#39;&gt;&lt;h2
      id=&#39;sec-3&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;3&lt;/span&gt; Key Enabler —
      Emacs
      And Lisp Advice&lt;/h2&gt;
      &lt;div id=&#39;text-3&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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 &lt;a
      
      
      href=&#39;http://en.wikipedia.org/wiki/Self-voicing&#39;&gt;speech-enabled applications&lt;/a&gt;. For a detailed overview of the
      architecture of Emacspeak, see the &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/bc-emacspeak/publish-emacspeak-bc.html&#39;&gt;chapter on Emacspeak&lt;/a&gt; in the
      book &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2007/07/emacspeak-and-beautiful-code.html&#39;&gt;Beautiful Code&lt;/a&gt; from O&#39;Reilly.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-4&#39;&gt;&lt;h2
      id=&#39;sec-4&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;4&lt;/span&gt; Key Component —
            Text To Speech (TTS)&lt;/h2&gt;
      &lt;div id=&#39;text-4&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      I went to IBM Research in 1999; this coincided with IBM releasing
      a version of the Eloquennce TTS engine on Linux under the name
      &lt;i&gt;ViaVoice Outloud&lt;/i&gt;. 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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&#39;s newer TTS engines are
      geared toward mainstream use-cases where
      &lt;i&gt;naturalness&lt;/i&gt;
      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
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman/aster/demo.html&#39;&gt;Audio System For Technical Readings (AsTeR)&lt;/a&gt; in 1994 using the
      DECTalk; 20 years later, we implemented &lt;a
      
      
      href=&#39;http://allthingsd.com/20130604/t-v-ramans-audio-deja-vu-from-google-a-math-reading-system-for-the-web/&#39;&gt;MathML support&lt;/a&gt; in
      &lt;a
      href=&#39;http://www.chromevox.com/&#39;&gt;ChromeVox&lt;/a&gt;     
      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!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-5&#39;&gt;&lt;h2
      id=&#39;sec-5&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;5&lt;/span&gt; Emacspeak And
      Software
      Development&lt;/h2&gt;
      &lt;div id=&#39;text-5&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Audio formatting using voice-lock to provide aural syntax
      highlighting.
      &lt;/li&gt;
      &lt;li&gt;Succinct auditory icons to provide efficient feedback.
      &lt;/li&gt;
      &lt;li&gt;Emacs&#39; ability to navigate code structurally   — 
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      as opposed to moving around by plain-text units such as
      characters, lines and words. S-Expressions are a major win!
      &lt;/p&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Emacs&#39; ability to specialize behavior based on major
      and
      minor modes.
      &lt;/li&gt;
      &lt;li&gt;Ability to browse program code using  tags, and getting
      fluent spoken feedback.
      &lt;/li&gt;
      &lt;li&gt;Completion &lt;b&gt;everywhere&lt;/b&gt;.
      &lt;/li&gt;
      &lt;li&gt;Everything is searchable   —   this is a huge win when
      you
      cannot see the screen.
      &lt;/li&gt;
      &lt;li&gt;Interactive spell-checking using ISpell with continuous
      spoken feedback augmented by aural highlights.
      &lt;/li&gt;
      &lt;li&gt;Running code compilation  and being able to jump to errors
      with spoken feedback.
      &lt;/li&gt;
      &lt;li&gt;Ability to move through diff chunks when working with
      source
      code and source control systems; refined diffs as provided by
      the &lt;b&gt;ediff&lt;/b&gt; package when speech-enabled is a major
      productivity win.
      &lt;/li&gt;
      &lt;li&gt;Ability to easily move between email, document authoring
      and
      programming — though this may appear trivial, it continues to
      be one of Emacs&#39; biggest wins.
      &lt;/li&gt;
      &lt;/ul&gt;
      
      
      &lt;p&gt;
      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&#39;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-5-1&#39;&gt;
      &lt;h3 id=&#39;sec-5-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;5.1&lt;/span&gt; Programming
      Defensively&lt;/h3&gt;
      &lt;div id=&#39;text-5-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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
      &lt;b&gt;programming defensively&lt;/b&gt;.  Here are some other key
      features of
      the Emacspeak code-base:
      &lt;/p&gt;
      
      &lt;ol class=&#39;org-ol&#39;&gt;
      &lt;li&gt;The code-base is extremely &lt;b&gt;bushy&lt;/b&gt; rather
      than
      deeply
      hierarchical — this means that when a module breaks, it does
      not affect the rest of the system.
      &lt;/li&gt;
      &lt;li&gt;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.
      &lt;/li&gt;
      &lt;li&gt;Audio formatting is abstracted by using the formalism
      defined in Aural CSS.
      &lt;/li&gt;
      &lt;li&gt;Emacspeak integrates with Emacs&#39; user interface
      conventions
      by taking over a single prefix key &lt;b&gt;C-e&lt;/b&gt; with
      &lt;i&gt;all&lt;/i&gt;
      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.
      &lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-6&#39;&gt;&lt;h2
      id=&#39;sec-6&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;6&lt;/span&gt; Emacspeak And
      Authoring Documents&lt;/h2&gt;
      &lt;div id=&#39;text-6&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      In 1994, my preferred environment for authoring
      &lt;b&gt;all&lt;/b&gt;
      documents
      was &lt;b&gt;LaTeX&lt;/b&gt; using the Auctex package. Later I
      started
      writing
      either LaTeX or HTML using the appropriate support modes; today I
      use &lt;b&gt;org-mode&lt;/b&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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 &lt;b&gt;never&lt;/b&gt; need to focus on what the
      content is
      going to look like — that job is best left to the computer.
      &lt;/p&gt;
      
      &lt;p&gt;
      As an example of producing high-fidelity visual content, see this
      write-up on
      &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/polyhedra/&#39;&gt;Polyhedral
      Geometry&lt;/a&gt; that I published in 2000; all of the content,
      including the drawings were created by me using Emacs.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-7&#39;&gt;&lt;h2
      id=&#39;sec-7&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;7&lt;/span&gt; Emacspeak And The
      Early Days Of The Web&lt;/h2&gt;
      &lt;div id=&#39;text-7&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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 &lt;i&gt;ange-ftp&lt;/i&gt;; 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
      &lt;a href=&#39;http://www.w3.org/TR/CSS2/aural.html&#39;&gt;Aural
      CSS
      specification&lt;/a&gt;. 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 &lt;b&gt;label&lt;/b&gt; 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&#39; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      But Emacs-W3 went through a revival on the emacspeak audio
      desktop in late 1999 with the arrival of XSLT, and Daniel
      Veillard&#39;s excellent implementation via the
      &lt;b&gt;libxml2&lt;/b&gt; and
      &lt;b&gt;libxslt&lt;/b&gt; packages. With thesee in hand, Emacspeak
      was
      able to
      hand-off the bulk of HTML error correction to the
      &lt;b&gt;xsltproc&lt;/b&gt;
      tool. The lack of visual fidelity didn&#39;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.
      &lt;/p&gt;
      
      &lt;p&gt;
      During the last 24 months, &lt;b&gt;libxml2&lt;/b&gt; 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 &lt;b&gt;shr&lt;/b&gt; (Simple HTML
      Renderer)
      within
      the &lt;b&gt;gnus&lt;/b&gt; package for rendering HTML email. Later,
      the
      author of
      &lt;b&gt;gnus&lt;/b&gt; and &lt;b&gt;shr&lt;/b&gt; created a new
      light-weight HTML viewer called
      &lt;b&gt;eww&lt;/b&gt; 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
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2014/05/emacspeak-eww-updates-for-complete.html&#39;&gt;extend package &lt;b&gt;eww&lt;/b&gt;&lt;/a&gt; with support for DOM filtering and quick
      content navigation.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-8&#39;&gt;&lt;h2
      id=&#39;sec-8&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;8&lt;/span&gt; Audio Formatting
      — 
      Generalizing Aural CSS&lt;/h2&gt;
      &lt;div id=&#39;text-8&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      A key idea in Audio System For Technical Readings &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman/aster/aster-toplevel.html&#39;&gt;(AsTeR)&lt;/a&gt; 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
      &lt;b&gt;voice-lock&lt;/b&gt;
      module that paralleled Emacs&#39; &lt;b&gt;font-lock&lt;/b&gt;
      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&#39;
      &lt;b&gt;face&lt;/b&gt;
      properties to voice parameters. To aid in projecting visual
      formatting onto auditory space, I created property
      &lt;b&gt;personality&lt;/b&gt;
      analogous to Emacs&#39; &lt;b&gt;face&lt;/b&gt; property that could
      be
      applied to
      content displayed in Emacs; module &lt;b&gt;voice-lock&lt;/b&gt;
      applied
      that
      property appropriately, and the Emacspeak core handled the
      details of mapping personality values to the underlying TTS
      engine.
      &lt;/p&gt;
      
      &lt;p&gt;
      The values used in property &lt;b&gt;personality&lt;/b&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      Later in 1996, all of Emacs&#39; &lt;b&gt;voice-lock&lt;/b&gt;
      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 &lt;b&gt;personality&lt;/b&gt; can
      be      thought of
      as holding an &lt;b&gt;aural display list&lt;/b&gt; — 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.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      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&#39;s audio formatted output is the only way I can
      correctly write &lt;b&gt;else if&lt;/b&gt; vs
      &lt;b&gt;elsif&lt;/b&gt; in
      various programming
      languages!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-9&#39;&gt;&lt;h2
      id=&#39;sec-9&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;9&lt;/span&gt; Conversational
      Gestures For The Audio Desktop&lt;/h2&gt;
      &lt;div id=&#39;text-9&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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 &lt;i&gt;Conversational
      Gestures&lt;/i&gt;
      and structured browsing/searching as a means of thinking about
      user interfaces.
      &lt;/p&gt;
      
      &lt;p&gt;
      By now, Emacspeak was a complete environment — I formalized what
      it provided under the moniker &lt;i&gt;Complete Audio
      Desktop&lt;/i&gt;.
      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 &lt;b&gt;dired&lt;/b&gt; (Directory
      Editor)
      forbrowsing and manipulating the filesystem, or
      &lt;b&gt;proced&lt;/b&gt;
      (Process
      Editor) for browsing and manipulating running processes. Emacs&#39;
      integration with &lt;b&gt;ispell&lt;/b&gt; 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 &lt;i&gt;what to
      speak&lt;/i&gt;
      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.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      This was also when I stepped back to build out Emacspeak&#39;s table
      browsing facilities — see the online Emacspeak documentation for
      details on Emacspeak&#39;s table browsing functionality which
      continues to remain one of the richest collection of end-user
      affordances for working with two-dimensional data.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-9-1&#39;&gt;
      &lt;h3 id=&#39;sec-9-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;9.1&lt;/span&gt; Speech-Enabling
      Interactive Games&lt;/h3&gt;
      &lt;div id=&#39;text-9-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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
      &lt;b&gt;Tetris&lt;/b&gt; as a means of exploring this space, the
      result
      was an
      Emacspeak extension to speech-enable module
      &lt;b&gt;tetris.el&lt;/b&gt;.
      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
      &lt;a
      href=&#39;http://www.w3.org/MarkUp/Forms/&#39;&gt;XForms&lt;/a&gt;
      work at the W3C.
      &lt;/p&gt;
      
      &lt;p&gt;
      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 &lt;b&gt;must&lt;/b&gt; perform, where you&#39;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 &lt;a
      
      href=&#39;http://en.wikipedia.org/wiki/Tetris&#39;&gt;Tetris&lt;/a&gt;,
      &lt;a
      
      
      href=&#39;http://en.wikipedia.org/wiki/2048_(video_game)&#39;&gt;Sudoku&lt;/a&gt;, and of late the popular &lt;a href=&#39;http://en.wikipedia.org/wiki/2048_(video_game)&#39;&gt;2048 game&lt;/a&gt;. 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-10&#39;&gt;
      &lt;h2 id=&#39;sec-10&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;10&lt;/span&gt; Accessing Media
      Streams&lt;/h2&gt;
      &lt;div id=&#39;text-10&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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&#39;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 &lt;b&gt;trplayer&lt;/b&gt;
      — a
      headless
      version of RealPlayer; later I built Emacspeak module
      &lt;b&gt;emacspeak-m-player&lt;/b&gt; for interfacing with package
      &lt;b&gt;mplayer&lt;/b&gt;. A
      key aspect of streaming media integration in emacspeak is that
      one can launch and control streams without ever switching away
      from one&#39;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 &lt;b&gt;emms&lt;/b&gt; as well as providing
      wrappers
      for
      &lt;b&gt;mplayer&lt;/b&gt; and &lt;b&gt;alsaplayer&lt;/b&gt; —
      collectively, thesee let you
      efficiently launch all types of media streams, including
      streaming video, without having to explicitly switch context.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      In the mid-90&#39;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&#39; 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
      &lt;b&gt;ido&lt;/b&gt;,
      thesee
      types of actions become even more efficient!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-11&#39;&gt;
      &lt;h2 id=&#39;sec-11&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;11&lt;/span&gt; EBooks—  
      Ubiquitous Access To Books&lt;/h2&gt;
      &lt;div id=&#39;text-11&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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 &lt;a
      href=&#39;http://www.gutenberg.org/&#39;&gt;Gutenberg&lt;/a&gt;
      leading
      the way. During the mid-90&#39;s, I had
      access to a wide range of electronic materials from sources such
      as O&#39;Reilly Publishing and various electronic journals — The
      Perl
      Journal (TPJ) is one that I still remember fondly.
      &lt;/p&gt;
      
      &lt;p&gt;
      Emacspeak provided fairly light-weight but efficient access to
      all of the electronic books I had on my local disk — Emacs&#39;
      strengths with respect to browsing textual documents meant that I
      needed to build little that was specific to Emacspeak. The late
      90&#39;s saw the arrival of Daisy as an XML-based format for
      accessible electronic books. The last decade has seen the rapid
      convergence to &lt;b&gt;epub&lt;/b&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      The somewhat informal process used by publishers like O&#39;Reilly
      to      make technical material available to users with print
      impairments
      was later formalized by &lt;a
      href=&#39;https://www.bookshare.org/&#39;&gt;BookShare&lt;/a&gt; —
      today, qualified users can
      obtain a large number of books and periodicals initially as
      Daisy-3 and increasingly as &lt;b&gt;EPub&lt;/b&gt;. BookShare
      provides a
      RESTful
      API for searching and downloading books; Emacspeak module
      &lt;b&gt;emacspeak-bookshare&lt;/b&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      A useful complement to this suite of tools is the Calibre package
      for organizing ones ebook collection; Emacspeak now implements an
      &lt;b&gt;EPub Interaction&lt;/b&gt; mode that leverages Calibre
      (actually
      sqlite3)
      to search and browse books, along with an integrated &lt;b&gt;EPub
      mode&lt;/b&gt;
      for reading books.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-12&#39;&gt;
      &lt;h2 id=&#39;sec-12&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;12&lt;/span&gt; Leveraging
      Computational Tools —  From SQL And R To IPython
      Notebooks&lt;/h2&gt;
      &lt;div id=&#39;text-12&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      The ability to invoke external processes and interface with them
      via a simple read-eval-loop (REPL) is perhaps one of Emacs&#39;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      In this context, module &lt;b&gt;ein&lt;/b&gt; — 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 &lt;b&gt;ein&lt;/b&gt; brings the power and
      convenience
      of Emacs &#39;
      editing facilities when developing the content. Speech-enabling
      package &lt;b&gt;ein&lt;/b&gt; 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-13&#39;&gt;
      &lt;h2 id=&#39;sec-13&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;13&lt;/span&gt; Social Web  —
      EMail, Instant Messaging, Blogging  And Tweeting Using Open
      Protocols&lt;/h2&gt;
      &lt;div id=&#39;text-13&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      The ability to process large amounts of email and electronic news
      has always been a feature of Emacs. I started using package
      &lt;b&gt;vm&lt;/b&gt;
      for email in 1990, along with &lt;b&gt;gnus&lt;/b&gt; 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
      &lt;b&gt;tnt&lt;/b&gt; 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 &lt;b&gt;tnt&lt;/b&gt;, I created an Emacs
      client      called
      &lt;b&gt;ChatterBox&lt;/b&gt; using the Lotus Sametime API — this
      enabled me to
      communicate with colleagues at work from the comfort of
      Emacs. Packages like &lt;b&gt;vm&lt;/b&gt;, &lt;b&gt;gnus&lt;/b&gt;,
      &lt;b&gt;tnt&lt;/b&gt; and &lt;b&gt;ChatterBox&lt;/b&gt; 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&#39;t be able
      to      tell what client the user at the other end is using.
      Contrast      this with closed services that have an inherent
      &lt;i&gt;lock-in&lt;/i&gt; model
      e.g., proprietary word processors that use undocumented
      serialization formats — for a fun read, see this write-up on
      &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/publications/colored-paper.html&#39;&gt;Universe Of Fancy Colored Paper&lt;/a&gt;.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      Today, my personal choice for instant messaging is the open
      Jabber platform. I connect to Jabber via Emacs package
      &lt;b&gt;emacs-jabber&lt;/b&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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
      &lt;b&gt;Blogs&lt;/b&gt;
      — 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
      &lt;b&gt;much&lt;/b&gt;      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 &lt;b&gt;g-client&lt;/b&gt; — this package
      provides Emacs
      wrappers for Google services that provide a RESTful API.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-14&#39;&gt;
      &lt;h2 id=&#39;sec-14&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;14&lt;/span&gt; The RESTful Web
      — 
      Web Wizards And URL Templates For Faster Access&lt;/h2&gt;
      &lt;div id=&#39;text-14&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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&#39;s when I
      observed the following with respect to my own behavior on many
      popular sites:
      &lt;/p&gt;
      
      &lt;ol class=&#39;org-ol&#39;&gt;
      &lt;li&gt;I opened a Web page that took a while to load (remember, 
      I      was still using Emacs-W3),
      &lt;/li&gt;
      &lt;li&gt;I then searched through the page to find a form-field that
      I filled out, e.g., start and end destinations on Yahoo
      Maps,
      &lt;/li&gt;
      &lt;li&gt;I hit &lt;b&gt;submit&lt;/b&gt;, and once again waited for
      a
      heavy-weight
      HTML page to load,
      &lt;/li&gt;
      &lt;li&gt;And finally, I hunted through the rendered content to find
      what I was looking for.
      &lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      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 &lt;b&gt;emacspeak-websearch&lt;/b&gt;
      that did
      the
      following:
      &lt;/p&gt;
      
      &lt;ol class=&#39;org-ol&#39;&gt;
      &lt;li&gt;Prompt via the minibuffer for the requisite fields,
      &lt;/li&gt;
      &lt;li&gt;Consed up an HTTP GET URL,
      &lt;/li&gt;
      &lt;li&gt;Retrieved this URL,
      &lt;/li&gt;
      &lt;li&gt;And filtered out the specific portion of the HTML  DOM
      that      held the generated response.
      &lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;
      Notice that the above implementation hard-wires the CGI parameter
      names used by a given Web application into the code implemented
      in module &lt;b&gt;emacspeak-websearch&lt;/b&gt;. REST as a design
      pattern had not
      yet been recognized, leave alone formalized, and module
      &lt;b&gt;emacspeak-websearch&lt;/b&gt; was initially decryed as
      being      fragile.
      &lt;/p&gt;
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      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!
      &lt;/p&gt;
      
      &lt;p&gt;
      Later, in early 2000, I created companion module
      &lt;b&gt;emacspeak-url-templates&lt;/b&gt; — partially inspired by
      Emacs&#39;
      &lt;b&gt;webjump&lt;/b&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      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
      &lt;b&gt;greader&lt;/b&gt; client for managing ones feed
      subscriptions;
      with the
      demise of Google Reader, I implemented module
      &lt;b&gt;emacspeak-feeds&lt;/b&gt;
      for organizing feeds on the Emacspeak desktop. A companion
      package &lt;b&gt;emacspeak-webspace&lt;/b&gt; implements additional
      goodies
      including a continuously updating ticker of headlines taken from
      the user&#39;s collection of subscribed feeds.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-15&#39;&gt;
      &lt;h2 id=&#39;sec-15&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;15&lt;/span&gt; Mashing It Up
      — 
      Leveraging Evolving Web APIs&lt;/h2&gt;
      &lt;div id=&#39;text-15&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      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:
      &lt;/p&gt;
      
      &lt;ol class=&#39;org-ol&#39;&gt;
      &lt;li&gt;Minibuffer completion for Google Search using Google
      Suggest
      to provide completions.
      &lt;/li&gt;
      &lt;li&gt;Librivox for browsing  and playing free audio books.
      &lt;/li&gt;
      &lt;li&gt;NPR  for browsing and playing NPR archived programs.
      &lt;/li&gt;
      &lt;li&gt;BBC for playing a wide variety of streaming content
      available from the BBC.
      &lt;/li&gt;
      &lt;li&gt;A Google Maps front-end that  provides instantaneous
      access      to directions and Places search.
      &lt;/li&gt;
      &lt;li&gt;Access to Twitter via package
      &lt;b&gt;twittering-mode&lt;/b&gt;.
      &lt;/li&gt;
      &lt;/ol&gt;
      
      
      &lt;p&gt;
      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 &lt;b&gt;head&lt;/b&gt;
      and a
      &lt;b&gt;body&lt;/b&gt; —
      where the &lt;b&gt;head&lt;/b&gt; is a specific user interface, with
      the
      &lt;b&gt;body&lt;/b&gt;
      implementing the application logic. A cleanly defined separation
      between the &lt;b&gt;head&lt;/b&gt; and &lt;b&gt;body&lt;/b&gt;
      allows
      one to attach &lt;i&gt;different&lt;/i&gt;
      user interfaces i.e., &lt;b&gt;heads&lt;/b&gt; to the given
      &lt;b&gt;body&lt;/b&gt; without any
      loss of functionality, or the need to re-implement the entire
      application. Modern platforms like Android enable such separation
      via an
      &lt;a
      
      
      href=&#39;http://developer.android.com/reference/android/content/Intent.html&#39;&gt;Intent&lt;/a&gt;
      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&#39;s tight association of the Web to the Web Browser.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-16&#39;&gt;
      &lt;h2 id=&#39;sec-16&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;16&lt;/span&gt;
      Conclusion&lt;/h2&gt;
      &lt;div id=&#39;text-16&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      In 1996, I wrote an article entitled
      &lt;a
      
      
      href=&#39;http://www.drdobbs.com/user-interface-a-means-to-an-end/184410453&#39;&gt;User
      Interface — A Means To An End&lt;/a&gt; pointing out that the size
      and
      shape of computers were determined by the keyboard and
      display. This is even more true in today&#39;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 &lt;b&gt;personal&lt;/b&gt; 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.
      &lt;/p&gt;
      
      
      
      &lt;p&gt;
      –T.V. Raman, San Jose, CA, September 12, 2014
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      
      
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-17&#39;&gt;
      &lt;h2 id=&#39;sec-17&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;17&lt;/span&gt;
      References&lt;/h2&gt;
      &lt;div id=&#39;text-17&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;&lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/aui/aui.html&#39;&gt;Auditory User Interfaces&lt;/a&gt;   Klewer Publishing, 1997.
      &lt;/li&gt;
      &lt;li&gt;Advice      An Emacs Lisp package by    &lt;a
      href=&#39;http://www.isi.edu/~hans/&#39;&gt;Hans Chalupsky&lt;/a&gt;
      that
      became part of Emacs 19.23.
      &lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2007/07/emacspeak-and-beautiful-code.html&#39;&gt;Beautiful Code&lt;/a&gt;   An overview of the Emacspeak architecture.
      &lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/chi96-emacspeak/&#39;&gt;Speech-Enabled Applications&lt;/a&gt;   Emacspeak at CHI 1996.
      &lt;/li&gt;
      &lt;li&gt;EWW   Emacspeak  &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2014/05/emacspeak-eww-updates-for-complete.html&#39;&gt;extends EWW &lt;/a&gt;.
      &lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&#39;http://artlung.com/smorgasborg/C_R_Y_P_T_O_N_O_M_I_C_O_N.shtml&#39;&gt;In The Beginning Was The Command Line&lt;/a&gt; By Neal Stephenson 
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/669045308065263176'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/669045308065263176'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/09/emacspeak-at-twenty-looking-back.html' title='Emacspeak At Twenty: Looking Back, Looking Forward'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3679250138370991755
    </id>
    <published>
      2014-05-27T08:54:00.001-07:00
    </published>
    <updated>2014-05-27T08:54:34.942-07:00
    </updated>
    <title type='text'>
      Emacspeak And Company: Complete Anything Front-End For emacspeak
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak And Company: Complete
      Anything
      Front-End For Emacspeak&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak And
      Company:
      Complete Anything Front-End For Emacspeak&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      Module &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/emacspeak-company.el&#39;&gt;emacspeak-company&lt;/a&gt; speech-enables package 
      &lt;a
      
      
      href=&#39;http://www.emacswiki.org/emacs/CompanyMode&#39;&gt;Company&lt;/a&gt; — a  flexible &lt;b&gt;complete-anything&lt;/b&gt;   extension for Emacs.
      Package &lt;i&gt;company&lt;/i&gt; 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.,
      &lt;b&gt;C++&lt;/b&gt; vs
      &lt;b&gt;Emacs Lisp&lt;/b&gt;; front-ends can provide different
      &lt;i&gt;visualizations&lt;/i&gt;
      of the available completions.
      &lt;/p&gt;
      
      &lt;p&gt;
      I started using package &lt;b&gt;company&lt;/b&gt; as I taught
      myself to
      program
      in &lt;a href=&#39;http://golang.org&#39;&gt;Go&lt;/a&gt;  over the
      last
      couple of weeks, and package
      &lt;b&gt;emacspeak-company&lt;/b&gt;  was one of the bi-products.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; Using Company
      With
      Emacspeak&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      You can turn on &lt;i&gt;company-mode&lt;/i&gt; 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 &lt;i&gt;company-go&lt;/i&gt; in conjunction with the
      &lt;a
      href=&#39;http://github.com/nsf/gocode&#39;&gt;GoCode&lt;/a&gt;
      tool.      &lt;/p&gt;
      
      &lt;p&gt;
      See customization group &lt;i&gt;company&lt;/i&gt;  to customize
      package
      &lt;i&gt;company&lt;/i&gt;;
      Emacspeak loads package &lt;i&gt;emacspeak-company&lt;/i&gt;  when
      package&lt;i&gt;company&lt;/i&gt; is loaded, and that automatically
      sets
      up the
      &lt;b&gt;Emacspeak&lt;/b&gt; front-end.
      &lt;/p&gt;
      
      &lt;p&gt;
      Once activated, package &lt;i&gt;company&lt;/i&gt; 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 &lt;span
      class=&#39;underline&#39;&gt;up/down&lt;/span&gt; arrows or
      keys &lt;span class=&#39;underline&#39;&gt;M-n&lt;/span&gt; and
      &lt;span
      class=&#39;underline&#39;&gt;M-p&lt;/span&gt;. You can also search
      and
      filter the
      available completions, see documentation for command
      &lt;span class=&#39;underline&#39;&gt;company-mode&lt;/span&gt;. The
      available visual front-ends also display
      relevant metadata for the current candidate in the echo
      area. 
      &lt;/p&gt;
      
      &lt;p&gt;
      Front-end &lt;i&gt;emacspeak-company&lt;/i&gt; performs the
      following      additional
      actions:
      &lt;/p&gt;
      
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Speaks current candidate along with the relevant metadata.
      &lt;/li&gt;
      &lt;li&gt;The metadata is spoken using  &lt;span
      class=&#39;underline&#39;&gt;voice-annotate&lt;/span&gt;.
      &lt;/li&gt;
      &lt;li&gt;Auditory icon &lt;span
      class=&#39;underline&#39;&gt;help&lt;/span&gt; indicates  that 
      completion has started.
      &lt;/li&gt;
      &lt;li&gt;pressing &lt;span
      class=&#39;underline&#39;&gt;F1&lt;/span&gt;
      during completion displays documentation for
      the current candidate.
      &lt;/li&gt;
      &lt;li&gt;You can choose the current candidate by pressing &lt;span
      class=&#39;underline&#39;&gt;RET&lt;/span&gt;; this
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      speaks the selected candidate.
      &lt;/p&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Auditory icon &lt;span
      class=&#39;underline&#39;&gt;close-object&lt;/span&gt; indicates
      that      completion has finished.
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Insights From
      Speech-Enabling Company&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;p&gt;
      Module &lt;i&gt;emacspeak-company&lt;/i&gt;   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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt;
      Acknowledgements&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Thanks again to the authors of package &lt;i&gt;company&lt;/i&gt;
      for a
      really
      nice tool —  it&#39;s a real productivity winner — especially
      when
      learning a new language and its built-in packages.
      &lt;/p&gt;
      
      &lt;p&gt;
      I found thesee articles really helpful while learning to write
      package &lt;i&gt;emacspeak-company&lt;/i&gt;.
      &lt;/p&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;&lt;a
      
      
      href=&#39;http://yousefourabi.com/blog/2014/05/emacs-for-go/&#39;&gt;Setting Up GoMode&lt;/a&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a
      
      
      href=&#39;http://dominik.honnef.co/posts/2013/08/writing_go_in_emacs__cont__/&#39;&gt;Writing Go In Emacs&lt;/a&gt;
      &lt;/li&gt;
      &lt;/ul&gt;
      
      
      &lt;p&gt;
      Learning Go was a pleasure (it&#39;s still a pleasure — I&#39;m
      still
      learning:-))
      and the documentation on &lt;a
      href=&#39;http://golang.org&#39;&gt;GoLang&lt;/a&gt;  is excellent.
      As an
      added bonus,
      that entire site uses clean, well-formed HTML  without any
      unnecessary  artifacts that make so much of today&#39;s Web a  giant
      mess; I have been able to use Emacs/EWW exclusively while working
      with &lt;i&gt;golang.org&lt;/i&gt;  — a real bonus for someone
      programming heavily
      in Emacs.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: &lt;span
      class=&#39;timestamp-wrapper&#39;&gt;&lt;span
      class=&#39;timestamp&#39;&gt;&amp;lt;2014-05-27
      Tue&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt;Created: 2014-05-27 Tue
      08:51&lt;/p&gt;      &lt;p class=&#39;creator&#39;&gt;Emacs
      24.3.91.1 (Org mode
      8.2.6)&lt;/p&gt;
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3679250138370991755'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3679250138370991755'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/05/emacspeak-and-company-complete-anything.html' title='Emacspeak And Company: Complete Anything Front-End For emacspeak'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5171030908858943189
    </id>
    <published>
      2014-05-12T07:52:00.001-07:00
    </published>
    <updated>2014-05-12T07:52:29.164-07:00
    </updated>
    <title type='text'>
      Announcing Emacspeak 40.0 AKA WowDog!
    </title>
    <content type='html'> 
      
      &lt;div id=&#39;content&#39;&gt; 
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      40.0—WowDog—Unleashed!&lt;/h1&gt; 
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt; 
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-40.0
      (WowDog) Unleashed!&lt;/h2&gt; 
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt; 
      &lt;p&gt; 
      **  For Immediate Release: 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      San Jose, Calif., (May 13, 2014) 
      Emacspeak:  Redefining Accessibility In The Era Of Web  Computing  
      –Zero cost of upgrades/downgrades makes priceless software
      affordable! 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;– 
      announces the immediate world-wide availability of Emacspeak 40.0 
      (WowDog) –a powerful audio desktop for leveraging today&#39;s 
      evolving data, social and service-oriented Web cloud. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt; 
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; Investors
      Note:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      With several prominent tweeters expanding coverage of 
      &lt;span class=&#39;underline&#39;&gt;#emacspeak&lt;/span&gt;,
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt; 
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; What Is
      It?&lt;/h3&gt; 
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Major
      Enhancements:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;Emacs EWW: Consume Web content efficiently.   📚 
      &lt;/li&gt; 
      &lt;li&gt;emacspeak-url-templates: Smart Web access. ♅ 
      &lt;/li&gt; 
      &lt;li&gt;emacspeak-websearch.el Find things fast. ♁ 
      &lt;/li&gt; 
      &lt;li&gt;gmaps.el: Find places, read reviews, get there. 🌐 
      &lt;/li&gt; 
      &lt;li&gt;Feed Browser Consume feeds post Google-Reader.  ␌ 
      &lt;/li&gt; 
      &lt;li&gt;Freebase Search: Explore freebase knowledge base. 🆓 
      &lt;/li&gt; 
      &lt;li&gt;Emacs 24.4: Supports all new features in Emacs 24.4. 🌚 
      &lt;/li&gt; 
      &lt;li&gt;And a lot more than will fit this margin. … 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-4&#39;&gt; 
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      On this theme, when once challenged by a proponent of a 
      crash-prone but well-marketed mousetrap with the assertion 
      &quot;Emacs is a system from the 70&#39;s&quot;, 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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-5&#39;&gt; 
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Independent
      Test      Results:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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; &quot;It is the user –and
      not the 
      computer– that stops functioning when Emacspeak is
      uninstalled!&quot;. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-sec-1-5-1&#39;&gt; 
      &lt;h4 id=&#39;sec-1-5-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h4&gt; 
      &lt;div id=&#39;text-1-5-1&#39; class=&#39;outline-text-4&#39;&gt; 
      &lt;p&gt; 
      UnDoctored Videos Inc. is looking for volunteers to star in a 
      video demonstrating such complete user failure. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-6&#39;&gt; 
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      Emacspeak can be downloaded from Google Code  –see 
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit 
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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 
      &lt;a href=&#39;http://emacspeak.blogspot.com&#39;&gt;Emacspeak
      Blog&lt;/a&gt; is a good source 
      for news about recent enhancements and how to use them. 
      The WowDog release is at  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/wiki/downloads/emacspeak-40.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/svn/wiki/downloads/emacspeak-40.0.tar.bz2&lt;/a&gt;. 
      The latest development snapshot of Emacspeak is always available via
            Subversion from Google Code  at  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt; 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-7&#39;&gt; 
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt;
      History:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      Emacspeak 40.0 goes back to Web basics by enabling &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&#39;&gt;efficient 
      access&lt;/a&gt; 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&#39;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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      About Emacspeak: 
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Originally based at Cornell (NY) 
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; –home to Auditory User 
      Interfaces (AUI) on the WWW– Emacspeak is now maintained on 
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and 
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information 
      Technology at the Smithsonian&#39;s National Museum of American 
      History. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-8&#39;&gt; 
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h3&gt; 
      &lt;div id=&#39;text-1-8&#39; class=&#39;outline-text-3&#39;&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      **About This Release: 
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Windows-Free (WF) is a favorite battle-cry of The League Against 
      Forced Fenestration (LAFF).  –see 
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on 
      the ill-effects of Forced Fenestration. 
      &lt;/p&gt; 
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt; 
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt; 
      &lt;p class=&#39;date&#39;&gt;Created: 2014-05-09 Fri
      08:44&lt;/p&gt; 
      &lt;p class=&#39;creator&#39;&gt;&lt;a
      href=&#39;http://www.gnu.org/software/emacs/&#39;&gt;Emacs&lt;/a&gt;
      24.4.50.2 (&lt;a href=&#39;http://orgmode.org&#39;&gt;Org&lt;/a&gt;
      mode
      8.2.6)&lt;/p&gt; 
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt; 
      &lt;/div&gt; 
      
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5171030908858943189'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5171030908858943189'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/05/announcing-emacspeak-400-aka-wowdog.html' title='Announcing Emacspeak 40.0 AKA WowDog!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7522454771756394603
    </id>
    <published>
      2014-05-01T17:30:00.001-07:00
    </published>
    <updated>2014-05-01T17:30:45.917-07:00
    </updated>
    <title type='text'>
      Emacspeak: EWW Updates For The Complete Audio Desktop
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak EWW Updates&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak EWW
      Updates&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      Within a few weeks, &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html&#39;&gt;EWW&lt;/a&gt; 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.
      &lt;/p&gt;
      
      &lt;p&gt;
      This article summarizes  some of the major enhancements to EWW
      implemented in module &lt;span
      class=&#39;underline&#39;&gt;emacspeak-eww&lt;/span&gt;; See the
      online
      documentation and key-binding help for complete details.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; EWW And
      Masquerade
      Mode&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      You can now have EWW masquerade as modern  browsers; note that
      some sites might serve you more feature-rich content in this
      mode. 
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Smart Google
      Searches&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      All of the features from module &lt;span
      class=&#39;underline&#39;&gt;emacspeak-google&lt;/span&gt; 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Rich DOM 
      Filtering&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-4&#39;&gt;
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Structure
      Navigation&lt;/h3&gt;
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Emacspeak now supports structured navigation in pages rendered by
      EWW, see the key-bindings for details.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-5&#39;&gt;
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Integration
      With      URL-Templates And Feeds&lt;/h3&gt;
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      EWW is now fully integrated with Emacspeak WebSearch,
      URL-Templates and Feeds. This means that hitting &lt;span
      class=&#39;underline&#39;&gt;g&lt;/span&gt; in an EWW
      buffer does the &lt;i&gt;right thing&lt;/i&gt; with respect to
      updating
      the
      rendered buffer:
      &lt;/p&gt;
      
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;If viewing a feed, the feed is reloaded before it is
      rendered
      as HTML.
      &lt;/li&gt;
      &lt;li&gt;If viewing a url-template, the template is re-opened,
      prompting for user-input if needed.
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-6&#39;&gt;
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; XSLT
      Integration&lt;/h3&gt;
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Most of the functionality provided by module &lt;span
      class=&#39;underline&#39;&gt;emacspeak-xslt&lt;/span&gt; for
      filtering the DOM in the world of Emacs/W3 is achieved more
      effectively via the DOM  filtering commands in &lt;span
      class=&#39;underline&#39;&gt;emacspeak-eww&lt;/span&gt;
      —that said, XSLT pre-processing is fully integrated with EWW via
      supporting modules &lt;span
      class=&#39;underline&#39;&gt;emacspeak-ew&lt;/span&gt; and &lt;span
      class=&#39;underline&#39;&gt;emacspeak-webutils&lt;/span&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-7&#39;&gt;
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt; Other Fun
      Things To
      Do&lt;/h3&gt;
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Here are some more fun things that might be worth doing:
      &lt;/p&gt;
      
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Integrate &lt;a
      href=&#39;http://phantomjs.org/&#39;&gt;PhantomJS&lt;/a&gt; with EWW
       to
      load content that is
      rendered via JS &lt;span
      class=&#39;underline&#39;&gt;document.write&lt;/span&gt;.
      &lt;/li&gt;
      &lt;li&gt;Integrate with  &lt;a
      
      href=&#39;http://casperjs.org/./index.html&#39;&gt;CasperJS&lt;/a&gt; to
      enable interaction with
      light-weight WebApps.
      &lt;/li&gt;
      &lt;li&gt;Integrate with Chrome over the debugger API to access the
      live DOM  within Chrome.
      &lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;
      &lt;b&gt;Share And Enjoy&lt;/b&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7522454771756394603'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7522454771756394603'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/05/emacspeak-eww-updates-for-complete.html' title='Emacspeak: EWW Updates For The Complete Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6419858702011543886
    </id>
    <published>
      2014-03-24T17:51:00.001-07:00
    </published>
    <updated>2014-03-25T19:40:13.966-07:00
    </updated>
    <title type='text'>
      Emacspeak Webspace: Glancing At Information On The Audio Desktop
    </title>
    <content type='html'> 
      &lt;div&gt; 
      &lt;div id=&#39;content&#39;&gt; 
      &lt;h1 class=&#39;title&#39;&gt;A Web News Ticker For
      Emacs&lt;/h1&gt; 
      &lt;div id=&#39;outline-container-sec-1&#39;
      class=&#39;outline-2&#39;&gt; 
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; WebSpace: A Web
      News
      Ticker For Emacs&lt;/h2&gt; 
      &lt;div class=&#39;outline-text-2&#39; id=&#39;text-1&#39;&gt; 
      &lt;p&gt; 
      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 &lt;i&gt;interesting&lt;/i&gt; 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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;div id=&#39;outline-container-sec-1-1&#39;
      class=&#39;outline-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt;
      Background&lt;/h3&gt; 
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-1&#39;&gt; 
      &lt;p&gt; 
      The Emacspeak Webspace module was originally created in early 
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2008/03/emacspeak-webspace-interaction-free.html&#39;&gt;Interaction 
      Free Information Access (2008)&lt;/a&gt; 
      because I wanted the audio equivalent of being able to 
      quickly &lt;i&gt;glance&lt;/i&gt; at information.  Here are some
      aspects
      of visual 
      interaction that I wanted to emulate: 
      &lt;/p&gt; 
      &lt;ul class=&#39;org-ul&#39;&gt; 
      &lt;li&gt;You can quickly glance at something while switching
      contexts, 
      and ignore it if it is not important. 
      &lt;/li&gt; 
      &lt;li&gt;The object that you &lt;i&gt;glance&lt;/i&gt; 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&#39;s a sufficiently strong distraction that you&#39;ll
            start doing email  — as opposed to what you were supposed 
      to be doing. 
      &lt;/li&gt; 
      &lt;li&gt;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 &lt;b&gt;essential&lt;/b&gt; to ensure
      the 
      previous  requirement. 
      &lt;/li&gt; 
      &lt;li&gt;Items  are cached  but get pushed out by newer items —
      this 
      makes sure you dont feel pressured to &lt;i&gt;read
      everything&lt;/i&gt;
      or 
      have to explicitly &lt;i&gt;catch-up&lt;/i&gt; — in prior systems
      including 
      email and Google Reader, I always found the task of hitting 
      &lt;i&gt;catch-up&lt;/i&gt; without reading everything  a fairly
      stressful experience. 
      &lt;/li&gt; 
      &lt;li&gt;Applied to information updates, think &lt;i&gt;hallway
      conversations&lt;/i&gt; 
      outside your office — you mostly ignore them, but sometime 
      get drawn because you hear some specific keywords and/or 
      concepts that draw your attention. 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div id=&#39;outline-container-sec-1-2&#39;
      class=&#39;outline-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Early
      Implementation
      In 2009&lt;/h3&gt; 
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-2&#39;&gt; 
      &lt;p&gt; 
      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 &lt;i&gt;something interesting&lt;/i&gt;
      at
      those times 
      was optimal. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div id=&#39;outline-container-sec-1-3&#39;
      class=&#39;outline-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Initial
      Implementation And Design&lt;/h3&gt; 
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-3&#39;&gt; 
      &lt;p&gt; 
      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&#39;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&#39;t that important after all. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div id=&#39;outline-container-sec-1-4&#39;
      class=&#39;outline-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Life After
      Google
      Reader&lt;/h3&gt; 
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-4&#39;&gt; 
      &lt;p&gt; 
      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 &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2013/12/managing-and-accessing-feeds-on.html&#39;&gt;Managing And Accessing Feeds On The Emacspeak Audio 
      Desktop&lt;/a&gt;. 
      Next, I updated the Emacspeak WebSpace functionality to build its 
      cache from the set of feeds in &lt;span
      
      
      class=&#39;underline&#39;&gt;emacspeak&lt;sub&gt;feeds&lt;/sub&gt;&lt;/span&gt;. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div id=&#39;outline-container-sec-1-5&#39;
      class=&#39;outline-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Usage
      Pattern&lt;/h3&gt; 
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-5&#39;&gt; 
      &lt;p&gt; 
      This section details my own usage pattern and set-up — this is 
      by no means the only way to use this functionality. 
      &lt;/p&gt; 
      &lt;ol class=&#39;org-ol&#39;&gt; 
      &lt;li&gt;Emacspeak binds Webspace functionality to  &lt;span
      class=&#39;underline&#39;&gt;Hyper Space&lt;/span&gt;  as 
      a prefix key. 
      &lt;/li&gt; 
      &lt;li&gt;&lt;span class=&#39;underline&#39;&gt;Hyper Space
      h&lt;/span&gt; invokes command 
      &lt;span
      
      class=&#39;underline&#39;&gt;emacspeak-webspace-headlines&lt;/span&gt; 
      — 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. 
      &lt;/li&gt; 
      &lt;li&gt;The feed-store is updated during Emacs idle-time; I often 
      invoke  the elisp form 
      &lt;span
      
      
      class=&#39;underline&#39;&gt;(emacspeak-webspace-headlines-populate)&lt;/span&gt; to populate the 
      cache initially. Note that depending on your network, and 
      the number of feeds you have in &lt;span
      class=&#39;underline&#39;&gt;emacspeak-feeds&lt;/span&gt;, this can 
      block emacs for a couple of minutes. 
      &lt;/li&gt; 
      &lt;li&gt;Command &lt;span
      
      
      class=&#39;underline&#39;&gt;emacspeak-webspace-headlines-browse&lt;/span&gt;  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 &lt;span
      class=&#39;underline&#39;&gt;Super h&lt;/span&gt; by 
      customizing &lt;span
      class=&#39;underline&#39;&gt;emacspeak-super-keys&lt;/span&gt;. 
      &lt;/li&gt; 
      &lt;li&gt;You can set up other types of information in your rolling 
      header — something I initially used it for was weather 
      — see command  &lt;span
      class=&#39;underline&#39;&gt;emacspeak-webspace-weather&lt;/span&gt;
       
      personally, 
      I &#39;ve not found this as useful in CA given how consistently 
      good the weather is here. 
      &lt;/li&gt; 
      &lt;li&gt;For related work in Emacs, see Emacs package &lt;span
      class=&#39;underline&#39;&gt;newsticker&lt;/span&gt;. 
      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 
      &lt;i&gt;glance and continue&lt;/i&gt; requirement. 
      &lt;/li&gt; 
      &lt;/ol&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div id=&#39;postamble&#39; class=&#39;status&#39;&gt; 
      &lt;p class=&#39;date&#39;&gt;Date: &lt;span
      class=&#39;timestamp-wrapper&#39;&gt;&lt;span
      class=&#39;timestamp&#39;&gt;&amp;lt;2014-03-24
      Mon&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; 
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt; 
      &lt;p class=&#39;date&#39;&gt;Created: 2014-03-24 Mon
      18:00&lt;/p&gt; 
      &lt;p class=&#39;creator&#39;&gt;Emacs 24.3.50.2 (Org mode
      8.2.5c)&lt;/p&gt; 
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6419858702011543886'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6419858702011543886'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/03/emacspeak-webspace-glancing-at.html' title='Emacspeak Webspace: Glancing At Information On The Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4505425483465638321
    </id>
    <published>
      2014-02-08T17:00:00.001-08:00
    </published>
    <updated>2014-02-08T17:00:41.306-08:00
    </updated>
    <title type='text'>
      Searching GMail Using IMap And GNUS
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Searching GMail Using IMap and
      GNUS&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Searching GMail
      Using
      IMap and GNUS&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;p&gt;
      Emacs package GNUS provides a very efficient interface for
      consuming large amounts of email.
      You can access GMail using GNUS&#39; IMap interface, for my own
      configuration for doing this, see file &lt;span
      class=&#39;underline&#39;&gt;tvr/gnus-prepare.el&lt;/span&gt; in
      the Emacspeak SVN  repository.
      Module &lt;span class=&#39;underline&#39;&gt;gm-nnir.el&lt;/span&gt;
       in
      package &lt;span class=&#39;underline&#39;&gt;g-client&lt;/span&gt;
      implements some
      convenience hooks to enable efficient searching of GMail. Module
      &lt;span class=&#39;underline&#39;&gt;emacspeak-gnus&lt;/span&gt;
      has      been updated to bind commands from module
      &lt;span class=&#39;underline&#39;&gt;gm-nnir.el&lt;/span&gt; to
      &lt;span
      class=&#39;underline&#39;&gt;?&lt;/span&gt; and &lt;span
      class=&#39;underline&#39;&gt;/&lt;/span&gt; in  the
      &lt;b&gt;Group&lt;/b&gt; buffer.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; Basic
      Usage&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Assuming you already have GNUS configured to read GMail via IMap,
      you can:
      &lt;/p&gt;
      
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Press &lt;span class=&#39;underline&#39;&gt;/&lt;/span&gt;
      in
      the  groups buffer  to search your mail. This
      command accepts all GMail queries, so for example,
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;pre class=&#39;example&#39;&gt;
      after: 2014/02/01 to: me
      &lt;/pre&gt;
      &lt;p&gt;
      Will find all messages received after   February 1, 2014 and
      addressed to you.
      &lt;/p&gt;
      &lt;pre class=&#39;example&#39;&gt;
      label: foo after: 2014/01/01
      &lt;/pre&gt;
      &lt;p&gt;
      Will find messages with label &lt;span
      class=&#39;underline&#39;&gt;foo&lt;/span&gt; and received after
      January
      1, 2014.
      &lt;/p&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;Press &lt;span class=&#39;underline&#39;&gt;?&lt;/span&gt;
      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.
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; The Technical
      Details&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      The GMail query language is exposed to IMap via custom search key
      &lt;span class=&#39;underline&#39;&gt;X-GM-RAW&lt;/span&gt;;
      commands      &lt;span
      
      class=&#39;underline&#39;&gt;gm-nnir-group-make-gmail-group&lt;/span&gt;
      and
      &lt;span
      
      class=&#39;underline&#39;&gt;gm-nnir-group-make-nnir-group&lt;/span&gt;
      use this functionality to
      construct &lt;i&gt;ephemeral&lt;/i&gt; groups that hold the search
      results.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4505425483465638321'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4505425483465638321'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/02/searching-gmail-using-imap-and-gnus.html' title='Searching GMail Using IMap And GNUS'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2775932127867625241
    </id>
    <published>
      2014-01-01T08:51:00.001-08:00
    </published>
    <updated>2014-01-01T08:51:39.130-08:00
    </updated>
    <title type='text'>
      Exploring And Accessing BBC Podcasts and Program Archives
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Exploring  BBC  Podcasts And Program
      Archives&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Exploring  BBC 
      Podcasts And Program Archives&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;/div&gt;&lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt;
      Summary&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      A short overview of tools on the emacspeak desktop for easily
      exploring and accessing BBC program content.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt;
      Background&lt;/h3&gt;&lt;div id=&#39;text-1-2&#39;
      class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      
      &lt;p&gt;
      The  primary gateway to this content is BBC IPlayer. In
      addition, one can subscribe to RSS feeds for BBC Podcasts.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Accessing BBC
      Content From Emacspeak&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Here are some of the tools I  use on the Emacspeak desktop to
      quickly find and access content from the BBC:
      &lt;/p&gt;
      
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;The BBC publishes a continuously updated directory of 
      RSS feeds; Emacspeak url template  &lt;b&gt;BBC Podcast
      Directory&lt;/b&gt;
      can be used to open this directory of feeds.
      &lt;/li&gt;
      &lt;li&gt;With the above directory of feeds at hand, it is easy to
      subscribe to oft-accessed feeds via
      &lt;b&gt;emacspeak-feeds&lt;/b&gt;
      — see
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2013/12/managing-and-accessing-feeds-on.html&#39;&gt;Managing And Accessing Feeds&lt;/a&gt;.
      &lt;/li&gt;
      &lt;li&gt;In addition to the directory of feeds covered above, the
      BBC
      publishes a detailed program guide as XML; Emacspeak url
      template &lt;b&gt;BBC  Program Guide&lt;/b&gt; accesses the program
      guide.&lt;/li&gt;
      &lt;li&gt;The program guide described above gives access to RSS
      feeds      for both current programs as 
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;A note for UK users; the program guide above is presently
      set
      up to  only show content that is available world-wide; if
      you&#39;re in the UK, you may want to remove the test for
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;pre class=&#39;example&#39;&gt;
      region=&#39;all&#39;
      &lt;/pre&gt;
      &lt;p&gt;
      in the XSL  stylesheet  emacspeak/xsl/bbc-ppg.xsl.
      &lt;/p&gt;
      &lt;ul class=&#39;org-ul&#39;&gt;
      &lt;li&gt;You can find the &lt;a
      href=&#39;http://downloads.bbc.co.uk/podcasts/ppg.xml&#39;&gt;XML
      feed&lt;/a&gt; for the BBC Program Guide, as well
      as the associated &lt;a
      href=&#39;http://downloads.bbc.co.uk/podcasts/ppg.xsd&#39;&gt;XML
      Schema&lt;/a&gt; definition on the BBC&#39;s Web
      site.
      &lt;/li&gt;
      &lt;li&gt;Finally, you can access the BBC IPlayer page for any given
      BBC channel via Emacspeak url template &lt;b&gt;BBC
      IPlayer&lt;/b&gt;.
      &lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;
      &lt;b&gt;Share And Enjoy!&lt;/b&gt; And Hear&#39;s Wishing Everyone
      A      Very Happy 2014!
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2775932127867625241'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2775932127867625241'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2014/01/exploring-and-accessing-bbc-podcasts.html' title='Exploring And Accessing BBC Podcasts and Program Archives'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5712406582541330143
    </id>
    <published>
      2013-12-29T08:35:00.001-08:00
    </published>
    <updated>2013-12-29T08:35:19.818-08:00
    </updated>
    <title type='text'>Managing
      And Accessing Feeds On The Emacspeak Audio Desktop
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Managing And Accessing Feeds  On The
      Emacspeak Audio Desktop&lt;/h1&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-sec-1&#39;&gt;&lt;h2
      id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Managing And
      Accessing
      Feeds  On The Emacspeak Audio Desktop&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      &lt;/div&gt;&lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt;
      Summary&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      Feature &lt;b&gt;emacspeak-feeds&lt;/b&gt; 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&#39; customize
      interface or directly via interactive Emacs commands.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-sec-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; How It
      Works&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      &lt;p&gt;
      The list of subscribed feeds is stored in variable
      &lt;span class=&#39;underline&#39;&gt;emacspeak-feeds&lt;/span&gt;
      which
      is managed via Emacs&#39; &lt;span
      class=&#39;underline&#39;&gt;customize&lt;/span&gt;
      interface. Each entry this list contains a label for the feed,
      the feed URL, and the type of the feed (&lt;sub&gt;rss&lt;/sub&gt;_,
      &lt;span class=&#39;underline&#39;&gt;atom&lt;/span&gt;, or
      &lt;span class=&#39;underline&#39;&gt;opml&lt;/span&gt;).
      &lt;/p&gt;
      
      &lt;p&gt;
      Interactive command  &lt;span
      
      class=&#39;underline&#39;&gt;emacspeak-webspace-feed-reader&lt;/span&gt;
      opens a
      buffer containing the list of subscribed feeds; feeds can be
      opened by pressing &lt;span
      class=&#39;underline&#39;&gt;enter&lt;/span&gt; on the relevant
      feed. 
      &lt;/p&gt;
      
      &lt;p&gt;
      Oft-accessed feeds can be opened directly via command
      &lt;span
      class=&#39;underline&#39;&gt;emacspeak-feed-browse&lt;/span&gt;
      bound to &lt;span class=&#39;underline&#39;&gt;C-e C-u&lt;/span&gt;
      —
      this command prompts
      for a feed label with minibuffer completion.
      &lt;/p&gt;
      
      &lt;p&gt;
      Feeds can be added or deleted by customizing &lt;span
      class=&#39;underline&#39;&gt;emacspeak-feeds&lt;/span&gt;
      via Emacs&#39; &lt;span class=&#39;underline&#39;&gt;M-x
      customize-variable&lt;/span&gt; — bound by default in
      emacspeak to &lt;span class=&#39;underline&#39;&gt;C-h
      V&lt;/span&gt;.
      Alternatively, interactive command
      &lt;span
      class=&#39;underline&#39;&gt;emacspeak-feed-add-feed&lt;/span&gt;
      bound
      to &lt;span class=&#39;underline&#39;&gt;C-e M-u&lt;/span&gt; can be
      used
      to
      subscribe to feeds. Note that both methods result in the
      subscribed feed being stored in &lt;span
      class=&#39;underline&#39;&gt;emacspeak-feeds&lt;/span&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#39;status&#39; id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: &lt;span
      class=&#39;timestamp-wrapper&#39;&gt;&lt;span
      class=&#39;timestamp&#39;&gt;&amp;lt;2013-12-29
      Sun&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt;Created: 2013-12-29 Sun
      08:34&lt;/p&gt;      &lt;p class=&#39;creator&#39;&gt;Emacs
      24.3.50.2 (Org mode
      8.2.3a)&lt;/p&gt;
      &lt;p class=&#39;validation&#39;&gt;&lt;a
      
      
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate&lt;/a&gt;&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5712406582541330143'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5712406582541330143'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2013/12/managing-and-accessing-feeds-on.html' title='Managing And Accessing Feeds On The Emacspeak Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7804883057579972872
    </id>
    <published>
      2013-11-27T14:48:00.001-08:00
    </published>
    <updated>2013-11-27T14:48:19.097-08:00
    </updated>
    <title type='text'>Reading
      Web Content Efficiently
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      
      &lt;div id=&#39;preamble&#39;&gt;
      
      &lt;/div&gt;
      
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;reading-web-content.org&lt;/h1&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Reading Web
      Content&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      
      
      
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt;
      Background&lt;/h3&gt;&lt;div id=&#39;text-1-1&#39;
      class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Welcome EWW:
      Emacs
      Web Wowser&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;p&gt;
      The author of GNUS recently added package 
      EWW (Emacs Web Wowser) to The Emacs repository  — 
      see his
      &lt;a
      
      
      href=&#39;http://lars.ingebrigtsen.no/2013/06/eww.html&#39;&gt;announcement&lt;/a&gt;.
      Emacspeak 37.0 included a small addition called
      &lt;i&gt;shr-url&lt;/i&gt; that
      leveraged his earlier &lt;i&gt;shr&lt;/i&gt; package; I&#39;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.
      &lt;/p&gt;
      &lt;p&gt;
      EWW and SHR are interesting because they both leverage
      &lt;i&gt;libxml2&lt;/i&gt; 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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; EWW Tips And
      Tricks&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;p&gt;
      I&#39;ve mailed out a small patch to package &lt;i&gt;eww&lt;/i&gt;
      that
      facilitates
      implementing such higher-level commands; for now, you can find
      that patch in &lt;span
      
      
      style=&#39;text-decoration:underline;&#39;&gt;emacspeak/lisp/patches&lt;/span&gt; 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 &lt;a
      
      
      href=&#39;http://mobile.nytimes.com&#39;&gt;http://mobile.nytimes.com&lt;/a&gt;) or CNN
      (&lt;a href=&#39;http://cnn.com&#39;&gt;http://cnn.com&lt;/a&gt;). 
      &lt;/p&gt;
      &lt;p&gt;
      When visiting thesee and other content-heavy sites, try:
      &lt;/p&gt;
      &lt;dl&gt;
      &lt;dt&gt;&lt;b&gt;A&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;Filter by
      attributes,
      &lt;/dd&gt;
      &lt;dt&gt;&lt;b&gt;E&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;Filter by
      elements      &lt;/dd&gt;
      &lt;dt&gt;&lt;b&gt;R&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;Restore original
      contents 
      &lt;/dd&gt;
      &lt;/dl&gt;
      
      
      &lt;p&gt;
      To flexibly obtain multiple views of a Web site.
      &lt;/p&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: 2013-11-27 Wed&lt;/p&gt;
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&#39;creator&#39;&gt;&lt;a
      href=&#39;http://orgmode.org&#39;&gt;Org&lt;/a&gt; version 7.9.3f
      with
      &lt;a
      href=&#39;http://www.gnu.org/software/emacs/&#39;&gt;Emacs&lt;/a&gt;
      version 24&lt;/p&gt;
      &lt;a
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate
      XHTML 1.0&lt;/a&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7804883057579972872'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7804883057579972872'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2013/11/reading-web-content-efficiently.html' title='Reading Web Content Efficiently'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7652738519984086094
    </id>
    <published>
      2013-11-26T15:56:00.001-08:00
    </published>
    <updated>2013-11-26T15:56:46.796-08:00
    </updated>
    <title type='text'>
      Emacspeak 39.0 (BigDog) Unleashed!
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      
      
      &lt;div id=&#39;preamble&#39;&gt;
      
      &lt;/div&gt;
      
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      39.0—BigDog—Unleashed!&lt;/h1&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-39.0
      (BigDog) Unleashed!&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      
      &lt;p&gt; ** For Immediate Release:
      &lt;/p&gt;
      &lt;p&gt;
      San Jose, Calif., (November 27, 2013)&lt;br/&gt;
      Emacspeak: Redefining Accessibility In The Era Of Social Cloud
      Computing
      &lt;br/&gt;
      – Zero cost of upgrades/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;--
      announces the immediate world-wide availability of Emacspeak 39.0
      (BigDog)  – a powerful audio desktop for leveraging today&#39;s
      evolving data, social and service-oriented Web cloud.
      &lt;/p&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; Investors
      Note:&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      With several prominent tweeters expanding coverage of
      &lt;span
      
      style=&#39;text-decoration:underline;&#39;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; What Is
      It?&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      
      &lt;p&gt;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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Major
      Enhancements:&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      
      &lt;ul&gt;
      &lt;li&gt;Speech-Enables Ipython Notebook interaction via package
      EIN.
      🐍
      &lt;/li&gt;
      &lt;li&gt;Speech-enables Chrome/Firefox integration via package JSS.
      ⱒ
      &lt;/li&gt;
      &lt;li&gt;Improved Chrome debugging via package Kite. ⾶
      &lt;/li&gt;
      &lt;li&gt;Updated search wizards for rapid Web access. ♄
      &lt;/li&gt;
      &lt;li&gt;Updated URL templates for instant Web access. ♅
      &lt;/li&gt;
      &lt;li&gt;Improved Emacs 24.3 support. 🌑
      &lt;/li&gt;
      &lt;li&gt;And a lot more than will fit this margin. …
      &lt;/li&gt;
      &lt;/ul&gt;
      
      
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-4&#39;&gt;
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h3&gt;
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a
      crash-prone but well-marketed mousetrap with the assertion
      &quot;Emacs is a system from the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-5&#39;&gt;
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Independent
      Test      Results:&lt;/h3&gt;
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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; &quot;It is the user  – and not
      the
      computer –  that stops functioning when Emacspeak is
      uninstalled!&quot;.&lt;/p&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-1-5-1&#39;&gt;&lt;h4
      id=&#39;sec-1-5-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h4&gt;
      &lt;div id=&#39;text-1-5-1&#39; class=&#39;outline-text-4&#39;&gt;
      
      
      
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-6&#39;&gt;
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h3&gt;
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      Emacspeak can be downloaded from Google Code Hosting  – see
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-39.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-39.0.tar.bz2&lt;/a&gt;.
      The latest development snapshot of Emacspeak is always available via
      Subversion from Google Code at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt;
      &lt;/p&gt;&lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-7&#39;&gt;
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt;
      History:&lt;/h3&gt;
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;p&gt;
      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&#39;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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      About Emacspeak:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Originally based at Cornell (NY)
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt;  – home to Auditory User
      Interfaces (AUI) on the WWW –  Emacspeak is now maintained on
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information
      Technology at the Smithsonian&#39;s National Museum of American
      History.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-8&#39;&gt;
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h3&gt;
      &lt;div id=&#39;text-1-8&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      **About This Release:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  – see
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: 2013-11-23T08:26-0800&lt;/p&gt;
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt;
      &lt;p class=&#39;creator&#39;&gt;&lt;a
      href=&#39;http://orgmode.org&#39;&gt;Org&lt;/a&gt; version 7.9.3f
      with
      &lt;a
      href=&#39;http://www.gnu.org/software/emacs/&#39;&gt;Emacs&lt;/a&gt;
      version 24&lt;/p&gt;
      &lt;a
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate
      XHTML 1.0&lt;/a&gt;
      
      &lt;/div&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7652738519984086094'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7652738519984086094'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2013/11/emacspeak-390-bigdog-unleashed.html' title='Emacspeak 39.0 (BigDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3838103849410783364
    </id>
    <published>
      2013-05-12T08:13:00.001-07:00
    </published>
    <updated>2013-05-12T08:13:09.597-07:00
    </updated>
    <title type='text'>
      Emacspeak 38.0 (FreeDog Unleashed
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt; 
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      38.0—FreeDog—Unleashed!&lt;/h1&gt; 
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt; 
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-38.0
      (FreeDog) Unleashed!&lt;/h2&gt; 
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt; 
      
      &lt;p&gt;               **  For Immediate Release: 
      &lt;/p&gt; 
      &lt;p&gt; 
      San Jose, Calif., (May 13, 2013) 
      Emacspeak:  Redefining Accessibility In The Era Of Cloud Computing 
      –Zero cost of upgrades/downgrades makes priceless software
      affordable! 
      &lt;/p&gt; 
      &lt;p&gt; 
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;-- 
      announces the immediate world-wide availability of Emacspeak 38.0 
      (FreeDog) –a powerful audio desktop for leveraging today&#39;s 
      evolving data, social and service-oriented Web cloud. 
      &lt;/p&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-1&#39;&gt; 
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; Investors
      Note:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      With several prominent tweeters expanding coverage of 
      &lt;span
      
      style=&#39;text-decoration:underline;&#39;&gt;#emacspeak&lt;/span&gt;,
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-2&#39;&gt; 
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; What Is
      It?&lt;/h3&gt; 
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt; 
      
      &lt;p&gt;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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-3&#39;&gt; 
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; Major
      Enhancements:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      &lt;ol&gt; 
      &lt;li&gt;Get directions and find Places via Google Maps. ⛯ 
      &lt;/li&gt; 
      &lt;li&gt;Preliminary support for Eclipse integration via Eclim. ⛅
            &lt;/li&gt; 
      &lt;li&gt;Speech-enabled GTags (Global) for code browsing. 🌐 
      &lt;/li&gt; 
      &lt;li&gt;Updated to work with advice implementation in Emacs 24.3. 
      🌚
      &lt;/li&gt; 
      &lt;li&gt;Updated Web search wizards ꩜ 
      &lt;/li&gt; 
      &lt;li&gt;Updated URL templates ♅ 
      &lt;/li&gt; 
      &lt;/ol&gt; 
      
      
      
      &lt;p&gt; 
      Plus many more changes too numerous to fit in this margin  ∞ 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-4&#39;&gt; 
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      On this theme, when once challenged by a proponent of a 
      crash-prone but well-marketed mousetrap with the assertion 
      &quot;Emacs is a system from the 70&#39;s&quot;, 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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-5&#39;&gt; 
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Independent
      Test      Results:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      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; &quot;It is the user –and
      not the 
      computer– that stops functioning when Emacspeak is
      uninstalled!&quot;. 
      &lt;/p&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-1-5-1&#39;&gt; 
      &lt;h4 id=&#39;sec-1-5-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.5.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h4&gt; 
      &lt;div id=&#39;text-1-5-1&#39; class=&#39;outline-text-4&#39;&gt; 
      
      
      
      &lt;p&gt; 
      UnDoctored Videos Inc. is looking for volunteers to star in a 
      video demonstrating such complete user failure. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-6&#39;&gt; 
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      Emacspeak can be downloaded from Google Code Hosting –see 
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit 
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-38.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-38.0.tar.bz2&lt;/a&gt;. 
      The latest development snapshot of Emacspeak is always available via
            Subversion from Google Code  at  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt; 
      &lt;/p&gt;&lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-7&#39;&gt; 
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt;
      History:&lt;/h3&gt; 
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      &lt;p&gt; 
      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&#39;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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      About Emacspeak: 
      
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Originally based at Cornell (NY) 
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; –home to Auditory User 
      Interfaces (AUI) on the WWW– Emacspeak is now maintained on 
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and 
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information 
      Technology at the Smithsonian&#39;s National Museum of American 
      History. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-8&#39;&gt; 
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; Press/Analyst
      Contact: Tilden Labrador&lt;/h3&gt; 
      &lt;div id=&#39;text-1-8&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      **About This Release: 
      
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Windows-Free (WF) is a favorite battle-cry of The League Against 
      Forced Fenestration (LAFF).  –see 
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on 
      the ill-effects of Forced Fenestration. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3838103849410783364'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3838103849410783364'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2013/05/emacspeak-380-freedog-unleashed.html' title='Emacspeak 38.0 (FreeDog Unleashed'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2252610515309333920
    </id>
    <published>
      2013-02-28T12:47:00.001-08:00
    </published>
    <updated>2013-02-28T12:47:13.744-08:00
    </updated>
    <title type='text'>GMaps:
      Google Maps On The Emacspeak Desktop
    </title>
    <content type='html'> 
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt; 
      
      
      &lt;div id=&#39;content&#39;&gt; 
      &lt;h1 class=&#39;title&#39;&gt;GMaps: A Google Maps Client For The
      Emacspeak Desktop&lt;/h1&gt; 
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt; 
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; GMaps: A Google
      Maps
      Client For The Emacspeak Desktop&lt;/h2&gt; 
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt; 
      
      
      &lt;p&gt; 
      &lt;a href=&#39;http://maps.google.com&#39;&gt;Google Maps&lt;/a&gt;
      provides a powerful service-oriented &lt;a
      
      
      href=&#39;https://developers.google.com/maps/documentation/directions/&#39;&gt;Directions API&lt;/a&gt; 
      and an experimental &lt;a
      
      
      href=&#39;https://developers.google.com/places/documentation/&#39;&gt;Places API&lt;/a&gt;. module &lt;a href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/gmaps.el&#39;&gt;GMaps&lt;/a&gt; (part of 
      g-client) implements a new specialized interaction mode that lets 
      you quickly get directions and perform Map searches. 
      &lt;/p&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-1&#39;&gt; 
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt;
      Overview&lt;/h3&gt; 
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      &lt;p&gt; 
      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  
      &lt;/p&gt;&lt;pre class=&#39;example&#39;&gt; 
      make config; make  
      &lt;/pre&gt; 
      
      &lt;p&gt;before trying to use it. 
      &lt;/p&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-1-1-1&#39;&gt; 
      &lt;h4 id=&#39;sec-1-1-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.1.1&lt;/span&gt;
      Usage:&lt;/h4&gt; 
      &lt;div id=&#39;text-1-1-1&#39; class=&#39;outline-text-4&#39;&gt; 
      
      
      &lt;p&gt; 
      Run command M-x gmaps to bring up the maps interaction buffer. 
      This buffer provides many special commands for talking to Google 
      Maps –  use &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;C-h
      b&lt;/span&gt; in emacs to get a list of 
      key-bindings. Here is a brief summary of how things work: 
      &lt;/p&gt; 
      &lt;ul&gt; 
      &lt;li&gt;You can get directions (walking, driving, by cycling, or 
      public transit)  via keystrokes &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;w&lt;/span&gt;,
      &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;d&lt;/span&gt;,
      &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;b&lt;/span&gt;, or
      &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;t&lt;/span&gt;. These 
      commands prompt for start and end addresses. 
      &lt;/li&gt; 
      &lt;li&gt;You can set your current location  by hitting &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;c&lt;/span&gt;  — ;
      this 
      will be used for Places Search. 
      &lt;/li&gt; 
      &lt;li&gt;You can specify the radius for Places Search by pressing
      &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;r&lt;/span&gt; 
      and specifying the radius  e.g. &lt;i&gt;500&lt;/i&gt; for 500m. 
      &lt;/li&gt; 
      &lt;li&gt;You can set up an optional  filter for your Places Search
      by
      pressing &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;f&lt;/span&gt;. 
      &lt;/li&gt; 
      &lt;li&gt;Pressing &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;n&lt;/span&gt; at this
      point will show you places in your 
      vicinity that match your filter criteria. 
      &lt;/li&gt; 
      &lt;li&gt;Pressing &#39;space&#39; on a Place displays details for
      that
      place. 
      &lt;/li&gt; 
      &lt;li&gt;Place details when expanded provide buttons that link you
      to 
      hours-of-business, Web-site for that place, and the place&#39;s 
      G+ page if any. 
      &lt;/li&gt; 
      &lt;/ul&gt; 
      
      
      &lt;p&gt; 
      Note that module GMaps replaces the now obsolete Emapspeak 
      functionality that has been available on &lt;span
      style=&#39;text-decoration:underline;&#39;&gt;C-e?e&lt;/span&gt;
      since 
      early 2005. 
      &lt;/p&gt; 
      
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;div id=&#39;postamble&#39;&gt; 
      &lt;p class=&#39;date&#39;&gt;Date: 2013-02-28 Thu&lt;/p&gt; 
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt; 
      &lt;p class=&#39;creator&#39;&gt;&lt;a
      href=&#39;http://orgmode.org&#39;&gt;Org&lt;/a&gt; version 7.9.3d
      with
      &lt;a
      href=&#39;http://www.gnu.org/software/emacs/&#39;&gt;Emacs&lt;/a&gt;
      version 24&lt;/p&gt; 
      &lt;a
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate
      XHTML 1.0&lt;/a&gt; 
      
      &lt;/div&gt; 
      
      
      
      &lt;/div&gt; 
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2252610515309333920'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2252610515309333920'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2013/02/gmaps-google-maps-on-emacspeak-desktop.html' title='GMaps: Google Maps On The Emacspeak Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7843402706774593002
    </id>
    <published>
      2012-12-21T11:53:00.001-08:00
    </published>
    <updated>2012-12-21T11:53:19.339-08:00
    </updated>
    <title type='text'>
      Emacspeak 37.0 (SolidDog) Unleashed
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      
      &lt;div id=&#39;preamble&#39;&gt;
      
      &lt;/div&gt;
      
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      37.0—SolidDog—Unleashed!&lt;/h1&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-37.0
      (SolidDog) Unleashed!&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      
      
      
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; For Immediate
      Release:&lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;p&gt;
      San Jose, Calif., (December 21, 2012)
      Emacspeak:  Redefining Accessibility In The Era Of Cloud Computing
      –Zero cost of upgrades/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;--
      announces the immediate world-wide availability of Emacspeak
      37.0 (SolidDog) –a powerful audio desktop for leveraging
      today&#39;s
      evolving
      data, social and service-oriented  Web cloud.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Investors
      Note:&lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      With several prominent tweeters expanding coverage of
      &lt;span
      
      style=&#39;text-decoration:underline;&#39;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; What Is
      It?&lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-4&#39;&gt;
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Major
      Enhancements:&lt;/h3&gt;
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;ul&gt;
      &lt;li&gt;Full EPub support: 📑
      &lt;/li&gt;
      &lt;li&gt;Websearch enhancements and wizards: 🐚
      &lt;/li&gt;
      &lt;li&gt;Updated support  git interaction via magit: ℣
      &lt;/li&gt;
      &lt;li&gt;Speech-enables module Kite for debugging Web Apps in
      Chrome ⛳
      &lt;/li&gt;
      &lt;li&gt;TTS  enhancements: 🙊
      &lt;/li&gt;
      &lt;li&gt;Updated url templates for task-oriented web actions: ♅
      &lt;/li&gt;
      &lt;li&gt;SSH port forwarding support for TTS servers🔉
      &lt;/li&gt;
      &lt;li&gt;Tested against Emacs 23 on stock Ubuntu Lucid..Precise.
      &lt;/li&gt;
      &lt;li&gt;Emacs 24 Support  Updated support for the forthcoming
      Emacs      24 release.
      &lt;/li&gt;
      &lt;/ul&gt;
      
      
      &lt;p&gt;
      Plus many more changes too numerous to fit in this margin  ∞
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-5&#39;&gt;
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h3&gt;
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a
      crash-prone but well-marketed mousetrap with the assertion
      &quot;Emacs is a system from the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-6&#39;&gt;
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Independent
      Test      Results:&lt;/h3&gt;
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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; &quot;It is the user –and not
      the      computer– that stops functioning when Emacspeak is
      uninstalled!&quot;.
      &lt;/p&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-1-6-1&#39;&gt;&lt;h4
      id=&#39;sec-1-6-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h4&gt;
      &lt;div id=&#39;text-1-6-1&#39; class=&#39;outline-text-4&#39;&gt;
      
      
      
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-7&#39;&gt;
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h3&gt;
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      Emacspeak can be downloaded from Google Code Hosting –see
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-35.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-35.0.tar.bz2&lt;/a&gt;.
      The latest development snapshot of Emacspeak is available via
      Subversion from Google Code Hosting at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-8&#39;&gt;
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt;
      History:&lt;/h3&gt;
      &lt;div id=&#39;text-1-8&#39; class=&#39;outline-text-3&#39;&gt;
      
      &lt;p&gt;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&#39;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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      About Emacspeak:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Originally based at Cornell (NY)
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; –home to Auditory User
      Interfaces (AUI) on the WWW– Emacspeak is now maintained on
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information
      Technology at the Smithsonian&#39;s National Museum of American
      History.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-2&#39;&gt;
      &lt;h2 id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; Press/Analyst
      Contact:
      Tilden Labrador&lt;/h2&gt;
      &lt;div id=&#39;text-2&#39; class=&#39;outline-text-2&#39;&gt;
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      **About This Release:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  –see
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: 2012-12-21 11:16:59
      PST&lt;/p&gt;      &lt;p class=&#39;author&#39;&gt;Author: T.V
      Raman&lt;/p&gt;
      &lt;p class=&#39;creator&#39;&gt;Org version 7.8.11 with Emacs
      version
      24&lt;/p&gt;
      &lt;a
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate
      XHTML 1.0&lt;/a&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7843402706774593002'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7843402706774593002'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2012/12/emacspeak-370-soliddog-unleashed.html' title='Emacspeak 37.0 (SolidDog) Unleashed'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5529021722260648318
    </id>
    <published>
      2012-05-03T17:16:00.001-07:00
    </published>
    <updated>2012-05-03T18:26:37.397-07:00
    </updated>
    <title type='text'>
      Emacspeak 36.0 (EPubDog) Unleashed!
    </title>
    <content type='html'>   
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;   
      &lt;div&gt;   
      &lt;div id=&#39;preamble&#39;&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;content&#39;&gt;   
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      36.0—EPubDog—Unleashed!&lt;/h1&gt;   
      &lt;div id=&#39;outline-container-1&#39;
      class=&#39;outline-2&#39;&gt;   
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-36.0
      (EPubDog) Unleashed!&lt;/h2&gt;   
      &lt;div class=&#39;outline-text-2&#39; id=&#39;text-1&#39;&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-1&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; For Immediate
      Release:&lt;/h3&gt;   
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-1&#39;&gt;   
      &lt;p&gt;   
      San Jose, Calif., (May 4, 2011)   
      Emacspeak:  Redefining Accessibility In The Era Of Cloud Computing  
            —Zero cost of upgrades/downgrades makes priceless software
      affordable! 
      
      &lt;/p&gt;   
      &lt;p&gt;   
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;--   
      announces the immediate world-wide availability of Emacspeak   
      36.0 (EPubDog) —a powerful audio desktop for leveraging
      today&#39;s      evolving   
      data, social and service-oriented  Web cloud.   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-2&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Investors
      Note:&lt;/h3&gt;   
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-2&#39;&gt;   
      &lt;p&gt;   
      With several prominent tweeters expanding coverage of   
      &lt;span
      
      style=&#39;text-decoration:underline;&#39;&gt;#emacspeak&lt;/span&gt;,
      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. 
       
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-3&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; What Is
      It?&lt;/h3&gt;   
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-3&#39;&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-4&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Major
      Enhancements:&lt;/h3&gt;   
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-4&#39;&gt;   
      &lt;ul&gt;   
      &lt;li&gt;Full EPub support: 📑   
      &lt;/li&gt;   
      &lt;li&gt;Websearch enhancements and wizards: 🐚   
      &lt;/li&gt;   
      &lt;li&gt;Speech-enables git interaction via magit: ℣   
      &lt;/li&gt;   
      &lt;li&gt;Speech-enabled support for finding things fast: 🚤   
      &lt;/li&gt;   
      &lt;li&gt;TTS  enhancements: 🙊   
      &lt;/li&gt;   
      &lt;li&gt;Updated url templates for task-oriented web actions: ♅  
            &lt;/li&gt;   
      &lt;li&gt;SSH port forwarding support for TTS servers🔉   
      &lt;/li&gt;   
      &lt;li&gt;Updated support for the forthcoming Emacs   
      24 release.   
      &lt;/li&gt;   
      &lt;/ul&gt;   
      &lt;p&gt;   
      Plus many more changes too numerous to fit in this margin  ∞   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-5&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom:&lt;/h3&gt;   
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-5&#39;&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;p&gt;   
      On this theme, when once challenged by a proponent of a   
      crash-prone but well-marketed mousetrap with the assertion   
      &quot;Emacs is a system from the 70&#39;s&quot;, 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.   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-6&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Independent
      Test      Results:&lt;/h3&gt;   
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-6&#39;&gt;   
      &lt;p&gt;   
      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; &quot;It is the user —and not
      the   
      computer— that stops functioning when Emacspeak is
      uninstalled!&quot;. 
      
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-6-1&#39;
      class=&#39;outline-4&#39;&gt;   
      &lt;h4 id=&#39;sec-1-6-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden:&lt;/h4&gt;   
      &lt;div class=&#39;outline-text-4&#39; id=&#39;text-1-6-1&#39;&gt;  
            &lt;p&gt;   
      UnDoctored Videos Inc. is looking for volunteers to star in a   
      video demonstrating such complete user failure.   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-7&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt; Obtaining
      Emacspeak:&lt;/h3&gt;   
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-7&#39;&gt;   
      &lt;p&gt;   
      Emacspeak can be downloaded from Google Code Hosting —see   
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit   
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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    
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-36.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-35.0.tar.bz2&lt;/a&gt;.   
      The latest development snapshot of Emacspeak is available via   
      Subversion from Google Code Hosting at    
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt;   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-1-8&#39;
      class=&#39;outline-3&#39;&gt; 
      
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt;
      History:&lt;/h3&gt; 
      
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1-8&#39;&gt;   
      &lt;p&gt;   
      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&#39;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.   
      &lt;/p&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;p&gt;   
      About Emacspeak:   
      &lt;/p&gt;   
      &lt;hr/&gt;   
      &lt;p&gt;   
      Originally based at Cornell (NY)   
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; —home to Auditory User   
      Interfaces (AUI) on the WWW— Emacspeak is now maintained on   
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and   
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information   
      Technology at the Smithsonian&#39;s National Museum of American   
      History.   
      &lt;/p&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;outline-container-2&#39;
      class=&#39;outline-2&#39;&gt;   
      &lt;h2 id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; Press/Analyst
      Contact:
      Tilden Labrador&lt;/h2&gt;   
      &lt;div class=&#39;outline-text-2&#39; id=&#39;text-2&#39;&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;p&gt;   
      **About This Release:   
      &lt;/p&gt;   
      &lt;hr/&gt;   
      &lt;p&gt;   
      Windows-Free (WF) is a favorite battle-cry of The League Against   
      Forced Fenestration (LAFF).  —see   
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on   
      the ill-effects of Forced Fenestration.   
      &lt;/p&gt;   
      &lt;p&gt;   
      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.   
      &lt;/p&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;div id=&#39;postamble&#39;&gt;   
      &lt;p class=&#39;date&#39;&gt;Date: 2012-05-02 14:21:43
      PDT&lt;/p&gt;   
      &lt;p class=&#39;author&#39;&gt;Author: T.V Raman&lt;/p&gt;   
      &lt;p class=&#39;creator&#39;&gt;Org version 7.8.09 with Emacs
      version
      24&lt;/p&gt;   
      &lt;a
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate
      XHTML 1.0&lt;/a&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
      &lt;/div&gt;   
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5529021722260648318'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5529021722260648318'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2012/05/emacspeak-360-epubdog-unleashed.html' title='Emacspeak 36.0 (EPubDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3084012817801392916
    </id>
    <published>
      2011-11-23T09:33:00.001-08:00
    </published>
    <updated>2011-11-23T09:33:15.364-08:00
    </updated>
    <title type='text'>
      Emacspeak 35.0 (HeadDog) Released
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div&gt;
      &lt;div id=&#39;preamble&#39;&gt;
      
      &lt;/div&gt;
      
      &lt;div id=&#39;content&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      35.0—HeadDog—Unleashed!&lt;/h1&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-35.0
      (HeadDog) Unleashed! &lt;/h2&gt;
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt;
      
      
      
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-1&#39;&gt;
      &lt;h3 id=&#39;sec-1-1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; For Immediate
      Release: &lt;/h3&gt;
      &lt;div id=&#39;text-1-1&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      &lt;p&gt;
      San Jose, Calif., (November 23, 2011)
      Emacspeak:  Redefining Accessibility In The Era Of Cloud Computing
      –Zero cost of upgrades/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;--
      announces the immediate world-wide availability of Emacspeak
      35.0 (HeadDog) –a powerful audio desktop for leveraging
      today&#39;s      evolving
      data, social and service-oriented  Web cloud.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-2&#39;&gt;
      &lt;h3 id=&#39;sec-1-2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Investors Note:
      &lt;/h3&gt;
      &lt;div id=&#39;text-1-2&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      With several prominent tweeters expanding coverage of
      &lt;span
      
      style=&#39;text-decoration:underline;&#39;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-3&#39;&gt;
      &lt;h3 id=&#39;sec-1-3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; What Is It?
      &lt;/h3&gt;
      &lt;div id=&#39;text-1-3&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-4&#39;&gt;
      &lt;h3 id=&#39;sec-1-4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Major
      Enhancements:
      &lt;/h3&gt;
      &lt;div id=&#39;text-1-4&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;dl&gt;
      &lt;dt&gt;emacspeak-websearch.el&lt;/dt&gt;&lt;dd&gt;Improved search
      wizards including efficient Google search.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-epub.el&lt;/dt&gt;&lt;dd&gt;Preliminary EPub
      support.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-magit.el&lt;/dt&gt;&lt;dd&gt;Support for git
      interaction.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-pianobar.el&lt;/dt&gt;&lt;dd&gt;Pandora radio
      for the
      Emacspeak desktop.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-dbus.el&lt;/dt&gt;&lt;dd&gt;DBus integration to
      receive network notifications.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-woman.el&lt;/dt&gt;&lt;dd&gt;Speech-enable
      Emacs&#39;
      built-in Man page interface.
      &lt;/dd&gt;
      &lt;dt&gt;Emacspeak-npr.el&lt;/dt&gt;&lt;dd&gt;API client for NPR
      interaction.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-librivox.el&lt;/dt&gt;&lt;dd&gt;API  Client For
      Free
      Audio Books
      from Librivox.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-url-templates&lt;/dt&gt;&lt;dd&gt;Updated URL
      templates for efficient Web interaction.
      &lt;/dd&gt;
      &lt;dt&gt;emacspeak-bookshare.el&lt;/dt&gt;&lt;dd&gt;Bookshare API 
      Client Updated Bookshare client.
      &lt;/dd&gt;
      &lt;dt&gt;servers/mac&lt;/dt&gt;&lt;dd&gt;Support For Mac TTS
      &lt;/dd&gt;
      &lt;dt&gt;Emacs 24 Support&lt;/dt&gt;&lt;dd&gt;Updated support for
      the
      forthcoming Emacs
      24 release.
      &lt;/dd&gt;
      &lt;/dl&gt;
      
      
      &lt;p&gt;
      Plus many more changes too numerous to fit in this margin 󠇿…
      ∞      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-5&#39;&gt;
      &lt;h3 id=&#39;sec-1-5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom: &lt;/h3&gt;
      &lt;div id=&#39;text-1-5&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a
      crash-prone but well-marketed mousetrap with the assertion
      &quot;Emacs is a system from the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-6&#39;&gt;
      &lt;h3 id=&#39;sec-1-6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Independent
      Test      Results: &lt;/h3&gt;
      &lt;div id=&#39;text-1-6&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      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; &quot;It is the user –and not
      the      computer– that stops functioning when Emacspeak is
      uninstalled!&quot;.
      &lt;/p&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-1-6-1&#39;&gt;&lt;h4
      id=&#39;sec-1-6-1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.6.1&lt;/span&gt; Note from
      Aster,Bubbles and Tilden: &lt;/h4&gt;
      &lt;div id=&#39;text-1-6-1&#39; class=&#39;outline-text-4&#39;&gt;
      
      
      
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-7&#39;&gt;
      &lt;h3 id=&#39;sec-1-7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt; Obtaining
      Emacspeak:
      &lt;/h3&gt;
      &lt;div id=&#39;text-1-7&#39; class=&#39;outline-text-3&#39;&gt;
      
      
      
      &lt;p&gt;
      Emacspeak can be downloaded from Google Code Hosting –see
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-35.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-34.0.tar.bz2&lt;/a&gt;.
      The latest development snapshot of Emacspeak is available via
      Subversion from Google Code Hosting at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1-8&#39;&gt;
      &lt;h3 id=&#39;sec-1-8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; History:
      &lt;/h3&gt;
      &lt;div id=&#39;text-1-8&#39; class=&#39;outline-text-3&#39;&gt;
      
      &lt;p&gt;Emacspeak 35.0 is all about teaching a new dog old tricks
      —
      andis 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&#39;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
      HeadDog– 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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      About Emacspeak:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Originally based at Cornell (NY)
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; –home to Auditory User
      Interfaces (AUI) on the WWW– Emacspeak is now maintained on
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information
      Technology at the Smithsonian&#39;s National Museum of American
      History.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-2&#39;&gt;
      &lt;h2 id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; Press/Analyst
      Contact:
      Tilden Labrador &lt;/h2&gt;
      &lt;div id=&#39;text-2&#39; class=&#39;outline-text-2&#39;&gt;
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      **About This Release:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  –see
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      &lt;p&gt;
      CopyWrite )C( Aster and Hubbell Labrador. All Writes Reserved.
      HeadDog (DM), LiveDog (DM), HeadDog (DM), BlackDog (DM) etc., are
      Registered
      Dogmarks of Aster,  Hubbell  and Tilden Labrador.  All other dogs
      belong
      to
      their respective owners.
      &lt;/p&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;div id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;date&#39;&gt;Date: 2011-11-23 08:44:19
      PST&lt;/p&gt;      &lt;p class=&#39;author&#39;&gt;Author: T.V
      Raman&lt;/p&gt;
      &lt;p class=&#39;creator&#39;&gt;Org version 7.7 with Emacs version
      24&lt;/p&gt;
      &lt;a
      href=&#39;http://validator.w3.org/check?uri=referer&#39;&gt;Validate
      XHTML 1.0&lt;/a&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3084012817801392916'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3084012817801392916'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2011/11/emacspeak-350-headdog-released.html' title='Emacspeak 35.0 (HeadDog) Released'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7346123054934766410
    </id>
    <published>
      2011-08-01T17:29:00.001-07:00
    </published>
    <updated>2011-08-01T18:19:02.640-07:00
    </updated>
    <title type='text'>Welcome
      Press/Analyst Contact Tilden Labrador
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;strong&gt;For Immediate Release:&lt;/strong&gt;
      &lt;em&gt;Monday, August 1, 2011&lt;/em&gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;h2&gt;
      
      Emacspeak Inc. Appoints New Press/Analyst Contact&lt;/h2&gt;
      &lt;div class=&quot;separator&quot; style=&quot;clear: both;
      text-align:
      center;&quot;&gt;
      &lt;a
      
      
      href=&quot;http://emacspeak.sourceforge.net/raman/tilden-labrador/tilden-bandana.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Tilden Labrador&quot; height=&quot;640&quot; src=&quot;http://emacspeak.sourceforge.net/raman/tilden-labrador/tilden-bandana.jpg&quot; width=&quot;404&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
      &lt;br /&gt;
      Tilden Labrador, a young, energetic male  yellow Labrador, has
      accepted the position of Press/Analyst contact for Emacspeak
      Inc.   ---  in addition to his primary   responsibility of being
      a  fulltime guide-dog.&lt;br /&gt;
      Hand-picked from an exclusive pool of high-quality caninedates,
      Tilden
      brings
      a large and level head to this  position of
      responsibility. Tilden grew up in Monroe Ct,  before going to
      school at Guiding Eyes For The Blind (GEB), NY.
      He graduated from GEB&#39;s Action program after excelling at
      obstacle avoidance and path planning in Yorktown Heights,
      peekskill and White Plains. He rounded out his education with a
      one-week practicum  on the Google campus in Mountain View CA.&lt;br
      /&gt;
      Tilden brings a fresh perspective to his new job --- he is the
      first male Labrador to  take on the role of Emacspeak Inc.&#39;s
      press/analyst contact. Asked how he felt about this unique
      distinction, he pointed out:&lt;br /&gt;
      &quot;On the Internet no one knows you&#39;re a dog, leave alone
      what      gender you are&quot;.&lt;br /&gt;
      Tilden promises to steer Emacspeak in a manner that would do
      his predecessors &lt;a
      
      href=&quot;http://emacspeak.sf.net/raman/aster-labrador&quot;&gt;Aster
      Labrador&lt;/a&gt; and &lt;a
      
      
      href=&quot;http://emacspeak.sf.net/raman/hubbell-labrador&quot;&gt;HubbellLabrador&lt;/a&gt; proud.&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7346123054934766410'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7346123054934766410'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2011/08/welcome-pressanalyst-contact-tilden.html' title='Welcome Press/Analyst Contact Tilden Labrador'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1897244149616239418
    </id>
    <published>
      2011-05-13T11:24:00.001-07:00
    </published>
    <updated>2011-05-13T11:24:23.602-07:00
    </updated>
    <title type='text'>In
      Praise Of Bubbles — Emacspeak 34.0 Unleashed!
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;content&#39;&gt;
      
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak
      34.0—Bubbles—Unleashed!&lt;/h1&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;1 Emacspeak-34.0 (Bubbles) Unleashed!
      &lt;/h2&gt;
      &lt;div id=&#39;text-1&#39;&gt;
      
      
      
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.1&#39;&gt;
      &lt;h3 id=&#39;sec-1.1&#39;&gt;1.1 For Immediate Release:
      &lt;/h3&gt;      &lt;div id=&#39;text-1.1&#39;&gt;
      
      
      &lt;p&gt;
      San Jose, Calif., (May 13, 2011)
      Emacspeak:  Redefining Accessibility In The Era Of Cloud Computing
      –Zero cost of upgrades/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net--&#39;&gt;http://emacspeak.sf.net--&lt;/a&gt;
      announces the immediate world-wide availability of Emacspeak
      34.0 (Bubbles) –a powerful audio desktop for leveraging
      today&#39;s      evolving
      data, social and service-oriented  Web cloud.
      &lt;/p&gt;&lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.2&#39;&gt;
      &lt;h3 id=&#39;sec-1.2&#39;&gt;1.2 Code Name Note &lt;/h3&gt;
      &lt;div id=&#39;text-1.2&#39;&gt;
      
      
      &lt;p&gt;
      After 11+ years of loyal service, Hubbell Labrador retired from
      active duty as a guide-dog on April 4,2011; she stayed on as
      Emacspeak&#39;s press contact for another week before finally
      leaving      us on April 11, 2011
      — &lt;a
      
      
      href=&#39;http://emacspeak.sf.net/raman/hubbell-labrador/epitaph.html&#39;&gt;Epitaph&lt;/a&gt;. This release is code named Bubbles  in honour of her
      unflagging service over thesee last 11 years.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.3&#39;&gt;
      &lt;h3 id=&#39;sec-1.3&#39;&gt;1.3 Investors Note: &lt;/h3&gt;
      &lt;div id=&#39;text-1.3&#39;&gt;
      
      
      
      &lt;p&gt;
      With several prominent tweeters expanding coverage of &lt;span
      
      style=&#39;text-decoration:underline;&#39;&gt;#emacspeak&lt;/span&gt;,
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.4&#39;&gt;
      &lt;h3 id=&#39;sec-1.4&#39;&gt;1.4 What Is It? &lt;/h3&gt;
      &lt;div id=&#39;text-1.4&#39;&gt;
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.5&#39;&gt;
      &lt;h3 id=&#39;sec-1.5&#39;&gt;1.5 Major Enhancements: &lt;/h3&gt;
      &lt;div id=&#39;text-1.5&#39;&gt;
      
      
      &lt;ol&gt;
      &lt;li&gt;
      Updated URL Templates for rapid Web access. ♁
      &lt;/li&gt;
      &lt;li&gt;
      Support for twittering-mode—including logins using OAuth.    ●
      &lt;/li&gt;
      &lt;li&gt;
      API  Client for NPR programming. 🔘
      &lt;/li&gt;
      &lt;li&gt;
      Librivox API  client. 📚
      &lt;/li&gt;
      &lt;li&gt;
      Emacs 24 support ♺
      &lt;/li&gt;
      &lt;li&gt;
      Speech server support for Mac OS.
      
      
      
      &lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;Plus many more changes too numerous to fit in this margin 
      ∞
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.6&#39;&gt;
      &lt;h3 id=&#39;sec-1.6&#39;&gt;1.6 Establishing Liberty, Equality
      And      Freedom: &lt;/h3&gt;
      &lt;div id=&#39;text-1.6&#39;&gt;
      
      
      
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a
      crash-prone but well-marketed mousetrap with the assertion
      &quot;Emacs is a system from the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.7&#39;&gt;
      &lt;h3 id=&#39;sec-1.7&#39;&gt;1.7 Independent Test Results:
      &lt;/h3&gt;
      &lt;div id=&#39;text-1.7&#39;&gt;
      
      
      
      &lt;p&gt;
      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; &quot;It is the user –and not
      the      computer– that stops functioning when Emacspeak is
      uninstalled!&quot;.
      &lt;/p&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-1.7.1&#39;&gt;&lt;h4
      id=&#39;sec-1.7.1&#39;&gt;1.7.1 Note from Aster and Bubbles:
      &lt;/h4&gt;
      &lt;div id=&#39;text-1.7.1&#39;&gt;
      
      
      
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.8&#39;&gt;
      &lt;h3 id=&#39;sec-1.8&#39;&gt;1.8 Obtaining Emacspeak: &lt;/h3&gt;
      &lt;div id=&#39;text-1.8&#39;&gt;
      
      
      
      &lt;p&gt;
      Emacspeak can be downloaded from Google Code Hosting –see
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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 StarDog release is at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-34.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-34.0.tar.bz2&lt;/a&gt;.
      The latest development snapshot of Emacspeak is available via
      Subversion from Google Code Hosting at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.9&#39;&gt;
      &lt;h3 id=&#39;sec-1.9&#39;&gt;1.9 History: &lt;/h3&gt;
      &lt;div id=&#39;text-1.9&#39;&gt;
      
      &lt;p&gt;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&#39;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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      About Emacspeak:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Originally based at Cornell (NY)
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt; –home to Auditory User
      Interfaces (AUI) on the WWW– Emacspeak is now maintained on
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt; —and
      Sourceforge —&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information
      Technology at the Smithsonian&#39;s National Museum of American
      History.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-2&#39;&gt;
      &lt;h2 id=&#39;sec-2&#39;&gt;2 Press/Analyst Contact: Hubbell
      Labrador
      &lt;/h2&gt;
      &lt;div id=&#39;text-2&#39;&gt;
      
      
      &lt;p&gt;
      Going forward, BubbleDog acknowledges her 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.
      &lt;/p&gt;
      &lt;p&gt;
      **About This Release:
      
      &lt;/p&gt;
      &lt;hr/&gt;
      
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).  –see
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      &lt;p&gt;
      CopyWrite )C( Aster and Hubbell Labrador. All Writes Reserved.
      LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are Registered
      Dogmarks of Aster and Hubbell Labrador.  All other dogs belong to
      their respective owners.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;postamble&#39;&gt;&lt;p class=&#39;author&#39;&gt;
      Author: T.V Raman
      &lt;a href=&#39;mailto:tv.raman.tv@gmail.com#+DATE:      2009-11-25
      Wed&#39;&gt;&amp;lt;tv.raman.tv@gmail.com#+DATE:      2009-11-25
      Wed&amp;gt;&lt;/a&gt;
      &lt;/p&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1897244149616239418'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1897244149616239418'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2011/05/in-praise-of-bubbles-emacspeak-340.html' title='In Praise Of Bubbles — Emacspeak 34.0 Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4997150303021985803
    </id>
    <published>
      2011-04-20T08:46:00.001-07:00
    </published>
    <updated>2011-04-20T15:53:11.407-07:00
    </updated>
    <title type='text'>Hubbell
      (Bubbles) Labrador  Biography --- My&#xa;  Bubbly Life
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h2&gt;Hubbell (Bubbles) Labrador Biography — My Bubbly
      Life&lt;/h2&gt;
      &lt;p&gt;You can read &lt;a
      href=&#39;http://treatrt.blogspot.com/&#39;&gt;Bubbles
      life story&lt;/a&gt;  
      entitled &lt;em&gt;My Bubbly Life&lt;/em&gt;.
      The story is being written from the perspective of an energetic
      Labrador, full of enthusiasm for life. Linking the blog in here
      in honor of Emacspeak&#39;s Press/Analyst contact for the last 11
      years.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4997150303021985803'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4997150303021985803'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2011/04/bubbles-life-story-in-her-own-words.html' title='Hubbell (Bubbles) Labrador  Biography --- My&#xa;  Bubbly Life'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2711131965029639430
    </id>
    <published>
      2011-04-15T19:16:00.001-07:00
    </published>
    <updated>2011-04-15T19:16:39.088-07:00
    </updated>
    <title type='text'>Epitaph:
      Saying GoodBye To Our Beloved Press/Analyst Contact
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;After guiding me for 11 years and 2 months, and setting
      Emacspeak&#39;s direction at every step for over 11 years, I Had to
      say a final goodbye to our beloved mascot and Press/Analyst
      contact &lt;a
      
      
      href=&#39;http://emacspeak.sf.net/raman/hubbell-labrador/epitaph.html&#39;&gt;Bubbles
      went to sleep April 11, 2011&lt;/a&gt; for the final time.
      &lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2711131965029639430'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2711131965029639430'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2011/04/epitaph-saying-goodbye-to-our-beloved.html' title='Epitaph: Saying GoodBye To Our Beloved Press/Analyst Contact'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6332752551037993069
    </id>
    <published>
      2011-02-07T08:20:00.001-08:00
    </published>
    <updated>2011-02-07T08:20:19.686-08:00
    </updated>
    <title type='text'>
      Emacspeak: In Praise Of The Bookshare API
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;  
      &lt;p&gt;Bookshare recently released a light-weight API that enables
       
      one to implement custom Bookshare clients. Though Bookshare is  
      fully accessible using either Emacs/W3 or Emacs/W3M from within  
      the Emacspeak desktop, browser based  interaction often involves  
      more clicks than are absolutely necessary to finish the task at  
      hand.&lt;/p&gt;  
      
      &lt;p&gt;Welcome module &lt;em&gt;emacspeak-bookshare&lt;/em&gt;, a
      fully
      
      integrated Bookshare client for  the Emacspeak desktop.  
      Module &lt;em&gt;emacspeak-bookshare&lt;/em&gt; provides  a special 
            &lt;code&gt;Bookshare Interaction&lt;/code&gt; mode  that
      provides single
      
      keystroke commands for searching, downloading and viewing  
      Bookshare materials from within the comfort of the Emacspeak  
      desktop.&lt;/p&gt;  
      
      &lt;p&gt;Module &lt;em&gt;Emacspeak-bookshare&lt;/em&gt; is now
      checked
      into SVN,  
      and will be bundled as part of the next Emacspeak release.To  
      learn how to use Bookshare Interaction on the audio desktop, see  
      command &lt;code&gt;emacspeak-bookshare&lt;/code&gt;; to view the
      help
      for  
      Bookshare Interaction,  
      invoke command &lt;code&gt;describe-mode&lt;/code&gt; within the
      Bookshare  
      Interaction buffer.&lt;/p&gt;  
      
      &lt;p&gt;Read and Enjoy!&lt;/p&gt;  
      is   
      &lt;/div&gt;  
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6332752551037993069'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6332752551037993069'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2011/02/emacspeak-in-praise-of-bookshare-api.html' title='Emacspeak: In Praise Of The Bookshare API'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4240598391795903129
    </id>
    <published>
      2010-12-21T09:54:00.001-08:00
    </published>
    <updated>2010-12-21T09:54:23.271-08:00
    </updated>
    <title type='text'>Silence
      Is Golden
    </title>
    <content type='html'>   
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;   
      &lt;p&gt;Speech is silvern --- but silence is golden!   
      In the spirit of the above, I just added command   
      &lt;code&gt;emacspeak-silence&lt;/code&gt; to Emacspeak. You can
      bind      this   
      command to your favorite key for silencing all audio output on   
      the complete audio desktop --- including any active media   
      streams.&lt;/p&gt;   
      &lt;h2&gt;What This Does&lt;/h2&gt;   
      
      &lt;p&gt;Command &lt;code&gt;emacspeak-silence&lt;/code&gt; stops
      speech
      by calling   
      &lt;code&gt;dtk-stop&lt;/code&gt;. It then runs commands placed on  
            &lt;code&gt;emacspeak-silence-hook&lt;/code&gt;.   
      Each media player defined by Emacspeak  updates hook   
      &lt;code&gt;emacspeak-silence-hook&lt;/code&gt; with an appropriate
      action   
      that pauses or resumes  that player.&lt;/p&gt;   
      
      &lt;p&gt;I&#39;ve also updated the keymaps in   
      &lt;code&gt;tvr/console-keymaps&lt;/code&gt; to set up the   
      &lt;code&gt;windows&lt;/code&gt; key on the console to produce   
      &lt;code&gt;[silence]&lt;/code&gt;, and bound command   
      &lt;code&gt;emacspeak-silence&lt;/code&gt; to
      &lt;code&gt;[silence]&lt;/code&gt; in   
      &lt;code&gt;emacspeak-keymap.el&lt;/code&gt;.&lt;/p&gt;   
      
      &lt;p&gt;   
      The net effect is that if you use those console maps, you can   
      just hit the &lt;code&gt;windows&lt;/code&gt; key whenever you want
      to   
      silence all audio output; pressing it again will resume any media   
      streams you had active.&lt;/p&gt;   
      
      &lt;p&gt;Share And Enjoy --- and here&#39;s  wishing our
      Press/Analyst   
      contact a very Happy 13th Birthday --- mark it with a palindromic   
      moment at  &lt;code&gt;010212212010&lt;/code&gt;   
      i.e., &lt;code&gt;Tue Dec 21 01:02:15 PST 2010&lt;/code&gt;   
      &lt;/p&gt;   
      
      
      &lt;/div&gt;   
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4240598391795903129'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4240598391795903129'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2010/12/silence-is-golden.html' title='Silence Is Golden'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-204658359808048204
    </id>
    <published>
      2010-11-24T10:53:00.001-08:00
    </published>
    <updated>2010-11-24T10:53:26.154-08:00
    </updated>
    <title type='text'>
      Emacspeak 33.0 (StarDog) Unleashed!
    </title>
    <content type='html'> 
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt; 
      &lt;div id=&#39;content&#39;&gt; 
      
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak 33.0  ---  StarDog  --- 
      Unleashed!&lt;/h1&gt; 
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt; 
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-33.0
      (StarDog) Unleashed! &lt;/h2&gt; 
      &lt;div id=&#39;text-1&#39; class=&#39;outline-text-2&#39;&gt; 
      
      
      
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_1&#39;&gt; 
      &lt;h3 id=&#39;sec-1_1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; For Immediate
      Release: &lt;/h3&gt; 
      &lt;div id=&#39;text-1_1&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      &lt;p&gt; 
      San Jose, Calif., (Nov 24, 2010) 
      Emacspeak: Bringing Cloud Access From The    Stars 
      -- Zero cost of upgrades/downgrades makes priceless software
      affordable! 
      &lt;/p&gt; 
      &lt;p&gt; 
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;-- 
      announces the immediate world-wide availability of Emacspeak 
      33.0 (StarDog)  -- a powerful audio desktop for leveraging
      today&#39;s
      evolving 
      data, social and service-oriented  Web cloud. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_2&#39;&gt; 
      &lt;h3 id=&#39;sec-1_2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Investors Note:
      &lt;/h3&gt; 
      &lt;div id=&#39;text-1_2&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      With several prominent tweeters expanding coverage, 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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_3&#39;&gt; 
      &lt;h3 id=&#39;sec-1_3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; What Is It?
      &lt;/h3&gt; 
      &lt;div id=&#39;text-1_3&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      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 Web cloud. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_4&#39;&gt; 
      &lt;h3 id=&#39;sec-1_4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Major
      Enhancements:
      &lt;/h3&gt; 
      &lt;div id=&#39;text-1_4&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      
      &lt;ol&gt; 
      &lt;li&gt; 
      Updated URL Templates for rapid Web access. ♁ 
      
      &lt;/li&gt; 
      &lt;li&gt; 
      Support for twittering-mode  ---  including logins using OAuth.   
      ● 
      
      &lt;/li&gt; 
      &lt;li&gt; 
      Updated Google docs support enables publishing from org-mode.   ○ 
      &lt;/li&gt; 
      &lt;li&gt; 
      Enhanced BBC iPlayer support ☢ 
      &lt;/li&gt; 
      &lt;li&gt; 
      Emacs 24 support ♺ 
      
      &lt;/li&gt; 
      &lt;/ol&gt; 
      
      &lt;p&gt;Plus many more changes too numerous to fit in this margin  
      ∞ 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_5&#39;&gt; 
      &lt;h3 id=&#39;sec-1_5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom: &lt;/h3&gt; 
      &lt;div id=&#39;text-1_5&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      On this theme, when once challenged by a proponent of a 
      crash-prone but well-marketed mousetrap with the assertion 
      &quot;Emacs is a system from the 70&#39;s&quot;, 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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_6&#39;&gt; 
      &lt;h3 id=&#39;sec-1_6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Independent
      Test      Results: &lt;/h3&gt; 
      &lt;div id=&#39;text-1_6&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      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; &quot;It is the user  -- and
      not the 
      computer --  that stops functioning when Emacspeak is
      uninstalled!&quot;.
      &lt;/p&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-4&#39;
      id=&#39;outline-container-1_6_1&#39;&gt; 
      &lt;h4 id=&#39;sec-1_6_1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.6.1&lt;/span&gt; Note from
      Aster
      and Bubbles: &lt;/h4&gt; 
      &lt;div id=&#39;text-1_6_1&#39; class=&#39;outline-text-4&#39;&gt; 
      
      
      
      &lt;p&gt; 
      UnDoctored Videos Inc. is looking for volunteers to star in a 
      video demonstrating such complete user failure. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_7&#39;&gt; 
      &lt;h3 id=&#39;sec-1_7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt; Obtaining
      Emacspeak:
      &lt;/h3&gt; 
      &lt;div id=&#39;text-1_7&#39; class=&#39;outline-text-3&#39;&gt; 
      
      
      
      &lt;p&gt; 
      Emacspeak can be downloaded from Google Code Hosting  -- see 
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit 
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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 StarDog release is at  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-33.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-33.0.tar.bz2&lt;/a&gt;. 
      The latest development snapshot of Emacspeak is available via 
      Subversion from Google Code Hosting at  
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt; 
      &lt;/p&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1_8&#39;&gt; 
      &lt;h3 id=&#39;sec-1_8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; History:
      &lt;/h3&gt;
      &lt;div id=&#39;text-1_8&#39; class=&#39;outline-text-3&#39;&gt; 
      
      &lt;p&gt;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&#39;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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      About Emacspeak: 
      
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Originally based at Cornell (NY) 
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt;  -- home to Auditory User 
      Interfaces (AUI) on the WWW --  Emacspeak is now maintained on 
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt;  --  and 
      Sourceforge  --  &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information 
      Technology at the Smithsonian&#39;s National Museum of American 
      History. 
      &lt;/p&gt; 
      &lt;p&gt; 
      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. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      
      &lt;/div&gt; 
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-2&#39;&gt; 
      &lt;h2 id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; Press/Analyst
      Contact:
      Hubbell Labrador &lt;/h2&gt; 
      &lt;div id=&#39;text-2&#39; class=&#39;outline-text-2&#39;&gt; 
      
      
      &lt;p&gt; 
      Going forward, BubbleDog acknowledges her 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. 
      &lt;/p&gt; 
      &lt;p&gt; 
      **About This Release: 
      
      &lt;/p&gt; 
      &lt;hr/&gt; 
      
      &lt;p&gt; 
      Windows-Free (WF) is a favorite battle-cry of The League Against 
      Forced Fenestration (LAFF).   -- see 
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on 
      the ill-effects of Forced Fenestration. 
      &lt;/p&gt; 
      &lt;p&gt; 
      CopyWrite )C( Aster and Hubbell Labrador. All Writes Reserved. 
      LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are Registered 
      Dogmarks of Aster and Hubbell Labrador.  All other dogs belong to 
      their respective owners. 
      &lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;div id=&#39;postamble&#39;&gt; 
      &lt;p class=&#39;author&#39;&gt; Author: T.V Raman 
      &lt;/p&gt; 
      &lt;p class=&#39;date&#39;&gt; Date: 2010-11-24 08:43:55
      PST&lt;/p&gt; 
      &lt;p class=&#39;creator&#39;&gt;HTML generated by org-mode 7.01 in
      emacs
      24&lt;/p&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
      &lt;/div&gt; 
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/204658359808048204'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/204658359808048204'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2010/11/emacspeak-330-stardog-unleashed.html' title='Emacspeak 33.0 (StarDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5033630278890460887
    </id>
    <published>
      2010-05-12T17:38:00.001-07:00
    </published>
    <updated>2010-05-14T13:34:32.048-07:00
    </updated>
    <title type='text'>
      Emacspeak 32.0 (LuckyDog) Unleashed
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div id=&#39;article&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak 32.0  ---  LuckyDog  --- 
      Unleashed!&lt;/h1&gt;
      &lt;div id=&#39;outline-container-1&#39;
      class=&#39;outline-2&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;1&lt;/span&gt; Emacspeak-32.0
      (LuckyDog) Unleashed! &lt;/h2&gt;
      &lt;div class=&#39;outline-text-2&#39; id=&#39;text-1&#39;&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.1&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.1&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.1&lt;/span&gt; For Immediate
      Release: &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.1&#39;&gt;
      &lt;p&gt;
      San Jose, Calif., (May 13, 2010)
      Emacspeak: Bringing tweet Access For   social beings
      -- ;Zero cost of upgrades/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;--
      announces the immediate world-wide availability of Emacspeak
      32.0 (LuckyDog)  -- ;a powerful audio desktop for leveraging
      today&#39;s
      evolving
      data, social and service-oriented  Web cloud.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.2&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.2&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.2&lt;/span&gt; Investors Note:
      &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.2&#39;&gt;
      &lt;p&gt;
      With several prominent tweeters expanding coverage, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.3&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.3&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.3&lt;/span&gt; What Is It?
      &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.3&#39;&gt;
      &lt;p&gt;
      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 Web cloud.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.4&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.4&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.4&lt;/span&gt; Major
      Enhancements:
      &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.4&#39;&gt;
      &lt;ol&gt;
      &lt;li&gt;
      Updated URL Templates for rapid Web access. ♁
      &lt;/li&gt;
      &lt;li&gt;
      BBC iPlayer support ☢
      &lt;/li&gt;
      &lt;li&gt;
      Updated EPub support ✍
      &lt;/li&gt;
      &lt;li&gt;
      Emacs 24 support ♺
      &lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;Plus many more changes too numerous to fit in this margin 
      ∞
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.5&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.5&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.5&lt;/span&gt; Establishing
      Liberty, Equality And Freedom: &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.5&#39;&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      On this theme, when once challenged by a proponent of a
      crash-prone but well-marketed mousetrap with the assertion
      &quot;Emacs is a system from the 70&#39;s&quot;, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.6&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.6&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.6&lt;/span&gt; Independent
      Test      Results: &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.6&#39;&gt;
      &lt;p&gt;
      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; &quot;It is the user  -- ;and not
      the
      computer -- ; that stops functioning when Emacspeak is
      uninstalled!&quot;.&lt;/p&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.6.1&#39;
      class=&#39;outline-4&#39;&gt;&lt;h4
      id=&#39;sec-1.6.1&#39;&gt;&lt;span
      class=&#39;section-number-4&#39;&gt;1.6.1&lt;/span&gt; Note from
      Aster
      and Bubbles: &lt;/h4&gt;
      &lt;div class=&#39;outline-text-4&#39; id=&#39;text-1.6.1&#39;&gt;
      &lt;p&gt;
      UnDoctored Videos Inc. is looking for volunteers to star in a
      video demonstrating such complete user failure.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.7&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.7&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.7&lt;/span&gt; Obtaining
      Emacspeak:
      &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.7&#39;&gt;
      &lt;p&gt;
      Emacspeak can be downloaded from Google Code Hosting  -- ;see
      &lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;http://code.google.com/p/emacspeak/&lt;/a&gt; You can visit
      Emacspeak on the WWW at &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;.  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 LuckyDog release is at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-32.0.tar.bz2&#39;&gt;http://emacspeak.googlecode.com/files/emacspeak-32.0.tar.bz2&lt;/a&gt;.
      The latest development snapshot of Emacspeak is available via
      Subversion from Google Code Hosting at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/&#39;&gt;http://emacspeak.googlecode.com/svn/trunk/&lt;/a&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.8&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.8&#39;&gt;&lt;span
      class=&#39;section-number-3&#39;&gt;1.8&lt;/span&gt; History:
      &lt;/h3&gt;
      &lt;div class=&#39;outline-text-3&#39; id=&#39;text-1.8&#39;&gt;
      &lt;p&gt;
      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&#39;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.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;p&gt;
      About Emacspeak:
      &lt;/p&gt;
      &lt;hr/&gt;
      &lt;p&gt;
      Originally based at Cornell (NY)
      &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman&#39;&gt;http://www.cs.cornell.edu/home/raman&lt;/a&gt;  -- ;home to Auditory User
      Interfaces (AUI) on the WWW -- ; Emacspeak is now maintained on
      GoogleCode --&lt;a
      
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;http://code.google.com/p/emacspeak&lt;/a&gt;  -- ; and
      Sourceforge  -- ; &lt;a
      
      
      href=&#39;http://emacspeak.sf.net&#39;&gt;http://emacspeak.sf.net&lt;/a&gt;. 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&#39;s Permanent Research Collection on Information
      Technology at the Smithsonian&#39;s National Museum of American
      History.
      &lt;/p&gt;
      &lt;p&gt;
      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.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-2&#39;
      class=&#39;outline-2&#39;&gt;
      &lt;h2 id=&#39;sec-2&#39;&gt;&lt;span
      class=&#39;section-number-2&#39;&gt;2&lt;/span&gt; Press/Analyst
      Contact:
      Hubbell Labrador &lt;/h2&gt;
      &lt;div class=&#39;outline-text-2&#39; id=&#39;text-2&#39;&gt;
      &lt;p&gt;
      Going forward, BubbleDog acknowledges her 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.
      &lt;/p&gt;
      &lt;p&gt;
      **About This Release:
      &lt;/p&gt;
      &lt;hr/&gt;
      &lt;p&gt;
      Windows-Free (WF) is a favorite battle-cry of The League Against
      Forced Fenestration (LAFF).   -- ;see
      &lt;a
      
      
      href=&#39;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&#39;&gt;http://www.usdoj.gov/atr/cases/f3800/msjudgex.htm&lt;/a&gt; for details on
      the ill-effects of Forced Fenestration.
      &lt;/p&gt;
      &lt;p&gt;
      CopyWrite )C( Aster and Hubbell Labrador. All Writes Reserved.
      LiveDog (DM), GoldenDog (DM), BlackDog (DM) etc., are Registered
      Dogmarks of Aster and Hubbell Labrador.  All other dogs belong to
      their respective owners.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&#39;postamble&#39;&gt;
      &lt;p class=&#39;author&#39;&gt; Author: T.V Raman
      &lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt; Date: 2010-05-10 17:37:06
      PDT&lt;/p&gt;
      &lt;p class=&#39;creator&#39;&gt;HTML generated by org-mode 6.35i in
      emacs 24&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5033630278890460887'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5033630278890460887'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2010/05/emacspeak-320-luckydog-unleashed.html' title='Emacspeak 32.0 (LuckyDog) Unleashed'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2482514192131547324
    </id>
    <published>
      2010-01-26T08:41:00.001-08:00
    </published>
    <updated>2010-01-26T09:03:52.705-08:00
    </updated>
    <title type='text'>AsTeR
      --- Audio System For Technical Readings
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Almost exactly 16 years to the date after presenting AsTeR
      --- &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman/aster/aster-toplevel.html&#39;&gt;Audio System For Technical Readings&lt;/a&gt; --- 
      to the CS Faculty at Cornell for my &lt;a
      
      
      href=&#39;http://www.cs.cornell.edu/home/raman/phd-theseis/index.html&#39;&gt;PhD&lt;/a&gt;, I released the source
      code as Open Source --- thanks to Prof. David Gries at Cornell
      for approving this release.&lt;/p&gt;
      &lt;p&gt;The sources are checked into GoogleCode project 
      &lt;a
      
      href=&#39;http://aster-math.googlecode.com&#39;&gt;aster-math&lt;/a&gt;
      ---
      unfortunately, the name AsTeR was unavailable since there is an
      unrelated project of the same name at SourceForge.&lt;/p&gt;
      &lt;p&gt;So you might well ask: why 16 years later, and why now? The
      honest answer is &lt;q&gt;No good reason,&lt;/q&gt; except that
      after      graduating from Cornell, I decided that I would work on 
      newer
      projects, and consequently had no cycles to support the AsTeR
      code base. Nothing has changed in that context, nor is it likely
      to change in the coming future; however I get requests off and on
      from different parts of the Web from teachers and students alike
      who have seen my PhD  theseis, played with the demos, and wish to
      study the sources.&lt;/p&gt;
      &lt;h2&gt;What You&#39;ll Find In The Sources&lt;/h2&gt;
      &lt;p&gt;The code has not been actively developed since I finished
      my      work at Cornell; however, over the years, I &#39;ve ensured
      that the
      system starts up and runs on Linux using the Open Source CLisp
      environment.
      The only text-to-speech engine that is supported is the hardware
      DECTalk  --- though it should be a small matter of programming to
      support the various Emacspeak speech servers. If you do checkout
      the source code, start by looking at the 
      &lt;a
      
      
      href=&#39;http://aster-math.googlecode.com/svn/trunk/README&#39;&gt;README&lt;/a&gt;
      file which contains brief instructions on getting started. Feel
      free to use the Emacspeak mailing list for now if you wish to
      discuss the code --- if the traffic justifies it, we can later
      create a project-specific list.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2482514192131547324'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2482514192131547324'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2010/01/aster-audio-system-for-technical.html' title='AsTeR --- Audio System For Technical Readings'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5583569647483114898
    </id>
    <published>
      2009-11-25T17:22:00.001-08:00
    </published>
    <updated>2009-11-25T17:22:04.471-08:00
    </updated>
    <title type='text'>
      Emacspeak 31 (AKA TweetDog) Unleashed!
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h1 class=&#39;title&#39;&gt;Emacspeak 31.0  -  TweetDog  - 
      Unleashed!&lt;/h1&gt;
      
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;1 Emacspeak-31.0 (TweetDog)
      Unleashed!&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39;&gt;
      
      &lt;p&gt;
      &lt;hr/&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-2&#39;&gt;
      &lt;h2 id=&#39;sec-2&#39;&gt;2 For Immediate Release:&lt;/h2&gt;
      &lt;div id=&#39;text-2&#39;&gt;
      
      
      &lt;p&gt;
      San Jose, Calif., (Nov 26, 2009)
      Emacspeak: Bringing tweet Access For   social beings
      - Zero cost of upgrades/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      &lt;p&gt;
      Emacspeak Inc (NASDOG: ESPK) --&lt;a
      
      
      href=&#39;http://emacspeak.sf.net--&#39;&gt;http://emacspeak.sf.net--&lt;/a&gt;
      announces the immediate world-wide availability of Emacspeak
      31.0 (TweetDog)  - a powerful audio desktop for leveraging
      today&#39;s
      evolving
      data, social and service-oriented  Web cloud.
      &lt;/p&gt;
      &lt;table cellpadding=&#39;5&#39; cellspacing=&#39;1&#39;
      rules=&#39;all&#39; border=&#39;1&#39; summary=&#39;navigation
      bar&#39;
      role=&#39;navigation&#39;&gt;
      &lt;tr style=&#39;background: yellow; text-color: navy; font-weight:
      bold&#39;&gt;
      &lt;td&gt;&lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-31.0.tar.bz2&#39;&gt;Downloads&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&#39;../info/emacspeak.html&#39;&gt;
      Reference&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      
      href=&#39;../install-guide/&#39;&gt;Installation&lt;/a&gt;&lt;/td&gt;      &lt;td&gt; &lt;a href=&#39;../user-guide/&#39;&gt;Usage&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;&lt;a
      href=&#39;../tips.html&#39;&gt;Tips&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      href=&#39;../applications.html&#39;&gt;Tools&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt; &lt;a
      
      
      href=&#39;http://www.cs.vassar.edu/~priestdo/emacspeak/&#39;&gt;Support&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;7&#39;&gt;
      &lt;img alt=&#39;EMACSPEAK Logo&#39; height=&#39;216&#39;
      width=&#39;150&#39; src=&#39;emacspeak.jpg&#39;/&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;4&#39;&gt;&lt;a href=&#39;raman/&#39;&gt;About
      the
      author&lt;/a&gt;&lt;/td&gt;
      &lt;td colspan=&#39;3&#39;&gt;
      &lt;a href=&#39;http://sourceforge.net/projects/emacspeak&#39;&gt;
      &lt;img alt=&#39;SourceForge&#39; border=&#39;0&#39;
      height=&#39;31&#39;
      width=&#39;88&#39;
      src=&#39;http://sourceforge.net/sflogo.php?group_id=2238&#39;/&gt;
      &lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/table&gt;
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-2.1&#39;&gt;
      &lt;h3 id=&#39;sec-2.1&#39;&gt;2.1 Investors Note:&lt;/h3&gt;
      &lt;div id=&#39;text-2.1&#39;&gt;
      
      &lt;p&gt;
      &lt;hr/&gt;
      &lt;/p&gt;
      &lt;p&gt;
      With several prominent tweeters expanding coverage, 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.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-2.2&#39;&gt;
      &lt;h3 id=&#39;sec-2.2&#39;&gt;2.2 What Is It?&lt;/h3&gt;
      &lt;div id=&#39;text-2.2&#39;&gt;
      
      &lt;p&gt;
      &lt;hr/&gt;
      &lt;/p&gt;
      &lt;p&gt;
      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 Web cloud.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-2.3&#39;&gt;
      &lt;h3 id=&#39;sec-2.3&#39;&gt;2.3 Major Enhancements:&lt;/h3&gt;
      &lt;div id=&#39;text-2.3&#39;&gt;
      
      &lt;p&gt;
      &lt;hr/&gt;
      &lt;/p&gt;
      &lt;ol&gt;
      &lt;li&gt;
      Speech-enables Twitter. ✹
      &lt;/li&gt;
      &lt;li&gt;
      Unicode support for enabling the world&#39;s various charsets.♁
      &lt;/li&gt;
      &lt;li&gt;
      Emacs front-end to popular Google AJAX APIs. ⚤
      &lt;/li&gt;
      &lt;li&gt;
      Updated g-client with preliminary support for Google
      Docs. ✏
      &lt;/li&gt;
      &lt;li&gt;
      Updated URL Templates for rapid Web access. ♅
      &lt;/li&gt;
      &lt;li&gt;
      Updated WebSearch wizards for enhanced productivity.♄
      
      &lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;Plus many more changes too numerous to fit in this margin 
      ... 
      ⚭
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;&lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5583569647483114898'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5583569647483114898'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/11/emacspeak-31-aka-tweetdog-unleashed.html' title='Emacspeak 31 (AKA TweetDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3455142340996047146
    </id>
    <published>
      2009-10-13T08:57:00.001-07:00
    </published>
    <updated>2009-10-13T08:57:38.039-07:00
    </updated>
    <title type='text'>A Google
      Tool-belt For The Complete Audio Desktop
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div&gt;
      &lt;h2&gt;Introducing The Emacspeak Google Tool-belt&lt;/h2&gt;
      
      &lt;p&gt;Module &lt;code&gt;emacspeak-google.el&lt;/code&gt;
      implements a suite of Google tools collectively referred to
      as &lt;em&gt;The Google Tool-Belt&lt;/em&gt;. These tools let you
      slice
      and
      dice your result set using the various search operators
      provided by Google --- the functionality is similar to that --
      --offered by the Google  results page via --
      --user interface control &lt;em&gt;Show --
      --Options&lt;/em&gt;.&lt;/p&gt;
      
      &lt;p&gt;The table below summarizes the tools that are presently
      available on the Emacspeak Google Tool-belt.
      For convenience, the tool-belt is bound to
      prefix-key &lt;code&gt;Control-t&lt;/code&gt; in Emacs/W3
      buffers.&lt;/p&gt;
      &lt;table frame=&#39;hsides&#39; rules=&#39;groups&#39;
      cellpadding=&#39;6&#39; cellspacing=&#39;0&#39;
      border=&#39;2&#39;&gt;
      &lt;caption/&gt;
      &lt;colgroup&gt;&lt;col align=&#39;left&#39;/&gt;&lt;col
      align=&#39;left&#39;/&gt;
      &lt;/colgroup&gt;
      &lt;thead&gt;
      &lt;tr&gt;&lt;th scope=&#39;col&#39;&gt;key&lt;/th&gt;&lt;th
      scope=&#39;col&#39;&gt;binding&lt;/th&gt;&lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      C-b&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-books-viewability&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      A&lt;/td&gt;&lt;td&gt;emacspeak-websearch-accessible-google&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      B&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-books&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      H&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-web-history-not-visited&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      T&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-timeline&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      a&lt;/td&gt;&lt;td&gt;emacspeak-websearch-google&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      b&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-blog&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      c&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-commercial&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      d&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-sort-by-date&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      f&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-forums&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      h&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-web-history-visited&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      i&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-images&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      l&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-non-commercial&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      n&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-news&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      p&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-commercial-prices&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      r&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-recent&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      s&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-structured-snippets&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      t&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-books-type&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;C-t
      
      
      v&lt;/td&gt;&lt;td&gt;emacspeak-google-toolbelt-change-video&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;/table&gt;
      &lt;p&gt;Share And Enjoy!&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3455142340996047146'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3455142340996047146'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/10/google-tool-belt-for-complete-audio.html' title='A Google Tool-belt For The Complete Audio Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1588065823364899714
    </id>
    <published>
      2009-09-21T08:49:00.001-07:00
    </published>
    <updated>2009-09-21T08:49:42.955-07:00
    </updated>
    <title type='text'>
      Emacspeak, The World&#39;s Fonts And Braille
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Emacspeak has supported  the  editing  of Unicode text for
      over a year now --- thanks to the patches fromLukas.
      With the support now mature, I have now retired option
      &lt;code&gt;emacspeak-unibyte&lt;/code&gt; --- Emacspeak no longer
      supports
      running Emacs in &lt;code&gt;unibyte&lt;/code&gt; mode. Note that
      this
      aligns
      Emacspeak with Emacs 23.2 which obsoletes
      &lt;code&gt;unibyte&lt;/code&gt;mode.&lt;/p&gt;
      
      &lt;p&gt;When you edit text containing Unicode  characters,  
      Emacspeak uses the name of  the character as found in the
      description file from the Unicode consortium --- you will need to
      download and install that data file as documented in
      Emacs:&lt;/p&gt;      &lt;pre&gt;
      describe-char-unicodedata-file is a variable defined in
      `descr-text.el&#39;.
      Its value is 
      &quot;/usr/local/share/unicode/UnicodeData.txt&quot;
      
      Documentation:
      Location of Unicode data file.
      This is the UnicodeData.txt file from the Unicode Consortium, used
      for
      diagnostics.  If it is non-nil `describe-char&#39; will print data
      looked up from it.  This facility is mostly of use to people doing
      multilingual development.
      
      This is a fairly large file, not typically present on GNU systems.
      At the time of writing it is at the URL
      `http://www.unicode.org/Public/UNIDATA/UnicodeData.txt&#39;.
      
      You can customize this variable.
      
      This variable was introduced, or its default value was changed, in
      version 22.1 of Emacs.
      
      &lt;/pre&gt;
      &lt;p&gt;With the Unicode data file in place, Emacspeak can announce
      names of characters  from &lt;em&gt;all&lt;/em&gt; of the
      world&#39;s      fonts ---
      this includes Braille.
      As an added convenience, I have integrated package
      &lt;code&gt;toy-braille.el&lt;/code&gt; found on the Emacs wiki into
      the
      Emacs codebase and defined a new interactive command
      &lt;code&gt;emacspeak-wizards-braille&lt;/code&gt; --- if you find
      yourself
      using it often, you can bind it to a key of your choice.
      Command &lt;code&gt;emacspeak-wizards-braille&lt;/code&gt; prompts
      for
      thesetring to Braille and produces a Grade-1 representation of  the
      specified string using the appropriate Unicode characters.  
      &lt;/p&gt;
      &lt;p&gt;
      
      ⠠⠃⠗⠁⠊⠇⠇⠑⠀⠠⠁⠝⠙⠀⠠⠑⠝⠚⠕⠽&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1588065823364899714'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1588065823364899714'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/09/emacspeak-world-fonts-and-braille.html' title='Emacspeak, The World&amp;#39;s Fonts And Braille'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5458623656889758886
    </id>
    <published>
      2009-09-15T08:16:00.001-07:00
    </published>
    <updated>2009-09-15T08:16:11.866-07:00
    </updated>
    <title type='text'>
      Emacspeak: Google News Suggest For Faster News Search
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Google News now provides search suggestions --- this
      feature --
      --has been present in Google
      WebSearch for a few years. 
      As in the case of WebSearch, Emacspeak now leverages Google
      News&#39;      suggest feature to provide
      minibuffer completion when
      performing news searches on
      Google. To try the feature,
      try:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Press &lt;code&gt;C-e?n&lt;/code&gt; to invoke
      &lt;em&gt;News
      Search&lt;/em&gt;.&lt;/li&gt;
      &lt;li&gt;Type &lt;code&gt;Oba&lt;/code&gt; and hit
      &lt;code&gt;TAB&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;&lt;strong&gt;Search and Enjoy&lt;/strong&gt;&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5458623656889758886'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5458623656889758886'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/09/emacspeak-google-news-suggest-for.html' title='Emacspeak: Google News Suggest For Faster News Search'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-731401833831161183
    </id>
    <published>
      2009-08-27T08:28:00.001-07:00
    </published>
    <updated>2009-08-27T08:28:51.236-07:00
    </updated>
    <title type='text'>
      Emacspeak Servers --- Catching Up With Debian And Ubuntu
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Over the last couple of years, the TCL world has moved on
      from
      TCL8.3 to TCL8.4 --- this introduces a set of needed
      changes to how Emacspeak servers such as Espeak and
      ViaVoice-Outloud work.
      I have finally decided to break backward compatibility with
      TCL8.3 and move things forward to TCL8.4, now that all the Linux
      distributions have settled on TCL8.4.&lt;/p&gt;
      &lt;p&gt;Also, sometime in 2005, I transitioned all of the server
      Makefiles to use libtool --- at the time, it made compilation of
      the servers somewhat easier.  However, this has tended to make
      things more complex over time, thanks to changes in libtool.
      I&#39;ve      now dropped the libtool dependency in favor of using
      simpler
      Makefiles --- thanks William Hubbs of Gentoo!&lt;/p&gt;
      
      &lt;h3&gt;ViaVoice Outloud Server For Emacspeak&lt;/h3&gt;
      &lt;p&gt;The Voxin package from Guilles continues to be the easiest
      means of obtaining high-quality text-to-speech on Linux.
      Installation of that package went smoothly on Hardy; however on
      Jaunty, things did not go so well, see notes below for things to
      watch out for on Jaunty or later.&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;The libstdc++ compat libraries ended up not getting
      installed
      on Jaunty. Consequence, ViaVoice produces a warning asking you to
      install the ViaVoice RTK, even though it&#39;s already installed. I
      ended up rescuing the compat libs from my Hardy build. Perhaps
      we should put up a simple tar.gz file that drops those libs into
      /usr/lib?&lt;/li&gt;
      &lt;li&gt;Alsa is configured to use pulseaudio on Jaunty. 
      An unfortunate consequence is that when ViaVoice runs, it sounds
      like a stereo channel played as mono, i.e. the speech slows down
      and the voice sounds wrong. The fix is to create a  .asoundrc  
      file in your home directory --- you can use the sample in
      linux-outloud/ASOUNDRC  as a starting point. To see if
      pulseaudio is intervening in your setup, do
      :aplay -v  wav file 
      --- to see the set of alsa plugins that are participating in
      audio output. &lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;h3&gt;ESpeak And Emacspeak&lt;/h3&gt;
      
      &lt;p&gt; The ESpeak server does not get affected by the above
      problem. However, unless you install package  alsa-oss 
      and invoke that server as 
      :aoss tcl  espeak 
      the server will fail to start if some other application is using
      the audio device.&lt;/p&gt;
      
      &lt;h3&gt;Software Dectalk And Emacspeak&lt;/h3&gt;
      
      &lt;p&gt;This still needs testing under newer Linux distributions
      ---      I&#39;ve not used it in a long time and dont have the libs
      installed
      any more.&lt;/p&gt;
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/731401833831161183'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/731401833831161183'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/08/emacspeak-servers-catching-up-with.html' title='Emacspeak Servers --- Catching Up With Debian And Ubuntu'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6645202840710833780
    </id>
    <published>
      2009-06-29T10:48:00.001-07:00
    </published>
    <updated>2009-06-29T10:53:19.877-07:00
    </updated>
    <title type='text'>
      Launching Favorite Media Via Hot Keys
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h2&gt;Launching Oft-Played Media On The Complete Audio
      Desktop&lt;/h2&gt;
      &lt;p&gt;Command &lt;code&gt;emacspeak-multimedia&lt;/code&gt; lets
      you
      launch all
      forms of local and remote media. However this still requires you
      to specify the media location --- and this requires a bunch of
      keystrokes that you end up repeating for selecting media that you
      play often, e.g., from your private music collection. No more
      extra keystrokes, you can now have Emacspeak automatically assign
      suitable hotkeys for launching
      &lt;code&gt;emacspeak-media&lt;/code&gt;
      onyour favorite audio collections.&lt;/p&gt;
      &lt;h2&gt;How It Works&lt;/h2&gt;
      &lt;ul&gt;
      &lt;li&gt;Customize Emacspeak option
      &lt;code&gt;emacspeak-media-location-bindings&lt;/code&gt; using
      Emacs&#39;
      Custom interface:
      &lt;pre&gt;
      M-x customize-variable --- 
      &lt;/pre&gt;
      press &lt;code&gt;C-H V&lt;/code&gt; in emacspeak.
      &lt;/li&gt;
      &lt;li&gt;Click &lt;code&gt;ins&lt;/code&gt; to insert a 
      key/location
      pair. &lt;/li&gt;
      &lt;li&gt;Click &lt;code&gt;save&lt;/code&gt; to persist the
      binding.&lt;/li&gt;
      &lt;li&gt;pressing the assigned hotkey will automatically launch
      &lt;code&gt;emacspeak-multimedia&lt;/code&gt; on the predefined
      location
      ---
      emacs will prompt you with regular filename completion for media
      resources found in that directory.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;In my own case, I have favorites defined on
      &lt;code&gt;hyper-&amp;lt;n&amp;gt;&lt;/code&gt;  so I can define
      up to 10
      hotkey
      assignments  for media  locations.Once launched, Emacspeak
      automatically switches to the media player buffer; note that this
      is different from how &lt;code&gt;emacspeak-multimedia&lt;/code&gt;
      normally
      works. The justification: this hotkey interface is 
      ideally suited to remote controls, joysticks, and  any other
      peripheral via which you can deliver input to Emacs. &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6645202840710833780'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6645202840710833780'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/06/launching-favorite-media-via-hot-keys.html' title='Launching Favorite Media Via Hot Keys'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8771579527311127674
    </id>
    <published>
      2009-05-22T09:04:00.001-07:00
    </published>
    <updated>2009-05-22T09:04:10.032-07:00
    </updated>
    <title type='text'>Looking
      Beyond The Screen At Google I/O2009
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      Come join me and &lt;a
      href=&#39;http://www.clcworld.net&#39;&gt;Charles
      Chen&lt;/a&gt;
      at  
      &lt;a href=&#39;http://code.google.com/events/io/&#39;&gt;Google
      I/O2009&lt;/a&gt;
      at our session on 
      &lt;a
      
      
      href=&#39;http://www.youtube.com/watch?v=X9jVV5PGf_w&#39;&gt;LookingBeyond The Screen (YouTube Preview&lt;/a&gt;
      where we will describe some of our work on eyes-free interaction
      on Android. We&#39;ll be around during most of Google I/O, so if you
      are interested in eyes-free interaction ranging from Emacspeak to
      Fire-Vox, or anything else eyes-free, feel free to grab us in the
      hallways.
      Looking forward to seeing you there!&lt;/p&gt;
      &lt;h2&gt;Abstract: Looking Beyond The Screen&lt;/h2&gt;
      &lt;div class=&#39;outline-2&#39;
      id=&#39;outline-container-1&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;Looking Beyond The Screen&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39;&gt;
      
      
      &lt;p&gt;
      Project &lt;a
      
      href=&#39;http://eyes-free.googlecode.com&#39;&gt;Eyes-Free&lt;/a&gt;      aims to enable fluent eyes-free use of mobile
      devices running Android. Target uses range from eyes-busy
      environments like in-car use to users who are unwilling to or
      incapable of looking at the visual display ---  see  &lt;a
      
      
      href=&#39;http://www.nytimes.com/2009/01/04/business/04blind.html?pagewanted=1&amp;amp;_r=1&amp;amp;ref=business&#39;&gt;For The Blind, Technology Does What A Guide Dog Can&#39;t&lt;/a&gt;, NYTimes, January
      4, 2009, for a high-level overview. As described in that article,
      we are releasing components from project Eyes-Free as they become
      ready for end-user deployment. This announcement marks the first
      public release of the &lt;i&gt;eyes-free shell&lt;/i&gt; on the
      Android
      Marketplace, though the underlying source code has been available
      for some time from the code repository at &lt;a
      href=&#39;http://eyes-free.googlecode.com&#39;&gt;Google Code
      Hosting&lt;/a&gt;.
      &lt;/p&gt;
      &lt;p&gt;
      Here is a brief overview of the end-user affordances provided in
      this release:
      &lt;/p&gt;
      
      &lt;ol&gt;
      &lt;li&gt;
      An &lt;i&gt;Eyes-Free Shell&lt;/i&gt; for conveniently launching
      talking
      applications.
      &lt;/li&gt;
      &lt;li&gt;
      A collection of useful talking applications that turn an
      Android phone into an eyes-free communication device  ---  see
      subsequent sections for an overview of thesee
      applications. Note that these eapplications have been written
      to be both useful to end-users as well as to help the
      developer community to come up to speed with developing
      eyes-free applications for Android.
      
      &lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;We will be uploading video tutorials demonstrating the use
      of
      thesee applications to YouTube  ---   please see the project
      Web site for thesee links as they become available.
      &lt;/p&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.1&#39;&gt;
      &lt;h3 id=&#39;sec-1.1&#39;&gt;Talking Dialer &lt;/h3&gt;
      &lt;div id=&#39;text-1.1&#39;&gt;
      
      
      &lt;p&gt;
      A key innovation is the use of the touch screen to enable
      one-handed, eyes-free dialing of phone numbers using the touch
      screen  ---  see Miguel Helft&#39;s NY Times article cited above for
      a
      good
      layman&#39;s description of the technique. The talking dialer comes
      with a talking phone-book that enables users to quickly select a
      desired contact using the touch screen. 
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.2&#39;&gt;
      &lt;h3 id=&#39;sec-1.2&#39;&gt;Knowing Your Location &lt;/h3&gt;
      &lt;div id=&#39;text-1.2&#39;&gt;
      
      
      &lt;p&gt;
      This mini-application announces your present location based on
      information acquired via GPS and the cell network. It speaks your
      current heading using the built-in magnetic compass, looks up the
      current location on Google Maps, and announces the location in
      terms of a nearby address and street intersection.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.3&#39;&gt;
      &lt;h3 id=&#39;sec-1.3&#39;&gt;Device State&lt;/h3&gt;
      &lt;div id=&#39;text-1.3&#39;&gt;
      
      
      &lt;p&gt;
      This mini-application announces useful information such as
      battery state, signal
      strength, and availability of WiFi networks.
      &lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
      
      &lt;div class=&#39;outline-3&#39;
      id=&#39;outline-container-1.4&#39;&gt;
      &lt;h3 id=&#39;sec-1.4&#39;&gt;Date And Time&lt;/h3&gt;
      &lt;div id=&#39;text-1.4&#39;&gt;
      
      
      &lt;p&gt;
      This mini-application provides single-touch access to current
      date and time.
      &lt;/p&gt;
      
      
      
      
      
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8771579527311127674'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8771579527311127674'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/05/looking-beyond-screen-at-google-io2009.html' title='Looking Beyond The Screen At Google I/O2009'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8862551794456516199
    </id>
    <published>
      2009-05-11T13:43:00.001-07:00
    </published>
    <updated>2009-05-11T13:43:15.252-07:00
    </updated>
    <title type='text'>
      Announcing emacspeak 30.0 --- SocialDog!
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h1&gt;Emacspeak-30.0 (SocialDog) Unleashed!&lt;/h1&gt;
      
      &lt;h2&gt;For Immediate Release&lt;/h2&gt;
      &lt;p&gt;
      San Jose, CA, (May 11, 2009)&lt;br/&gt;
      Emacspeak:   --- Bringing friendly Access For   social beings 
      &lt;br/&gt;      --Zero cost of upgrade/downgrades makes priceless
      software affordable!
      &lt;/p&gt;
      
      
      
      &lt;table cellpadding=&#39;5&#39; cellspacing=&#39;1&#39;
      rules=&#39;all&#39; border=&#39;1&#39; summary=&#39;navigation
      bar&#39;
      role=&#39;navigation&#39;&gt;
      &lt;tr style=&#39;background: yellow; text-color: navy; font-weight:
      bold&#39;&gt;
      &lt;td&gt;&lt;a
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-30
      .0.tar.bz2&#39;&gt;Downloads&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&#39;../info/emacspeak.html&#39;&gt;
      Reference&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      
      href=&#39;../install-guide/&#39;&gt;Installation&lt;/a&gt;&lt;/td&gt;      &lt;td&gt; &lt;a href=&#39;../user-guide/&#39;&gt;Usage&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;&lt;a
      href=&#39;../tips.html&#39;&gt;Tips&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      href=&#39;../applications.html&#39;&gt;Tools&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt; &lt;a
      
      
      href=&#39;http://www.cs.vassar.edu/~priestdo/emacspeak/&#39;&gt;Support&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;7&#39;&gt;
      &lt;img alt=&#39;EMACSPEAK Logo&#39; height=&#39;216&#39;
      width=&#39;150&#39; src=&#39;emacspeak.jpg&#39;/&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;4&#39;&gt;&lt;a href=&#39;raman/&#39;&gt;About
      the
      author&lt;/a&gt;&lt;/td&gt;
      &lt;td colspan=&#39;3&#39;&gt;
      &lt;a href=&#39;http://sourceforge.net/projects/emacspeak&#39;&gt;
      &lt;img alt=&#39;SourceForge&#39; border=&#39;0&#39;
      height=&#39;31&#39;
      width=&#39;88&#39;
      src=&#39;http://sourceforge.net/sflogo.php?group_id=2238&#39;/&gt;
      &lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/table&gt;
      
      
      
      &lt;p&gt;
      
      Emacspeak Inc &lt;a
      href=&#39;http://emacspeak.sourceforge.net&#39;&gt;(NASDOG:
      ESPK)&lt;/a&gt; announces  the immediate
      world-wide availability of Emacspeak-30 --a powerful audio
      desktop for leveraging today&#39;s evolving data and
      service-oriented      social Web cloud.
      &lt;/p&gt;
      &lt;h2&gt;Investors Note&lt;/h2&gt;
      &lt;p&gt;
      With several prominent analysts  initiating coverage,
      NASDOG: ESPK continues to trade  over the net at levels close to
      that      once attained  by  the DogCom high-fliers of yester-years
      and as of
      October 2008 is trading at levels close to that achieved by
      better known stocks in the tech sector.
      &lt;/p&gt;
      
      
      &lt;h2&gt;What Is It?&lt;/h2&gt;
      &lt;p&gt;
      Emacspeak is a fully functional audio desktop that provides
      &lt;em&gt;
      complete eyes-free&lt;/em&gt; access to all major 32 and 64 bit
      operating
      environments. By seamlessly blending all aspects of the Internet
      such as Web-surfing 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  Web cloud.  
      &lt;/p&gt;
      &lt;h2&gt;Major Enhancements&lt;/h2&gt;
      
      &lt;ol&gt;
      &lt;li&gt;Speech-enables Twitter.&lt;/li&gt;
      &lt;li&gt;
      Unicode support for enabling the world&#39;s various charsets.
      &lt;/li&gt;
      &lt;li&gt;
      Emacs front-end to popular Google AJAX APIs.
      &lt;/li&gt;
      &lt;li&gt;
      Updated g-client with preliminary support for Google Docs.
      &lt;/li&gt;
      &lt;li&gt;
      Updated URL Templates for rapid Web access.
      &lt;/li&gt;
      &lt;li&gt;
      Updated WebSearch wizards for enhanced productivity.
      &lt;/li&gt;
      &lt;li&gt;
      Emacs 23 support.
      
      &lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;See the NEWS file  for additional details. &lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8862551794456516199'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8862551794456516199'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/05/announcing-emacspeak-300-socialdog.html' title='Announcing emacspeak 30.0 --- SocialDog!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-636508770988364233
    </id>
    <published>
      2009-03-26T10:06:00.001-07:00
    </published>
    <updated>2009-03-26T11:56:34.490-07:00
    </updated>
    <title type='text'>Toward
      an Accessible Democracy --- White House Moderator AxsJAXed
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div&gt;
      &lt;h2&gt;Toward  An Accessible Democracy --- White House Moderator
      AxsJAXed!&lt;/h2&gt;
      &lt;p&gt;This is not directly Emacspeak related --- except that it
      is      useful for emacspeak users. 
      Project AxsJAX, combined with Fire-Vox does for Web-2.0
      applications what Emacspeak does for applications written within
      Emacs. 
      Charles and I just announced &lt;a
      
      
      href=&#39;http://groups.google.com/group/accessible/t/5a0c716c9f064b62&#39;&gt;AxsJAX
      For White House Moderator&lt;/a&gt;
      --- an AxsJAX  extension that applies W3C  ARIA  to the
      &lt;em&gt;White
      House Moderator&lt;/em&gt;.I&#39;ll append the article
      below:&lt;/p&gt;
      &lt;div id=&#39;outline-container-1&#39;
      class=&#39;outline-2&#39;&gt;
      &lt;h2 id=&#39;sec-1&#39;&gt;An ARIA  For The White House
      Moderator&lt;/h2&gt;
      &lt;div id=&#39;text-1&#39;&gt;
      &lt;p&gt;
      &lt;a
      
      
      href=&#39;http://google-axsjax.googlecode.com&#39;&gt;Google-AxsJAX&lt;/a&gt; was launched in late 2007 as a library for
      access-enabling Web-2.0 applications. 
      Since then, we have released accessibility enhancements for many
      Web-2.0 applications via the AxsJAX site as early experiments
      that have eventually graduated into the products being extended.
      Today, we are happy to announce an early AxsJAX  extension  for
      Google
      Moderator that enables fluent eyes-free use of Google Moderator
      as seen on the White House site.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;div id=&#39;outline-container-1.1&#39;
      class=&#39;outline-3&#39;&gt;
      &lt;h3 id=&#39;sec-1.1&#39;&gt;HowTo: Brief Overview.&lt;/h3&gt;
      &lt;div id=&#39;text-1.1&#39;&gt;
      &lt;p&gt;
      For details on installing and using AxsJAX extensions, see the
      &lt;a
      
      
      href=&#39;http://google-axsjax.googlecode.com/svn/trunk/docs/faq.html&#39;&gt;AxsJAX FAQ&lt;/a&gt;. Briefly, you need Firefox 3.0 and a screenreader that
      supports W3C ARIA. Users who do not have a screenreader installed
      can most easily experience the results by installing &lt;a
      href=&#39;http:///www.clcworld.net&#39;&gt;Fire Vox&lt;/a&gt;, a
      freely available self-voicing extension for Firefox.
      &lt;/p&gt;
      &lt;p&gt;
      With the AxsJAX extension in place, you can use Google Moderator
      via the keyboard, with all user interaction producing spoken
      feedback via W3C ARIA. Here is a brief overview of  the user
      experience:
      &lt;/p&gt;
      &lt;ol&gt;
      &lt;li&gt;
      The user interface is divided into  logical panes ---  one
      listing topic areas, and the other listing questions in a
      given topic. At times, e.g., before a meeting, you may find
      an additional &lt;i&gt;Featured Question&lt;/i&gt; pane that shows a
      randomly
      selected question that you can vote on.
      &lt;/li&gt;
      &lt;li&gt;
      Users can ask new questions under a given topic, or  give a
      thumbs-up/down to questions that have already been asked.
      &lt;/li&gt;
      &lt;li&gt;
      Use the &lt;u&gt;left&lt;/u&gt; and &lt;u&gt;right&lt;/u&gt; arrow
      keys
      to switch between the two
      panes. You hear the  title of  the selected pane as
      you switch.
      &lt;/li&gt;
      &lt;li&gt;
      Use &lt;u&gt;up&lt;/u&gt; and &lt;u&gt;down&lt;/u&gt; arrows to
      navigate
      among the items in
      the selected pane. As you navigate, you hear the current
      item.
      &lt;/li&gt;
      &lt;li&gt;
      Hit &lt;u&gt;enter&lt;/u&gt; to select the current item.
      &lt;/li&gt;
      &lt;li&gt;
      The current item can be magnified by repeated presses of the
      &lt;u&gt;+&lt;/u&gt; (or &lt;u&gt;=&lt;/u&gt;) key. To reduce
      magnification, press the &lt;u&gt;-&lt;/u&gt;
      key.
      &lt;/li&gt;
      &lt;li&gt;
      When navigating the questions in a given topic, hit
      &lt;u&gt;y&lt;/u&gt;
      or
      &lt;u&gt;n&lt;/u&gt; to vote a question up or down.
      &lt;/li&gt;
      &lt;li&gt;
      When navigating items in the topic pane, hit &lt;u&gt;a&lt;/u&gt; to
      ask
      aquestion. Once you confirm your request to post the
      question, it will show up in the list of questions for that
      topic so that others can vote that question up or down.
      &lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;Please use &lt;a
      href=&#39;http://groups.google.com/group/accessible&#39;&gt;Google
      Group
      Accessible&lt;/a&gt; for providing feedback on 
      this AxsJAX extension.
      &lt;/p&gt;
      &lt;p&gt;
      Share And Enjoy--
      &lt;/p&gt;
      &lt;p&gt;
      Raman and Charles.
      &lt;/p&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/636508770988364233'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/636508770988364233'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2009/03/toward-accessible-democracy-white-house.html' title='Toward an Accessible Democracy --- White House Moderator AxsJAXed'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8109949379954051916
    </id>
    <published>
      2008-11-26T16:31:00.001-08:00
    </published>
    <updated>2008-11-26T16:31:50.393-08:00
    </updated>
    <title type='text'>
      Announcing Emacspeak 29.0 (AbleDog)
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;table cellpadding=&#39;5&#39; cellspacing=&#39;1&#39;
      rules=&#39;all&#39; border=&#39;1&#39; summary=&#39;navigation
      bar&#39;
      role=&#39;navigation&#39;&gt;
      &lt;tr style=&#39;background: yellow; text-color: navy; font-weight:
      bold&#39;&gt;
      &lt;td&gt;&lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-29.0.tar.bz2&#39;&gt;Downloads&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&#39;../info/emacspeak.html&#39;&gt;
      Reference&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      
      href=&#39;../install-guide/&#39;&gt;Installation&lt;/a&gt;&lt;/td&gt;      &lt;td&gt; &lt;a href=&#39;../user-guide/&#39;&gt;Usage&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;&lt;a
      href=&#39;../tips.html&#39;&gt;Tips&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      href=&#39;../applications.html&#39;&gt;Tools&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt; &lt;a
      
      
      href=&#39;http://www.cs.vassar.edu/~priestdo/emacspeak/&#39;&gt;Support&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;7&#39;&gt;
      &lt;img alt=&#39;EMACSPEAK Logo&#39; height=&#39;216&#39;
      width=&#39;150&#39; src=&#39;emacspeak.jpg&#39;/&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;4&#39;&gt;&lt;a href=&#39;raman/&#39;&gt;About
      the
      author&lt;/a&gt;&lt;/td&gt;
      &lt;td colspan=&#39;3&#39;&gt;
      &lt;a href=&#39;http://sourceforge.net/projects/emacspeak&#39;&gt;
      &lt;img alt=&#39;SourceForge&#39; border=&#39;0&#39;
      height=&#39;31&#39;
      width=&#39;88&#39;
      src=&#39;http://sourceforge.net/sflogo.php?group_id=2238&#39;/&gt;
      &lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/table&gt;
      
      
      
      &lt;p&gt;
      
      Emacspeak Inc &lt;a
      href=&#39;http://emacspeak.sourceforge.net&#39;&gt;(NASDOG:
      ESPK)&lt;/a&gt; announces  the immediate
      world-wide availability of Emacspeak-29 --a powerful audio
      desktop for leveraging today&#39;s evolving data and
      service-oriented Web
      cloud.
      &lt;/p&gt;
      &lt;h2&gt;Investors Note&lt;/h2&gt;
      &lt;p&gt;
      With several prominent analysts  initiating coverage,
      NASDOG: ESPK continues to trade  over the net at levels close to
      that      once attained  by  the DogCom high-fliers of yester-years
      and as of
      October 2008 is trading at levels close to that achieved by
      better known stocks in the tech sector.
      &lt;/p&gt;
      
      
      
      
      &lt;h2&gt;Major Enhancements&lt;/h2&gt;
      
      &lt;ol&gt;
      &lt;li&gt;
      Speech-enables proced  ---  a new task manager.&lt;/li&gt;
      &lt;li&gt;
      Emacspeak-Webspace for rapid access to content feeds.
      &lt;/li&gt;
      &lt;li&gt;
      Unicode support for enabling the world&#39;s various charsets.
      &lt;/li&gt;
      &lt;li&gt;
      Emacs front-end to popular Google AJAX APIs.
      &lt;/li&gt;
      &lt;li&gt;
      Updated g-client with preliminary support for Google Docs.
      &lt;/li&gt;
      &lt;li&gt;
      Updated URL Templates for rapid Web access.
      &lt;/li&gt;
      &lt;li&gt;
      Updated WebSearch wizards for enhanced productivity.
      &lt;/li&gt;
      &lt;li&gt;
      One-shot Google Search with suggestions for word under point.
      &lt;/li&gt;
      &lt;li&gt;
      Emacs 23 support.
      
      &lt;/li&gt;
      &lt;/ol&gt;
      
      
      &lt;p&gt;See the NEWS file  for additional details. &lt;/p&gt;
      
      
      
      
      
      
      
      
      
      
      
      &lt;h2&gt;Harnessing  Emacspeak&lt;/h2&gt;
      
      &lt;p&gt;
      You can visit  Emacspeak at 
      &lt;a
      href=&#39;http://emacspeak.sf.net&#39;&gt;SourceForge&lt;/a&gt;.
      The latest development snapshot of
      Emacspeak is available via subversion  from 
      &lt;a
      href=&#39;http://emacspeak.googlecode.com/svn/trunk&#39;&gt;Google
      Code Hosting&lt;/a&gt;.
      You can subscribe to the emacspeak mailing list &lt;em&gt;
      emacspeak@cs.vassar.edu&lt;/em&gt; by sending mail to the list
      request address &lt;a
      
      
      href=&#39;mailto:emacspeak-request@cs.vassar.edu&#39;&gt;emacspeak-request@cs.vassar.edu&lt;/a&gt;.  &lt;/p&gt;
      
      &lt;p&gt;
      &lt;strong&gt;Press/Analyst Contact: &lt;a
      href=&#39;hubbell.jpg&#39;&gt;Hubbell Labrador&lt;/a&gt;&lt;br/&gt; 
      
      Going forward, BubbleDog acknowledges her exclusive monopoly on
      setting
      the
      direction the 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.&lt;/strong&gt;
      &lt;/p&gt;
      
      
      
      
      
      
      
      &lt;a href=&#39;release-28.0.html&#39;&gt;Emacspeak-28.0&lt;/a&gt;
      &lt;hr/&gt;
      
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8109949379954051916'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8109949379954051916'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/11/announcing-emacspeak-290-abledog.html' title='Announcing Emacspeak 29.0 (AbleDog)'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6635709760768346180
    </id>
    <published>
      2008-09-09T17:40:00.001-07:00
    </published>
    <updated>2008-09-09T17:40:54.189-07:00
    </updated>
    <title type='text'>
      Emacspeak Webspace Goodies
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Module &lt;code&gt;emacspeak-webspace&lt;/code&gt; has a
      few new
      goodies
      on offer.
      If you activate &lt;em&gt;WebSpace Headlines &lt;/em&gt; to obtain a
      continuously updating ticker of headlines, you may also at times  
      want to  find one of the headlines you heard go by and
      read the relevant article. 
      Command  &lt;code&gt;emacspeak-webspace-headlines-view&lt;/code&gt;
      bound
      by
      default to &lt;code&gt;C-RET&lt;/code&gt; pops up a special
      &lt;em&gt;Headlines&lt;/em&gt; buffer that lists all the currently
      available
      headlines. This is a regular Emacs buffer that uses a special 
      major mode called  &lt;em&gt;emacspeak-webspace-mode&lt;/em&gt;.
      This      modeprovides special commands to open a feed  at point,
      follow
      hyperlinks etc.; use Emacs&#39; online help facilities to learn how
      this buffer works.&lt;/p&gt;
      &lt;p&gt;Mode &lt;em&gt;emacspeak-webspace-mode&lt;/em&gt; is also
      used
      toadvantage in browsing information retrieved via the Google AJAX
      APIs described  in the previous set of articles on this blog.
      Google Reader subscribers can now view the subscription list in a
      &lt;em&gt;Webspace&lt;/em&gt; buffer via command
      &lt;code&gt;emacspeak-webspace-reader&lt;/code&gt;.
      Additionally, command &lt;em&gt;emacspeak-webspace-google&lt;/em&gt;
      provides
      a more convenient interface to command
      &lt;code&gt;gweb-google-at-point&lt;/code&gt; --- in addition to
      speaking
      the
      snippet from the first search hit, this command places the first
      four results in a special &lt;em&gt;Search Results&lt;/em&gt; buffer
            that is put in &lt;em&gt;Webspace&lt;/em&gt; mode.&lt;/p&gt;
      &lt;strong&gt;Search And Enjoy!&lt;/strong&gt;
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6635709760768346180'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6635709760768346180'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/09/emacspeak-webspace-goodies.html' title='Emacspeak Webspace Goodies'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8490053477945022162
    </id>
    <published>
      2008-08-20T07:12:00.001-07:00
    </published>
    <updated>2008-08-20T07:12:33.788-07:00
    </updated>
    <title type='text'>
      Emacspeak-WebSpace Just Got A Lot Faster
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div&gt;
      &lt;h3&gt;In Praise Of Google AJAX APIS&lt;/h3&gt;
      &lt;p&gt;New module &lt;code&gt;gfeeds.el&lt;/code&gt; (part of
      Library
      &lt;code&gt;g-client&lt;/code&gt;) now implements  a Lisp interface
      to the Google AJAX FeedSearch API.
      An immediate consequence of this is that module
      &lt;code&gt;Emacspeak-WebSpace&lt;/code&gt; just got orders of
      magnitude
      faster --- not that it was slow to start with:-)&lt;/p&gt;
      &lt;p&gt;Feed And Enjoy!&lt;/p&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8490053477945022162'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8490053477945022162'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/08/emacspeak-webspace-just-got-lot-faster.html' title='Emacspeak-WebSpace Just Got A Lot Faster'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8030748561890638945
    </id>
    <published>
      2008-08-14T16:51:00.001-07:00
    </published>
    <updated>2008-08-14T16:51:44.359-07:00
    </updated>
    <title type='text'>In
      Praise Of The Google Search AJAX API
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div&gt;
      
      &lt;h2&gt;In Praise Of The Google AJAX Search API&lt;/h2&gt;
      &lt;p&gt;Emacspeak has always provided Google Search with a single
      keystroke from anywhere on the audio desktop.
      But with the 
      coming of the &lt;a
      href=&#39;http://code.google.com/apis/ajaxsearch/&#39;&gt;Google
      AJAX      Search API &lt;/a&gt;
      it becomes possible to integrate Google Search at a far deeper
      level into your fingertips!
      The AJAX  API demonstrates the true speed of Google Search, since
      you dont need to wait for an HTML page to download and render ---
      results are served as a light-weight 
      &lt;a href=&#39;http://json.org/&#39;&gt;JSON&lt;/a&gt; data
      structure.&lt;/p&gt;
      
      &lt;h2&gt;What You Can Now Do&lt;/h2&gt;
      
      &lt;p&gt;
      Module &lt;code&gt;gsearch&lt;/code&gt; (part of the
      &lt;code&gt;g-client&lt;/code&gt;
      package)
      provides an interactive command
      &lt;code&gt;gsearch-google-at-point&lt;/code&gt; --- I have this
      bound to
      key
      &lt;code&gt;hyper-/&lt;/code&gt; in Emacs.
      Executing this command from anywhere inside Emacs does the
      following:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Grabs word under point, and prompts in the minibuffer for
      a      search-term --- with the word we just grabbed as the
      default.&lt;/li&gt;
      &lt;li&gt;Fetches other relevant search terms in the background via
      Google Suggest, and makes thesee available via Emacs&#39; minibuffer
      history mechanism. Use keys &lt;code&gt;M-n&lt;/code&gt; and
      &lt;code&gt;M-p&lt;/code&gt;
      to cycle through thesee if needed.&lt;/li&gt;
      &lt;li&gt;Hitting &lt;code&gt;ENTER&lt;/code&gt; performs a Google
      Search
      using the
      AJAX API, and displays the  title and content snippet for the
      first search result.&lt;/li&gt;
      &lt;li&gt;Executing command
      &lt;code&gt;gsearch-google-at-point&lt;/code&gt;
      subsequently at the same location opens the first search
      result.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Search And Enjoy!&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8030748561890638945'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8030748561890638945'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/08/in-praise-of-google-search-ajax-api.html' title='In Praise Of The Google Search AJAX API'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5847282220001233762
    </id>
    <published>
      2008-08-01T08:07:00.001-07:00
    </published>
    <updated>2008-08-04T09:19:31.483-07:00
    </updated>
    <title type='text'>
      Tutorial: Enhancing Web 2.0 Usability Using AxsJAX
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;You can &lt;a
      href=&#39;http://www.youtube.com/watch?v=nF3yhZrtLRw&#39;&gt;watch a
      video&lt;/a&gt; of the tutorial Charles and I gave as part of the
      Google Open Source series on July 14.
      Emacspeak users can play the video by pressing &lt;code&gt;e
      e&lt;/code&gt;
      on the above link and specifying
      &lt;code&gt;emacspeak-m-player-youtube-player&lt;/code&gt; when
      prompted.&lt;/p&gt;
      &lt;h3&gt;Abstract&lt;/h3&gt;
      &lt;p&gt;
      Google is the Web&#39;s premier creator of user-friendly Web 2.0
      applications, and I have long viewed it as part of our mission to
      do for users in the long tail (AKA users with special needs) what
      we&#39;ve achieved for the mainstream user.
      &lt;a
      
      
      href=&#39;http://www.abilitynet.org.uk/accessibility2/&#39;&gt;Accessibility 2.0&lt;/a&gt; is now a hot topic on the Web
      --- and we would like to move from  a world where AJAX
      applications were a straight No-No with respect to blind users to
      a world where thesee same technologies are used to enhance their
      usability for everyone.
      &lt;/p&gt;
      &lt;p&gt;
      &lt;a
      
      href=&#39;http://code.google.com/p/axsjax&#39;&gt;Google-AxsJAX&lt;/a&gt;
      is an Open Source framework for injecting
      accessibility for users with special needs --- and more
      generally, usability enhancements --- into Web 2.0 applications.
      In this TechTalk, Charles Chen and I  
      give a hands-on tutorial on using AxsJAX to enhance the usability
      of Web 2.0  applications. The tutorial  covers the following:
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;
      A brief introduction to the additional &lt;i&gt;opcodes&lt;/i&gt;
      introduced
      by W3C ARIA  to the assembly language of the Web (AKA
      HTML+JavaScript).
      &lt;/li&gt;
      &lt;li&gt;
      AxsJAX library abstractions built on the above that  help Web
      developers generate relevant feedback via the user&#39;s adaptive
      technology of choice.
      &lt;/li&gt;
      &lt;li&gt;
      Steps in creating fluent eyes-free interaction to Web
      applications, including enabling rapid access to parts of a
      complex Web page.
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;This tutorial focuses on solutions we&#39;ve already built
      and
      deployed both within shipping products and as early end-user
      experiments. Google products that we will cover include:
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;
      Google WebSearch
      &lt;/li&gt;
      &lt;li&gt;
      Google Reader
      &lt;/li&gt;
      &lt;li&gt;
      Google Books
      &lt;/li&gt;
      &lt;li&gt;
      GMail and Google Talk
      &lt;/li&gt;
      &lt;li&gt;
      Google Scholar
      &lt;/li&gt;
      &lt;li&gt;
      Google Sky
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;And time permitting, we might even demonstrate how I now
      make up
      for all the time I save thanks to   an efficient
      eyes-free auditory user interface by playing JawBreaker and
      reading XKCD via their AxsJAXed versions. 
      &lt;/p&gt;
      &lt;p&gt;
      Note that writing AxsJAX enhancements to Web applications can
      help you win &lt;a
      
      
      href=&#39;/home/build/google3/javascript/axsjax/THANKS.html&#39;&gt;bragging rights and cool swag&lt;/a&gt;! The goal of this
      hands-on tutorial is to help you get there faster!
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5847282220001233762'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5847282220001233762'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/08/tutorial-enhancing-web-20-usability.html' title='Tutorial: Enhancing Web 2.0 Usability Using AxsJAX'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8158867466246239607
    </id>
    <published>
      2008-07-14T08:17:00.001-07:00
    </published>
    <updated>2008-07-14T08:17:45.219-07:00
    </updated>
    <title type='text'>Talk
      Announcement: Developing Accessible Web-2.0 Applications
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;For those of you in  Silicon Valley, Charles Chen and I
      will      be giving a talk on developing &lt;a
      
      
      href=&#39;http://feeds.feedburner.com/~r/GoogleOpenSourceBlog/~3/329965796/open-source-developers-google-speaker.html&#39;&gt;accessible Web 2.0 applications&lt;/a&gt; as
      part of the Google Open Source Series --- see details below.
      This will be a hands-on tutorial on ARIA-enhancing Web 2.0
      applications using &lt;a
      href=&#39;http://google-axsjax.google.googlecode.com/&#39;&gt;Google
      AxsJAX&lt;/a&gt;, and is a follow-up to the talk given at 
      &lt;a
      href=&#39;http://www.youtube.com/watch?v=K4xuitAzIEk&#39;&gt;Google
      I/O
      &lt;/a&gt;.
      A video of this talk will be posted later on the Web.
      &lt;/p&gt;
      &lt;h3&gt;&lt;a id=&#39;id2245361&#39;&gt;Open Source Developers @
      Google
      Speaker Series: Charles Chen &amp;amp; T.V.
      Raman&lt;/a&gt;&lt;/h3&gt;
      &lt;p&gt;
      
      Want to learn more about creating accessible Web 2.0 applications
      from
      the creators of 
      &lt;a href=&#39;http://firevox.clcworld.net/about.html&#39;&gt;Fire
      Vox
      &lt;/a&gt; and 
      &lt;a href=&#39;http://emacspeak.sourceforge.net/&#39;&gt;Emacspeak
      &lt;/a&gt;? If you are nearby 
      &lt;a
      
      href=&#39;http://code.google.com/events/visitors/&#39;&gt;Google&#39;s
      Mountain View, California, USA Headquarters
      &lt;/a&gt; on Monday, July 14th, please join us for Charles Chen and
      T.V.
      Raman&#39;s presentation Enhancing Web 2.0 Accessibility via AxsJAX.
      They
      will take you through a hands on tutorial on 
      &lt;a
      href=&#39;http://code.google.com/p/axsjax&#39;&gt;Google-AxsJax     
      &lt;/a&gt;, an Open Source framework for injecting usability
      enhancements
      into Web 2.0 applications. Among other topics, Charles and T.V. will
      cover an overview of AxsJAX&#39;s developer tools, enabling
      eyes-free      interaction for web applications and iterative design
      processes for
      accessibility improvements. They will also let you know the secret
      to      getting a cool t-shirt with the Google logo printed in
      Braille.
      &lt;br/&gt;
      &lt;br/&gt;Like all sessions of the Open Source Developers @ Google
      Speaker Series, this session will be open to the public. Doors open
      at
      6:30 PM and light refreshments will be served. All are welcome and
      encouraged to attend; guests should plan to sign in at Building 43
      reception upon arrival. For those of you who cannot join us in
      person,
      the presentation will be taped and published along with all public
      Google
      Tech Talks.
      &lt;br/&gt;
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      &lt;/p&gt;
      
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8158867466246239607'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8158867466246239607'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/07/talk-announcement-developing-accessible.html' title='Talk Announcement: Developing Accessible Web-2.0 Applications'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-5405233355746155695
    </id>
    <published>
      2008-07-03T07:36:00.001-07:00
    </published>
    <updated>2008-07-03T07:36:03.541-07:00
    </updated>
    <title type='text'>ProcEd:
      A Speech-Enabled Task Manager For Emacs
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;For the last 10 years or so,
      &lt;em&gt;view-process-mode&lt;/em&gt;
      has been my task manager of choice for monitoring and controlling
      the state of processes on the Emacspeak audio desktop.
      As of Emacs 23, AKA Emacs from CVS, that module does not work
      anymore --- in fact it has not been updated for several years.
      On the positive side, Emacs now bundles   &lt;em&gt;module
      ProcEd&lt;/em&gt;
      --- a task manager that  does for processes what module
      &lt;em&gt;DirEd&lt;/em&gt; does for files and directories.
      As of this morning, &lt;em&gt;proced.el&lt;/em&gt; is fully
      speech-enabled by
      Emacspeak.
      You can install module &lt;em&gt;ProcEd&lt;/em&gt; for Emacs 22 by
      obtaining
      the file from the Web ---
      you can easily find it 
      &lt;a
      
      href=&#39;http://www.google.com/search?q=proced%2Eel+emacs&#39;&gt;via
      Google&lt;/a&gt;.
      &lt;/p&gt;
      &lt;p&gt;Share And Enjoy ... And have a great July 4th
      Holiday!&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5405233355746155695'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/5405233355746155695'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/07/proced-speech-enabled-task-manager-for.html' title='ProcEd: A Speech-Enabled Task Manager For Emacs'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8883792143826726043
    </id>
    <published>
      2008-06-12T15:30:00.001-07:00
    </published>
    <updated>2008-06-12T15:30:13.072-07:00
    </updated>
    <title type='text'>
      Leveraging Web 2.0 Design Patterns For Enhanced Accessibility
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;As promised, here is a link to the Youtube video of 
      the talk on &lt;a
      
      href=&#39;http://www.youtube.com/watch?v=K4xuitAzIEk&#39;&gt;Leveraging
      Web
      2.0 Patterns For Accessibility&lt;/a&gt;
      given during Google I/O on May 28, 2008 in San Francisco.
      Emacspeak users can play the video by hitting &lt;code&gt;e
      e&lt;/code&gt;on the link, and specifying
      &lt;code&gt;emacspeak-m-player-youtube-player&lt;/code&gt; when
      prompted.
      You can find the downloadable slides used 
      during the talk along with other session material on the 
      &lt;a
      
      
      href=&#39;http://sites.google.com/site/io/leveraging-web-20-design-patterns-for-enhanced-accessibility&#39;&gt;Google
      I/O&lt;/a&gt; page for this session.&lt;/p&gt;
      
      &lt;h2&gt;Talk Details&lt;/h2&gt;
      
      &lt;p&gt;&lt;strong&gt;Leveraging Web 2.0 Design Patterns For
      Enhanced
      Accessibility&lt;/strong&gt;
      &lt;em&gt;T. V. Raman (Google)&lt;/em&gt;
      &lt;/p&gt;
      &lt;p&gt;
      HTML DOM+ JavaScript constitutes the assembly language of Web
      Applications. Access To Rich Internet Applications --- ARIA --- adds
      in a
      couple of additional op-codes for helping Web applications better
      communicate with adaptive technologies such as screenreaders. How do
      we
      now push the envelope with respect
      to Web applications and adaptive technologies such as screenreaders
      and
      self-voicing browsers in a manner similar to what we as Web
      developers
      have collectively achieved for the mainstream user?
      
      This session will demonstrate programming techniques that help Web
      developers experiment with and build in the latest accessibility
      techniques into their Web applications. We will base this session on
      project Google-AxsJAX.
      
      Developers should know JavaScript, but session doesn&#39;t require
      deep
      AJAX hackery.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8883792143826726043'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8883792143826726043'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/06/leveraging-web-20-design-patterns-for.html' title='Leveraging Web 2.0 Design Patterns For Enhanced Accessibility'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7852157026205372816
    </id>
    <published>
      2008-05-28T07:23:00.001-07:00
    </published>
    <updated>2008-05-28T07:23:28.205-07:00
    </updated>
    <title type='text'>AxsJAX
      And Auditory User Interfaces At Google IO
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;For those of you interested in Auditory User Interfaces and
      attending 
      &lt;a
      
      href=&#39;http://code.google.com/events/io/speakers.html&#39;&gt;Google
      IO 2008&lt;/a&gt;
      in San Francisco today,
      I&#39;ll be giving a talk on AxsJAX  and Auditory User Interfaces,
      and be around the rest of the two days to talk about Google&#39;s
      work on access-enabling Web-2.0 applications.
      Look forward to seeing you there!
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7852157026205372816'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7852157026205372816'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/05/axsjax-and-auditory-user-interfaces-at.html' title='AxsJAX And Auditory User Interfaces At Google IO'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7677718718523091025
    </id>
    <published>
      2008-05-16T13:40:00.001-07:00
    </published>
    <updated>2008-05-16T13:40:37.647-07:00
    </updated>
    <title type='text'>
      Emacspeak On Thinkpad X-61 Running Gutsy (Ubuntu 7.0)
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;I recently upgraded to a Thinkpad X-61 running Gutsy --- 
      here  are some brief notes on the move. In summary, all is well,
      and I like Gutsy running on the X-61.&lt;/p&gt;
      &lt;p&gt;Here are things to be aware of both from a hardware and
      software perspective. All of this is with X and GNOME  turned
      off; note that some of the tips e.g. turning off the display  as
      described here, will cause havoc with X.&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;The X-61 display can be turned off using
      &lt;code&gt;vbetool&lt;/code&gt; &lt;br/&gt;
      &lt;pre&gt;vbetool dpms off&lt;/pre&gt;&lt;br/&gt;
      for turning off the display, and &lt;br/&gt;
      &lt;pre&gt;vbetool dpms on&lt;/pre&gt;&lt;br/&gt;
      for turning it back on again.&lt;/li&gt;
      &lt;li&gt;If you suspend to memory etc., make sure to add the
      appropriate &lt;code&gt;vbetool&lt;/code&gt; command to the relevant
      script
      in &lt;code&gt;/etc/acpi/resume.d&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Gutsy is running ALSA 1.0.15, and to date, I&#39;ve not
      had any
      trouble with the ViaVoice Outloud TTS  engine in this
      environment.
      Make sure to play with &lt;code&gt;amixer&lt;/code&gt;
      --specifically run
      command &lt;br/&gt;
      &lt;pre&gt;amixer controls&lt;/pre&gt;&lt;br/&gt;
      to understand all the various switches and controls exposed by
      the audio hardware on the X61. 
      Here are some of the things that were noticeably different that
      are worth mentioning:
      &lt;ol&gt;
      &lt;li&gt;The PC  speaker can now be manipulated via
      ALSA.&lt;/li&gt;      &lt;li&gt;The X-61 has two input sources. If
      you plug in an external
      mike, make sure to set &lt;em&gt;both&lt;/em&gt; input sources   to
      the
      microphone --- as opposed to leaving one or both of them to be
      either &lt;code&gt;internal mic&lt;/code&gt; or
      &lt;code&gt;mix&lt;/code&gt;. Specifically, plugging in an external
      mike
      &lt;em&gt;does not&lt;/em&gt; disable the internal
      microphone.&lt;/li&gt;
      &lt;li&gt;For some bizarre reason, it&#39;s possible to turn off the
      headphone output--- but you cannot control its gain.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/li&gt;
      &lt;li&gt;Kernels later than 2.6.21 do much better with respect to
      power management, and this really shows on the X-61. With the LCD
      off, my X61 claims it&#39;ll run for 7.5 hours; if you turn off the
      wireless and USB1.1 as well, it claims it can go for over 8.5
      hours.&lt;/li&gt;
      &lt;li&gt;Emacs versions: I&#39;m running out of CVS  AKA Emacs
      23--- but
      the &lt;code&gt;emacs-snapshot&lt;/code&gt; or
      &lt;code&gt;emacs22&lt;/code&gt; Ubuntu
      packages appear to mostly work as well.
      One irritation with some of the prepackaged  bundles of Emacs
      under Ubuntu is that they dont install the Emacs Lisp sources,
      and this will bite if you try compiling packages like
      Emacs/W3.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;All in all, the upgrade to Gutsy was mostly painless ---
      other
      than having to figure out the usual nits about the new hardware.
      The &lt;code&gt;/proc/acpi/ibm&lt;/code&gt; support is further along
      but
      not
      yet complete--- as an example &lt;code&gt;/proc/acpi/ibm/video
      &lt;/code&gt;
      does not yet control the state of the LCD --- and you cannot
      query the state of the display reliably through that
      interface.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7677718718523091025'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7677718718523091025'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/05/emacspeak-on-thinkpad-x-61-running.html' title='Emacspeak On Thinkpad X-61 Running Gutsy (Ubuntu 7.0)'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7862948740598998838
    </id>
    <published>
      2008-05-15T19:04:00.001-07:00
    </published>
    <updated>2008-05-15T19:04:36.710-07:00
    </updated>
    <title type='text'>
      Emacspeak-28.0 (PuppyDog) Unleashed!
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h1&gt;Emacspeak-28.0 (PuppyDog) Unleashed!&lt;/h1&gt;
      
      &lt;h2&gt;For Immediate Release&lt;/h2&gt;
      &lt;p&gt;
      San Jose, CA, (May. 16,  2007)&lt;br/&gt;
      Emacspeak:   --- Bringing   Cutting-Edge Access For  Keen
      Users&lt;br/&gt;      --Zero cost of upgrade/downgrades makes
      priceless
      software affordable!
      &lt;/p&gt;
      
      
      
      &lt;p&gt;
      
      Emacspeak Inc &lt;a
      href=&#39;http://emacspeak.sourceforge.net&#39;&gt;(NASDOG:
      ESPK)&lt;/a&gt; announces  the immediate
      world-wide availability of Emacspeak-27 --a powerful audio
      desktop for leveraging today&#39;s evolving data and
      service-oriented      semantic Web.
      &lt;/p&gt;
      
      &lt;p&gt;
      
      Emacspeak can be downloaded from Google Code Hosting --see
      &lt;a
      
      href=&#39;http://code.google.com/p/emacspeak&#39;&gt;GoogleCode&lt;/a&gt;
      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 PuppyDog release is 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-28.0.tar.bz2&#39;&gt;here&lt;/a&gt;.
      The latest development snapshot of Emacspeak is available via
      Subversion from Google Code Hosting at 
      http://emacspeak.googlecode.com/svn/trunk/
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7862948740598998838'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7862948740598998838'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/05/emacspeak-280-puppydog-unleashed.html' title='Emacspeak-28.0 (PuppyDog) Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1241847437667751477
    </id>
    <published>
      2008-04-12T13:07:00.001-07:00
    </published>
    <updated>2008-04-12T13:07:46.431-07:00
    </updated>
    <title type='text'>W4A
      Keynote: Cloud Computing And Equal Access For All
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;I&#39;ll be giving the opening keynote at the upcoming 
      &lt;a href=&#39;http://www.w4a.info/2008/keynotes.shtml&#39;&gt;W4A
      2008&lt;/a&gt;
      conference in Beijing on April 21. You can find an online version
      of the paper along with the slides
      here: &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/w4a-2008/&#39;&gt;Cloud
      Computing And Equal Access For All&lt;/a&gt;.
      Coincidentally, another excellent Web 2.0 accessibility event is
      happening on the same day in London ---
      see &lt;a
      
      
      href=&#39;http://www.abilitynet.org.uk/accessibility2/&#39;&gt;Accessibility
      2.0&lt;/a&gt; --- it&#39;s unfortunate 
      one cannot be in  multiple  places at opposite corners of the
      globe at the same time!&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1241847437667751477'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1241847437667751477'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/04/w4a-keynote-cloud-computing-and-equal.html' title='W4A Keynote: Cloud Computing And Equal Access For All'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4828301403037560320
    </id>
    <published>
      2008-04-01T07:04:00.001-07:00
    </published>
    <updated>2008-04-01T10:47:33.192-07:00
    </updated>
    <title type='text'>
      Emacspeak Goes Social
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h2&gt;Leveraging The Benefits Of Free Speech!&lt;/h2&gt;
      &lt;p&gt;&lt;strong&gt;For Immediate
      Release:&lt;/strong&gt;&lt;br/&gt;
      April 1, 2008&lt;/p&gt;
      &lt;h2&gt;Live From San Jose ... Emacspeak Goes Social!&lt;/h2&gt;
      &lt;p&gt;Investors and users alike welcomed today&#39;s announcement
      that
      Emacspeak (NASDOG:ESPK)
      would be going social ---  &lt;em&gt;Going Social is
      better than Going Postal&lt;/em&gt;!&lt;/p&gt;
      &lt;p&gt;
      As a pioneer in the space of eyes-free information access,
      and a firm believer in free speech and free software,
      Emacspeak will now help users go social speech-free 
      --- all users need do is to use the system. When in use, the
      free-social features of Emacspeak will talk to others on your
      behalf, answer inane questions, and contribute to the community
      by in its turn asking even more inane questions of everyone
      else. In a repeat of the &lt;em&gt;network effect&lt;/em&gt; that
      has led
      to
      the resounding success of systems like the World Wide Web and The
      Blogosphere,
      thesee viral features in Emacspeak are expected to win ones
      running instance many social connections.
      The longer one uses thesee features, the &lt;em&gt;deeper&lt;/em&gt;
      one&#39;s &lt;em&gt;social graph&lt;/em&gt;
      --- going forward,  the information encapsulated in thesee social
      graphs will be converted to ever-increasing stacks of small
      pieces of green paper.&lt;/p&gt;
      &lt;h2&gt;Coming Soon!&lt;/h2&gt; &lt;p&gt;As thesee features are
      launched
      over the
      next few weeks, expect Emacspeak generated conversation streams
      to show up everywhere ranging from &lt;a
      href=&#39;http://www.twitter.com&#39;&gt;Twitter&lt;/a&gt; streams
      to      random email
      messages that you can usefully use to forward to spammers. This
      innovative approach to communication finally adds value to spam
      --- and is being hailed as the next biggest business model to hit
      the ether. By making such content available on the Internet, the
      system will foster the long term human goal of organizing and
      searching all the world&#39;s ignorance to make it universally
      accessible --- thereby bringing ignorance on par with
      knowledge!&lt;/p&gt; &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4828301403037560320'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4828301403037560320'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/04/emacspeak-goes-social.html' title='Emacspeak Goes Social'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-9084042252149744337
    </id>
    <published>
      2008-03-28T20:45:00.001-07:00
    </published>
    <updated>2008-03-28T20:45:30.570-07:00
    </updated>
    <title type='text'>My
      Web-2.0 Application Is Feeling Accessible
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;If you feel up to Web  hackery and want to win a cool
      T-shirt
      in the bargain, see 
      &lt;a
      
      
      href=&#39;http://google-opensource.blogspot.com/2008/03/axsjax-my-web-20-application-is-feeling.html&#39;&gt;My
      Web-2.0 Application Is Feeling Accessible!&lt;/a&gt;.
      You can see examples of what you can achieve with this framework
      in the AxsJAX showcase. &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9084042252149744337'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9084042252149744337'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/03/my-web-20-application-is-feeling.html' title='My Web-2.0 Application Is Feeling Accessible'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-618980891425495491
    </id>
    <published>
      2008-03-06T07:25:00.001-08:00
    </published>
    <updated>2008-03-06T07:25:58.735-08:00
    </updated>
    <title type='text'>
      Emacspeak WebSpace --- Interaction-Free Information Access
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;A few months ago, I started an Emacspeak module called
      &lt;code&gt;emacspeak-webspace&lt;/code&gt; that is now ready for
      wider
      use.
      The goal of this module is to unobtrusively fetch useful
      information from the Web and communicate it at  those times that
      one is context-switching among tasks.
      I gave a talk on user interaction at the last 
      &lt;a href=&#39;http://www.think.org&#39;&gt;Hackers
      Conference&lt;/a&gt;
      in
      November; in the same session, there was another talk  whose gist
      was a plea for &lt;em&gt;less&lt;/em&gt; human-computer interaction
      ---
      motivation: User Interfaces are nice, but wouldn&#39;t it be nice if
      one didn&#39;t have to &lt;em&gt;explicitly&lt;/em&gt; interact with
      the
      machine
      to get  information?
      The speaker coined the term &lt;em&gt;Zen interfaces&lt;/em&gt; in
      that
      context, something that stuck in memory long after the talk.
      &lt;/p&gt;
      
      &lt;p&gt;I built that thought into module
      &lt;code&gt;emacspeak-webspace&lt;/code&gt;.
      Conceptually, it consists of &lt;em&gt;smart fetchers&lt;/em&gt;
      that      fetch
      information  asynchronously from the Web, and &lt;em&gt;smart
      displayers&lt;/em&gt;
      that communicate this information at
      &lt;em&gt;appropriate&lt;/em&gt;      times.
      These are detailed below.
      &lt;/p&gt;
      &lt;h3&gt;Fetchers&lt;/h3&gt;
      &lt;p&gt;There are two  fetchers  at present:&lt;/p&gt;
      &lt;dl&gt;
      &lt;dt&gt;Weather&lt;/dt&gt;
      &lt;dd&gt;Fetches current weather conditions for your
      location.&lt;/dd&gt;&lt;dt&gt;News&lt;/dt&gt;
      &lt;dd&gt;Fetches headlines from a customizable collection of ATOM
      and
      RSS feeds.&lt;/dd&gt;
      &lt;/dl&gt;
      
      &lt;p&gt;Note that this module is not intended to be an RSS or ATOM 
      feed-reader; for that, use module &lt;code&gt;greader&lt;/code&gt;
      --- an
      API-based Google Reader client that is bundled with
      Emacspeak.&lt;/p&gt;
      
      &lt;h3&gt;Communicating Useful Information Usefully&lt;/h3&gt;
      &lt;p&gt;With the information in hand, the next question is 
      how does one communicate this information
      &lt;em&gt;usefully&lt;/em&gt;, 
      and what does &lt;em&gt;at the appropriate time&lt;/em&gt; mean?
      Things
      toavoid:
      &lt;/p&gt;
      &lt;dl&gt;
      &lt;dt&gt;Interaction-Free&lt;/dt&gt;
      &lt;dd&gt;Do not require explicit user action to hear the
      information.&lt;/dd&gt;
      &lt;dt&gt;Avoid Chatter&lt;/dt&gt;
      &lt;dd&gt;Avoid creating an auditory user interface that chatters at
      the user all the time.&lt;/dd&gt;
      &lt;/dl&gt;
      
      &lt;p&gt;These are conflicting constraints. Notice that in a visual
      interface, one can meet the &lt;em&gt;interaction-free&lt;/em&gt;
      requirement by displaying the information in a  toolbar or
      sidebar and allow the user to ignore or absorb the information at
      will.&lt;/p&gt;
      &lt;p&gt;Emacspeak uses Emacs&#39; &lt;em&gt;header-line&lt;/em&gt;
      to
      display the
      continuously updating information.
      This meets the &lt;em&gt;interaction-free&lt;/em&gt; requirement.
      The header line updates every time Emacs updates its display, and
      automatically speaking it would produce too much feedback.
      But Emacspeak doesn&#39;t automatically speak the header-line; it
      only speaks it when there is a
      &lt;em&gt;context-switch&lt;/em&gt;.&lt;/p&gt;
      
      &lt;h3&gt;How To Use&lt;/h3&gt;
      
      &lt;p&gt;Here is how I am using
      &lt;code&gt;emacspeak-webspace&lt;/code&gt; at
      present:&lt;/p&gt;
      
      &lt;dl&gt;
      &lt;dt&gt;Weather&lt;/dt&gt;
      &lt;dd&gt;Activate weather display in the
      &lt;code&gt;calendar&lt;/code&gt; and
      &lt;code&gt;scratch&lt;/code&gt; buffers.&lt;/dd&gt;
      &lt;dt&gt;News&lt;/dt&gt;
      &lt;dd&gt;Activate feed headlines in selected
      &lt;code&gt;shell&lt;/code&gt;
      buffers.&lt;/dd&gt;
      &lt;/dl&gt;
      &lt;p&gt;You hear the updated information when switching to buffers
      where the webspace display is active.
      &lt;/p&gt;
      &lt;h3&gt;Activating WebSpace Displays&lt;/h3&gt;
      &lt;p&gt;Webspace displays are activated via the following commands;
      all Webspace displays will be  placed by default on prefix key
      &lt;code&gt;hyper-space&lt;/code&gt;&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;&lt;code&gt;emacspeak-webspace-headlines&lt;/code&gt;:
      &lt;code&gt;hyper-space
      h&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;emacspeak-webspace-weather&lt;/code&gt;
      &lt;code&gt;hyper-space
      w&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Share And Enjoy, And May The Source Be With You!&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/618980891425495491'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/618980891425495491'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/03/emacspeak-webspace-interaction-free.html' title='Emacspeak WebSpace --- Interaction-Free Information Access'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2735672350700042581
    </id>
    <published>
      2008-01-03T10:45:00.001-08:00
    </published>
    <updated>2008-01-03T10:45:01.476-08:00
    </updated>
    <title type='text'>
      Announcing: The Coming Of Piglets To The Emacspeak Desktop
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;This is to announce a new emacspeak module called
      &lt;em&gt;Piglets&lt;/em&gt; that brings together Emacs and Firefox
      to
      create
      a powerful framework for authoring Web interaction
      wizards.&lt;/p&gt;      &lt;h2&gt;Why  Piglets?&lt;/h2&gt;
      
      &lt;p&gt;You might well ask &lt;q&gt;Why Piglets?&lt;/q&gt;,
      and might conjecture that &lt;em&gt;PIGLETS&lt;/em&gt; might stand
      for
      &lt;strong&gt;Powerful Internet Gadgets for a  Light-Weight  Talking
      System&lt;/strong&gt;.
      You might conjecture that the Emacspeak mascot likes pig-ears; or
      you might even  think of attributing it to the fact that my
      friend and colleague &lt;a
      href=&#39;http://firevox.clcworld.net&#39;&gt;Charles Chen&lt;/a&gt;
      and
      creator
      of &lt;em&gt; Fire Vox&lt;/em&gt; was born in the year of the pig.
      But you&#39;d be mostly wrong in all of the above.&lt;/p&gt;
      &lt;p&gt;Piglets on the Emacspeak desktop are the result of having
      two
      large (and powerful) software pigs connect over a socket. A few
      months ago, I blogged here about &lt;em&gt;MozREPL&lt;/em&gt; and
      how it
      allows me to  &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2007/06/firebox-put-fox-in-box.html&#39;&gt;Put
      The Fox In A Box&lt;/a&gt;. Piglets mark the completion of the
      Emacs/Firefox integration that started with Firebox. Once you
      install &lt;a href=&#39;http://firevox.clcworld.net&#39;&gt;Fire
      Vox&lt;/a&gt;, the
      free self-voicing extension for Firefox, piglets become a
      versatile means to leverage the self-voicing  Fire-Vox/Firefox DOM
      from
      the comfort of
      the emacspeak environment.&lt;/p&gt;
      
      &lt;h2&gt;What You Need&lt;/h2&gt;
      
      &lt;p&gt;Caveat: &lt;strong&gt;ALL&lt;/strong&gt; of this is early
      experimental
      software --- and you&#39;ll need to tweak things for your
      environment      to get things working.&lt;/p&gt;
      
      &lt;ul&gt;
      &lt;li&gt;A version of Emacspeak from the  subversion
      repository.&lt;/li&gt;
      &lt;li&gt;Check the installation of the
      &lt;code&gt;servers/python&lt;/code&gt;
      files in your Emacspeak installation.&lt;/li&gt;
      &lt;li&gt;Confirm that the &lt;code&gt;HTTP&lt;/code&gt; wrapper for
      the
      TTS
      servers works. You can most easily do this by running:
      &lt;pre&gt;
      # Start the HTTPspeech server 
      # from emacspeak/servers/python
      python HTTPSpeaker.py  outloud 2222 &amp;amp;
      # you can replace outloud with dtk-exp
      # but the bindings to other TTS  servers is not defined for now
      # Run wget to test the speech server:
      wget --post-data=&#39;speak:hello world&#39; localhost:2222
      &lt;/pre&gt;
      If all is well, you should here the TTS engine say &lt;q&gt;Hello
      World&lt;/q&gt;
      &lt;p&gt;&lt;strong&gt;Do not proceed if the above does not
      work.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
      &lt;li&gt;Install Fire-Vox and configure it to use the Emacspeak TTS
      server.
      You can do this with ORCA  providing the feedback.
      Alternatively, once you have installed Fire-Vox,  shutdown
      Firefox and then edit your
      &lt;code&gt;~/.mozilla/firefox/default/prefs.js&lt;/code&gt;
      &lt;pre&gt;
      user_pref(&quot;firevox.LastWorkingTTS&quot;, 4);
      &lt;/pre&gt;
      &lt;/li&gt;
      &lt;li&gt;The above sets up Fire-Vox to use the running HTTP speech
      server you started earlier.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h2&gt;Loading And Running Piglets&lt;/h2&gt;
      
      &lt;p&gt;The Piglets framework is implemented in module
      &lt;code&gt;emacspeak-piglets.el&lt;/code&gt;. There is a Fire-Vox
      binding in
      module &lt;code&gt;emacspeak-firevox.el&lt;/code&gt; and a binding
      to the
      &lt;a
      
      
      href=&#39;http://code.google.com/p/google-axsjax&#39;&gt;JawBreaker&lt;/a&gt;
      game in &lt;code&gt;emacspeak-jawbreaker.el&lt;/code&gt;.
      &lt;/p&gt;
      
      &lt;h2&gt;How Does It Work?&lt;/h2&gt;
      
      &lt;p&gt;When you get the various pieces configured and working,
      here      is how things work:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Piglets place you in a special interaction buffer in
      Emacs.&lt;/li&gt;
      &lt;li&gt;Typing keys  in this buffer go to Firefox.&lt;/li&gt;
      &lt;li&gt;Control keys send commands to Firefox using
      MozREPL.&lt;/li&gt;
      &lt;li&gt;The latter is most useful in conjunction with Web 2.0
      applications that have been &lt;a
      
      
      href=&#39;http://code.google.com/p/google-axsjax/&#39;&gt;AxsJAX&lt;/a&gt;ed.&lt;/li&gt;
      &lt;li&gt;Additional commands give access to FireFox features such
      as      the URL bar. As an example, hit &lt;code&gt;C-w&lt;/code&gt;
      and type the phrase you&#39;d like to go into the address bar ---
      either a URL  or a search term. As an example, try typing
      &lt;em&gt;XKCDComic&lt;/em&gt;.
      This will automatically do a &lt;em&gt;Google Lucky
      Search&lt;/em&gt;      (thanks
      to FireFox magic)
      and open the XKCD site.&lt;/li&gt;
      &lt;li&gt;But wait, there&#39;s more! Because XKCD has been 
      &lt;a
      
      
      href=&#39;http://googleblog.blogspot.com/2007/12/accessibility-mashups-axsjax-fun-with.html&#39;&gt;AxsJAXed&lt;/a&gt;, you
      will hear Fire-Vox automatically speak the comic strip and its
      associated transcript. Hit &lt;code&gt;?&lt;/code&gt; in the FireFox
      interaction buffer to hear the available keystrokes for this
      AxsJAXed application; in general, &lt;code&gt;?&lt;/code&gt; brings
      up
      keyboard help for AxsJAXed applications.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h2&gt;ToDos:&lt;/h2&gt;
      
      &lt;p&gt;These are some todos that I plan to get to eventually ---
      if      you have coding cycles to contribute, feel free to work on
      thesee.&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Create an HTTP  binding to the TTS servers using TCL and
      the
      TCL HTTP libraries. This will eliminate the dependency on the
      Python wrapper I originally wrote for ORCA  in fall 2005.&lt;/li&gt;
      &lt;li&gt;Write more  Piglets.&lt;/li&gt;
      &lt;li&gt;Make installation and configuration simpler.&lt;/li&gt;
      &lt;li&gt;Test installation and configuration of the various
      pieces.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2735672350700042581'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2735672350700042581'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2008/01/announcing-coming-of-piglets-to.html' title='Announcing: The Coming Of Piglets To The Emacspeak Desktop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4212410965066662568
    </id>
    <published>
      2007-12-20T14:49:00.001-08:00
    </published>
    <updated>2007-12-20T14:49:42.280-08:00
    </updated>
    <title type='text'>Web
      Accessibility And Usability: Coming Back To The Basics
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      The Nielsen Norman Group has made available a detailed report on
      accessibility, which includes the results of several usability
      tests
      --- see &lt;a
      
      href=&#39;http://www.nngroup.com/reports/accessibility/&#39;&gt;Going      Beyond
      Alt Text&lt;/a&gt;.
      It&#39;s a very good read,  and though its conclusions might be
      depressing to people coming to this area from the outside ---
      they should be no surprise to users who have been trying to use
      the Web via spoken output over the last 10 years.
      From the perspective of the Emacspeak user who lives in a
      specialized browsing environment that is optimized for performing
      oft-repeated tasks, there are several interesting take-aways from
      this report:&lt;/p&gt;
      
      &lt;ul&gt;
      &lt;li&gt;Though so-called &lt;em&gt;Web Accessibility
      Standards&lt;/em&gt; have
      attempted to focus on the behavior observed when using
      screenreaders with mainstream browsers, that thread of work
      appears to be achieving little with respect to the real metric of
      &lt;strong&gt;task completion&lt;/strong&gt;.
      As technologists, we would all do well to remember that users
      come to the Web, and Web Access solutions not to &lt;em&gt;use the
      browser&lt;/em&gt; but rather to complete one or other
      task.&lt;/li&gt;
      &lt;li&gt;As described in &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/specialized-browsers/specialized-browsers.html&#39;&gt;Specialized
      Browsers&lt;/a&gt;
      and &lt;a
      
      
      href=&#39;http://www.resourceshelf.com/2007/12/02/webcast-the-web-the-way-you-want-it/&#39;&gt;The
      Web The Way You Want It&lt;/a&gt;,
      task-oriented access and specialized user-optimized web tools
      have been around since the inception of the Web.&lt;/li&gt;
      &lt;li&gt;Though the Nielsen study asked users to carry out each of
      the
      given tasks by going to a given Web site, it would be interesting
      to see how such tasks work out in the Emacspeak environment.
      It&#39;s a given that an emacspeak  user trying to buy a music CD at
        an
      online store   would run into a brick wall fairly quickly (see,
      even online stores are made of brick and mortar;-)).
      However, as an Emacspeak user I&#39;d &lt;em&gt;never do
      that&lt;/em&gt;
      I&#39;d
      either go to  Amazon&#39;s highly efficient 
      &lt;a href=&#39;http://www.amazon.com/access&#39;&gt;Amazon
      Accessible
      Store&lt;/a&gt;
      or faster yet, type an appropriate query at Google and click on the
      relevant Ad that sports a &lt;em&gt;Google Checkout&lt;/em&gt;
      badge.&lt;/li&gt;
      &lt;li&gt;And more interestingly, it would be interesting to carry
      out
      a follow-up user study to compare the rate of task completion as
      well as observed efficiencies/inefficiencies 
      between users of Emacspeak and generic browser/screenreader
      combinations for  tasks such as:
      
      &lt;ol&gt;
      &lt;li&gt;Play NPR news from the last hour.&lt;/li&gt;
      &lt;li&gt;Play your local NPR station.&lt;/li&gt;
      &lt;li&gt;Play BBC  News from the last hour.&lt;/li&gt;
      &lt;li&gt;Skim the top stories from CNN.&lt;/li&gt;
      &lt;li&gt;Look up  today&#39;s stock market numbers for the major
      indices.&lt;/li&gt;
      &lt;li&gt;And items too numerous to enumerate in this
      margin.&lt;/li&gt;
      &lt;/ol&gt;&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4212410965066662568'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4212410965066662568'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/12/web-accessibility-and-usability-coming.html' title='Web Accessibility And Usability: Coming Back To The Basics'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8603034841498082552
    </id>
    <published>
      2007-11-28T07:45:00.001-08:00
    </published>
    <updated>2007-11-28T07:45:56.840-08:00
    </updated>
    <title type='text'>
      Directions Using Public Transport From Google Maps
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div&gt;
      &lt;p&gt;In the spirit of adding a &lt;em&gt;smart URL
      template&lt;/em&gt; to
      enhance the Emacspeak &lt;em&gt;Web Command Line&lt;/em&gt;
      for useful tools I discover ...&lt;/p&gt;
      
      &lt;p&gt;I just checked in a &lt;code&gt;Public Transit Via Google
      Maps&lt;/code&gt; 
      tool into the Emacspeak SVN repository.
      You specify trip details in the form &lt;em&gt;start  to
      destination&lt;/em&gt;
      e.g., &lt;a
      
      
      href=&#39;http://www.google.com/maps?output=html&amp;amp;ie=UTF8&amp;amp;f=d&amp;amp;dirflg=r&amp;amp;q=2715+la+terrace+circle+San+Jose%2C+CA+to+San+Jose+Airport&amp;amp;ttype=dep&amp;amp;date=11%2F28%2F07&amp;amp;time=now&#39;&gt;2715
      La Terrace Circle 95123 to San Jose Airport&lt;/a&gt;
      and get back a filtered view that shows the information you
      want. Note that clicking on the link in this blog will give you
      the entire page,
      which is fairly easy to navigate. 
      But having a smart filter in Emacspeak makes it that much more
      efficient to use.
      &lt;/p&gt;
      
      &lt;p&gt;Share And Enjoy,&lt;/p&gt;
      &lt;/div&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8603034841498082552'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8603034841498082552'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/11/directions-using-public-transport-from.html' title='Directions Using Public Transport From Google Maps'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-688356508735542148
    </id>
    <published>
      2007-11-23T18:17:00.001-08:00
    </published>
    <updated>2007-11-23T18:17:31.028-08:00
    </updated>
    <title type='text'>
      Announcing Emacspeak 27.0 AKA FastDog
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h2&gt;For Immediate Release&lt;/h2&gt;
      &lt;p&gt;
      San Jose, CA, (Nov. 24,  2007)&lt;br/&gt;
      Emacspeak:   --- Bringing   Cutteng-Edge Access For  Sharp
      Users&lt;br/&gt;
      --Zero cost of upgrade/downgrades makes priceless software
      affordable!
      &lt;/p&gt;
      
      
      
      
      &lt;table cellpadding=&#39;5&#39; cellspacing=&#39;1&#39;
      rules=&#39;all&#39; border=&#39;1&#39; summary=&#39;navigation
      bar&#39;&gt;
      &lt;tr style=&#39;background: yellow; text-color: navy; font-weight:
      bold&#39;&gt;
      &lt;td&gt;&lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-27.0.tar.bz2&#39;&gt;Downloads&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      href=&#39;http://emacspeak.sf.net/info/emacspeak.html&#39;&gt;
      Reference&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      
      
      href=&#39;http://emacspeak.sf.net/install-guide/&#39;&gt;Installation&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt; &lt;a
      
      href=&#39;http://emacspeak.sf.net/user-guide/&#39;&gt;Usage&lt;/a&gt;      &lt;/td&gt;
      &lt;td&gt;&lt;a
      
      
      href=&#39;http://emacspeak.sf.net/tips.html&#39;&gt;Tips&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a
      
      
      href=&#39;http://emacspeak.sf.net/applications.html&#39;&gt;Tools&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt; &lt;a
      
      
      href=&#39;http://www.cs.vassar.edu/~priestdo/emacspeak/&#39;&gt;Support&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;7&#39;&gt;
      &lt;img alt=&#39;EMACSPEAK Logo&#39; height=&#39;216&#39;
      width=&#39;150&#39; src=&#39;emacspeak.jpg&#39;/&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td colspan=&#39;4&#39;&gt;&lt;a
      href=&#39;http://emacspeak.sf.net/raman/&#39;&gt;About the
      author&lt;/a&gt;&lt;/td&gt;
      &lt;td colspan=&#39;3&#39;&gt;
      &lt;a href=&#39;http://sourceforge.net/projects/emacspeak&#39;&gt;
      &lt;img alt=&#39;SourceForge&#39; border=&#39;0&#39;
      height=&#39;31&#39;
      width=&#39;88&#39;
      src=&#39;http://sourceforge.net/sflogo.php?group_id=2238&#39;/&gt;
      &lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/table&gt;
      
      
      &lt;p&gt;
      
      Emacspeak Inc &lt;a
      href=&#39;http://emacspeak.sourceforge.net&#39;&gt;(NASDOG:
      ESPK)&lt;/a&gt; announces  the immediate
      world-wide availability of Emacspeak-27 --a powerful audio
      desktop for leveraging today&#39;s evolving data and
      service-oriented      semantic Web.
      &lt;/p&gt;
      &lt;h2&gt;Major Enhancements&lt;/h2&gt;
      
      
      
      
      
      
      
      &lt;ol&gt;
      &lt;li&gt;
      emacspeak-web: Updated Web interaction.
      &lt;/li&gt;
      &lt;li&gt;
      emacspeak-ess: Speech-enables Emacs Statistics Interface
      &lt;/li&gt;
      &lt;li&gt;
      Header Line Support:
      &lt;/li&gt;
      &lt;li&gt;
      Windows Key Now Stops Speech
      &lt;/li&gt;
      &lt;li&gt;
      Smarter mode-line output:
      &lt;/li&gt;
      &lt;li&gt;
      Google Suggest provides completion for search queries.
      &lt;/li&gt;
      &lt;li&gt;
      Integrated Support For Google Services
      &lt;/li&gt;
      &lt;li&gt;
      emacspeak-moz:  Firefox integration.
      &lt;/li&gt;
      &lt;li&gt;
      Emacspeak-webmarks: Online bookmarks.
      &lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;And others too numerous for this margin ...&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/688356508735542148'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/688356508735542148'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/11/announcing-emacspeak-270-aka-fastdog.html' title='Announcing Emacspeak 27.0 AKA FastDog'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3385720525876370388
    </id>
    <published>
      2007-11-16T14:53:00.001-08:00
    </published>
    <updated>2007-11-16T14:53:33.317-08:00
    </updated>
    <title type='text'>AxsJAX,
      Speech-Enabled Games And Auditory User Interfaces
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;This is not part of Emacspeak, but is relevant to emacspeak
      users given that:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Speech-enabled games have  proven to be a successful means
      of
      discovering AUI techniques that work, beginning with the
      speech-enabled version of Tetris.&lt;/li&gt;
      &lt;li&gt;The emerging Emacs to Firefox connection using module
      &lt;code&gt;emacspeak-moz.el&lt;/code&gt; and
      &lt;code&gt;mozrepl&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;The ability to run Fire Vox with the Emacspeak speech
      servers
      --- look for a blog post on that soon.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;Charles Chen and I recently released a JavaScript powered
      framework for access-enabling AJAX applications 
      --- see &lt;a
      
      
      href=&#39;http://code.google.com/p/google-axsjax&#39;&gt;AxsJAX&lt;/a&gt;.Along with access-enabling useful applications such as Google
      WebSearch and Google Reader, we also access-enabled JawBreaker, a
      popular game much in the spirit of Tetris --- but without a
      ticking clock.
      See  &lt;a
      
      
      href=&#39;http://code.google.com/p/google-axsjax/wiki/Showcase&#39;&gt;AxsJAX
      showcase&lt;/a&gt; for pointer to this and other Web-2.0
      applications      that have been AxsJaxed.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3385720525876370388'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3385720525876370388'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/11/axsjax-speech-enabled-games-and.html' title='AxsJAX, Speech-Enabled Games And Auditory User Interfaces'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1768197643635443743
    </id>
    <published>
      2007-10-08T16:33:00.001-07:00
    </published>
    <updated>2007-10-08T16:33:08.619-07:00
    </updated>
    <title type='text'>The Web
      The Way You Want
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      I gave a talk last week at University of Washington entitled 
      &lt;a
      
      
      href=&#39;http://norfolk.cs.washington.edu/htbin-post/unrestricted/colloq/details.cgi?id=636&#39;&gt;The
      Web The Way You Want&lt;/a&gt;;
      it should be of general interest to users interested in flexible
      access to the Web.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1768197643635443743'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1768197643635443743'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/10/web-way-you-want.html' title='The Web The Way You Want'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7814395050509851558
    </id>
    <published>
      2007-09-24T16:01:00.001-07:00
    </published>
    <updated>2007-09-24T16:01:45.684-07:00
    </updated>
    <title type='text'>Podcast
      Covering Web Accessibility
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;I recorded this 
      &lt;a
      
      
      href=&#39;http://google-code-updates.blogspot.com/2007/09/google-developer-podcast-episode-nine.html&#39;&gt;Accessibility
      Podcast&lt;/a&gt;
      a few weeks ago for the Google Developer Blog.
      It focuses on the overall topic of Web Accessibility and covers
      some of what I have been building with respect to custom clients
      for Google Services, alongside a broad range of issues around
      developing usable applications.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7814395050509851558'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7814395050509851558'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/09/podcast-covering-web-accessibility.html' title='Podcast Covering Web Accessibility'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1202544555524691864
    </id>
    <published>
      2007-09-04T07:23:00.001-07:00
    </published>
    <updated>2007-09-06T07:46:40.382-07:00
    </updated>
    <title type='text'>
      Emacspeak Video Demo: Looking Up The Weather
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;In the first of a sequence of posts demonstrating live
      emacspeak user interaction,
      I&#39;ll give an overview of what it feels like to use
      Emacspeak&#39;s
      powerful Web Command Line provided by its rich collection of web
      gadgets made up of &lt;em&gt;search wizards&lt;/em&gt; and
      &lt;em&gt;smart url
      templates&lt;/em&gt;&lt;/p&gt;
      &lt;p&gt;Here are a few things to note about this and all the
      subsequent video demos in this series:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;All demos were recorded using
      &lt;em&gt;recordmydesktop&lt;/em&gt; on an
      Ubuntu laptop running Linux (Ubuntu Dapper).&lt;/li&gt;
      &lt;li&gt;The text-to-speech is  produced by the IBM  ViaVoice
      engine,
      this can now be purchased from a couple of sources in the US and
      Europe.&lt;/li&gt;
      &lt;li&gt;All demos are recorded with the speech rate at which I use
      Emacspeak.
      These demos are primarily intended to show the efficiency of the
      environment, and slowing down the speech would detract
      significantly from that goal.&lt;/li&gt;
      &lt;li&gt;Frequent users of text-to-speech will still find the
      output      comprehensible. For the rest, you can match it up with
      what you
      see on the screen ;-)&lt;/li&gt;
      &lt;li&gt;Careful listeners will notice some jitter/clipping in the
      audio --- this appears to be an artifact of using
      &lt;em&gt;recordmydesktop&lt;/em&gt; that I was unable to
      eliminate.&lt;/li&gt;
      &lt;li&gt;In each of thesee articles, I&#39;ll enumerate the actions
      I      take,
      and their effect. I&#39;ll enumerate actual keystrokes, but I
      suggest readers focus more on the atomic commands being executed,
      rather than individual keypresses.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;Looking Up The Weather&lt;/h3&gt;
      &lt;p&gt;Looking up current weather is a sufficiently common action
      where &lt;em&gt;browsing&lt;/em&gt; to a weather site, typing in
      ones      zip-code and reviewing the resulting page is three steps
      too
      many.
      This is also why most modern desktop environments provide
      &lt;em&gt;gadgets&lt;/em&gt; that display such live information with
      minimal
      user intervention.
      This first video shows Emacspeak &lt;em&gt;smart url&lt;/em&gt;
      &lt;code&gt;RSS
      Weather From Wunderground&lt;/code&gt;in action.
      &lt;/p&gt;
      &lt;p&gt;Here is the  &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/videos/rss-weather.ogg&#39;&gt;RSS
      Weather Demo&lt;/a&gt;.
      This is an OGG/Theora video and should play with tools like
      &lt;code&gt;mplayer&lt;/code&gt;.
      The table below shows  a brief description of each user action
      and its effect.&lt;/p&gt;
      &lt;table border=&#39;2&#39; cellspacing=&#39;0&#39;
      cellpadding=&#39;6&#39; rules=&#39;groups&#39;
      frame=&#39;hsides&#39;&gt;
      &lt;COL align=&#39;left&#39;/&gt;&lt;COL
      align=&#39;left&#39;/&gt;&lt;COL
      align=&#39;left&#39;/&gt;
      &lt;thead&gt;
      
      
      &lt;tr&gt;&lt;th&gt;Action&lt;/th&gt;&lt;th&gt;Key&lt;/th&gt;&lt;th&gt;Effect&lt;/th&gt;&lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
      &lt;tr&gt;&lt;td&gt;&lt;a href=&#39;#gadget-prompt&#39;&gt;Access
      Gadgets&lt;/a&gt;&lt;/td&gt;&lt;td&gt;C-e
      u&lt;/td&gt;&lt;td&gt;Prompts
      for gadget&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;&lt;a href=&#39;#pick-gadget&#39;&gt;Pick
      Weather      Gadget&lt;/a&gt;&lt;/td&gt;&lt;td&gt;rss
      tab&lt;/td&gt;&lt;td&gt;partial
      input completes to RSS Weather From
      Wunderground&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;&lt;a href=&#39;#location&#39;&gt;Pick Default
      
      
      Location&lt;/a&gt;&lt;/td&gt;&lt;td&gt;return&lt;/td&gt;&lt;td&gt;CA/San&lt;sub&gt;Jose&lt;/sub&gt;&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td/&gt;&lt;td/&gt;&lt;td&gt;&lt;a
      href=&#39;#forecast&#39;&gt;Speaks weather
      forecast&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;&lt;a
      
      
      href=&#39;#quit&#39;&gt;Quit&lt;/a&gt;&lt;/td&gt;&lt;td&gt;q&lt;/td&gt;&lt;td&gt;Stops speech, dismisses weather forecast, and speaks current context. In this case the shell becomes current and you hear the relevant information.&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;/table&gt;
      &lt;h3&gt;A Transcript Of What You Hear&lt;/h3&gt;
      
      &lt;p&gt;Users who could see the video half of this demo but were
      not      frequent text-to-speech users reported that it would be
      useful to
      see a transcript of what is being spoken.
      I&#39;m revising this entry to have an annotated transcript.
      Note that the transcript may not be accurate to the last word,
      since I&#39;m typing it in by hand; however it should give one a
      sense of what information emacspeak chooses to speak.&lt;/p&gt;
      &lt;dl&gt;
      &lt;dt id=&#39;gadget-prompt&#39;&gt;Access Gadgets&lt;/dt&gt;
      &lt;dd&gt;The spoken prompt is
      &lt;em&gt;Resource:&lt;/em&gt;.&lt;/dd&gt;
      &lt;dt id=&#39;pick-gadget&#39;&gt;Pick Gadget&lt;/dt&gt;
      &lt;dd&gt;You hear me type &lt;em&gt;RS&lt;/em&gt; and then you hear
      Emacspeak
      completing my input to &lt;em&gt;RSSWeather&lt;/em&gt;.
      Half way through that utterance, I know it&#39;s found the right
      gadget, so I hit enter, and that stops the utterance
      &lt;em&gt;RSSWeather&lt;/em&gt; half-way through and speaks the next
      prompt.
      Notice that you also hear auditory icons to indicate that a
      prompt input area just opened.&lt;/dd&gt;
      &lt;dt id=&#39;location&#39;&gt;Location&lt;/dt&gt;
      &lt;dd&gt;With the gadget now selected, you hear the
      &lt;em&gt;City/State&lt;/em&gt; prompt generated by the weather
      gadget.
      It also produces a default location of
      &lt;em&gt;CA/San_Jose&lt;/em&gt;.
      In the demo, you hear the &lt;em&gt;State/City&lt;/em&gt; prompt,
      along
      with
      the default value. I hit enter  midway through that utterance,
      again the speech flushes immediately.
      The gadget  now has enough information to do its work; it pulls
      the RSS feed from Wunderground, converts it to XHTML (using XSLT)
      and displays the page using Emacs/W3. Once displayed, it starts
      speak the forecast you see on the screen.&lt;/dd&gt;
      &lt;dt id=&#39;forecast&#39;&gt;Forecast&lt;/dt&gt;
      &lt;dd&gt;Here is a rough transcript of what you hear  as the
      weather      forecast is spoken. The forecast starts with the words:
      &lt;em&gt;Conditions 73 degrees F Partly cloudy 4:50pm PDT  August
      18  
      ...&lt;/em&gt;
      This is  in a lower-pitched (deeper) voice since it  was
      generated from the title of the corresponding RSS item. Emacspeak
      uses Aural CSS to produce such audio formatted information.
      The contents of the item are spoken in the default voice starting
      with the utterance &lt;em&gt;Temperature 73 degrees F 23 degrees C
      ...
      Conditions partly cloudy ...&lt;/em&gt;
      When I&#39;ve  heard enough, I hit &lt;code&gt;q&lt;/code&gt; to
      quit.&lt;/dd&gt;
      &lt;dt id=&#39;quit&#39;&gt;Quit&lt;/dt&gt;
      &lt;dd&gt;When I quit the weather gadget, a number of things happen.
      &lt;ul&gt;
      &lt;li&gt;You hear auditory icon &lt;em&gt;close-object&lt;/em&gt;
      to      indicate the
      weather forecast being dismissed.&lt;/li&gt;
      &lt;li&gt;You hear context information indicating that the Emacs
      &lt;em&gt;shell buffer&lt;/em&gt; has now become current.&lt;/li&gt;
      &lt;li&gt;For this context information, you hear it speak the
      working      directory of the shell buffer and the word
      &lt;em&gt;shell&lt;/em&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/dd&gt;
      &lt;/dl&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1202544555524691864'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1202544555524691864'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/09/emacspeak-video-demo-looking-up-weather.html' title='Emacspeak Video Demo: Looking Up The Weather'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8800123492922037657
    </id>
    <published>
      2007-08-31T17:47:00.001-07:00
    </published>
    <updated>2007-08-31T17:47:35.278-07:00
    </updated>
    <title type='text'>
      Emacspeak And GMail
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      See this 
      &lt;a
      
      
      href=&#39;http://groups.google.com/group/accessible/msg/51153b28f91064bd&#39;&gt;article&lt;/a&gt;
      by my Google colleague Srinivas Annam that outlines the
      availability of GMail Filters from the basic HTML interface.
      This was the final piece that remained to convince me to use my
      GMail account for email --- now, keeping the GMail Inbox clean
      and free of clutter 
      has become a snap.&lt;/p&gt;
      &lt;p&gt;To go with this, I&#39;ve added a few smart URL templates
      to      Emacspeak&#39;s &lt;em&gt;Web Command Line&lt;/em&gt;.
      Once you&#39;ve signed in, you can use 
      template &lt;code&gt;GMail Search&lt;/code&gt;
      to type a search term, and find matching messages.
      Note that GMail uses CSS class &lt;code&gt;msg&lt;/code&gt;
      to tag the actual contents of a message. You can use this to
      advantage by hitting &lt;code&gt;e c&lt;/code&gt;
      on a message link, and specifying &lt;code&gt;msg&lt;/code&gt; as
      the      class
      value to filter the message.&lt;/p&gt;
      &lt;p&gt;At some point I&#39;ll add a couple of Emacspeak wizards
      for      creating filters; the present HTML interface is still a bit
      too
      click intensive for my liking.
      But cudos to Srinivas for doing the hard work that lets me
      discover the pain points in the HTML interface; until now thesee
      were completely invisible to me since I could not 
      use GMail from 
      the Emacspeak environment.&lt;/p&gt;
      &lt;p&gt;Emacs/W3 note: Note that signing in to GMail from the main
      GMail screen defeats W3.
      An easy work-around, and something that is more efficient anyway
      is to use 
      the &lt;code&gt;glogin.xml&lt;/code&gt; form found in Emacspeak ---
      use
      
      &lt;code&gt;C-e ?/&lt;/code&gt; in Emacspeak to pick  that form.
      Once you&#39;re signed in to Google, you can:
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Open your &lt;a
      href=&#39;http://mail.google.com/mail/h/&#39;&gt;inbox
      &lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Perform searches to find the message you want&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8800123492922037657'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8800123492922037657'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/08/emacspeak-and-gmail.html' title='Emacspeak And GMail'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6242165765529911042
    </id>
    <published>
      2007-08-17T17:24:00.001-07:00
    </published>
    <updated>2007-08-17T17:24:25.613-07:00
    </updated>
    <title type='text'>AMixer
      And Emacspeak: Controlling The Sound Card
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;In the days of OSS, Emacspeak had a nice Emacs-interface to
      &lt;code&gt;aumix&lt;/code&gt;
      and it is a piece of functionality that I have missed even more
      under ALSA,
      given that one can do many more sophisticated tweaks to one&#39;s
      sound-card.
      Tool &lt;code&gt;alsamixer&lt;/code&gt; --- a full-screen  terminal
      application is bewillderingly confusing (at least to me),
      and &lt;code&gt;amixer&lt;/code&gt; though usable required me to go
      find
      out
      how it worked  each time I needed  to do something new.
      The final straw came last weekend when I tried to record some
      Emacspeak demos using &lt;code&gt;recordmydesktop&lt;/code&gt;
      and needed to configure ALSA so that it would capture sound
      directly from the PCM output, rather than the microphone.&lt;/p&gt;
      &lt;p&gt;To cut a short story even shorter,
      I ended up writing  an Emacs wrapper around
      &lt;code&gt;amixer&lt;/code&gt;
      called  --- well, you guessed it, &lt;code&gt;amixer&lt;/code&gt;.
      The code is checked in as 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/amixer.el&#39;&gt;amixer.el&lt;/a&gt;.
      The Emacspeak keybinding &lt;code&gt;C-e (&lt;/code&gt; formerly
      used to
      manipulate &lt;code&gt;aumix&lt;/code&gt; is now ALSA-aware 
      and will intelligently default to using the new
      &lt;code&gt;amixer&lt;/code&gt; tool if  
      &lt;code&gt;/usr/bin/amixer&lt;/code&gt; is available.
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6242165765529911042'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6242165765529911042'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/08/amixer-and-emacspeak-controlling-sound.html' title='AMixer And Emacspeak: Controlling The Sound Card'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3966633935155467643
    </id>
    <published>
      2007-08-07T07:37:00.001-07:00
    </published>
    <updated>2007-08-07T07:37:55.545-07:00
    </updated>
    <title type='text'>The Web
      The Way You Want
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;While working on miscellaneous Web related things
      including:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Working on the &lt;a
      href=&#39;http://www.w3.org/2001/tag/&#39;&gt;W3C TAG&lt;/a&gt;  in
      trying to understand how  HTML
      TagSoup and 
      well-formed markup  might co-exist on the Web --- without the bad
      perennially  driving out the good,&lt;/li&gt;
      &lt;li&gt;Thinking about the Web Command Line, and placing various 
      Web gadget/widget technologies in perspective,&lt;/li&gt;
      &lt;li&gt;Building &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client&#39;&gt;Emacs-G-Client&lt;/a&gt; --- an Emacs client for
      &lt;a
      
      href=&#39;http://groups.google.com/group/emacs-g-client/&#39;&gt;Google
      services&lt;/a&gt;,&lt;/li&gt;
      &lt;li&gt;Connecting Emacs and Firefox
      via &lt;a
      
      
      href=&#39;http://dev.hyperstruct.net/mozlab/wiki/MozRepl&#39;&gt;MozREPL&lt;/a&gt;
      to get the best of both
      worlds ,&lt;/li&gt;
      &lt;li&gt;Refactoring some of the Web-related code in Emacspeak to
      better reflect the underlying ideas,&lt;/li&gt;
      &lt;li&gt;Adding additional Web goodies to Emacspeak including 
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2007/08/google-suggest-minibuffer-completion.html&#39;&gt;Google
      Suggest&lt;/a&gt; in the Emacs minibuffer,&lt;/li&gt;
      &lt;li&gt;And items too numerous to fit in this margin
      ...&lt;/li&gt;      &lt;/ul&gt;
      &lt;p&gt;I also wrote a 
      &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/specialized-browsers/&#39;&gt;draft chapter&lt;/a&gt; on specialized Web browsing.
      Given the set of things I have been working on, the end result is
      to point out that given the architecture and underlying design
      principles of the Web as embodied by HTTP, URIs and HTML,
      specialized Web browsing is in fact not so specialized after all.
      &lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3966633935155467643'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3966633935155467643'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/08/web-way-you-want.html' title='The Web The Way You Want'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-9102554332128282848
    </id>
    <published>
      2007-08-02T07:27:00.001-07:00
    </published>
    <updated>2007-08-02T07:27:07.084-07:00
    </updated>
    <title type='text'>Google
      Suggest: Minibuffer Completion When Googling
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Google Suggest has been available until now as a Firefox
      extension --- it  
      displays a dynamically generated list of completions as one does
      Google searches in Firefox.
      The preferred way of Googling on the Emacspeak audio desktop 
      --- using Emacspeak&#39;s Websearch facility available via
      &lt;code&gt;C-e ?&lt;/code&gt;
      is now &lt;em&gt;Google-Suggest&lt;/em&gt; enabled. This means that
      when
      doing Google searches via 
      &lt;code&gt;C-e ?g&lt;/code&gt;, you can type a partial query, and
      hit
      &lt;code&gt;TAB&lt;/code&gt;
      to get a list of possible completions for the query.
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9102554332128282848'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9102554332128282848'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/08/google-suggest-minibuffer-completion.html' title='Google Suggest: Minibuffer Completion When Googling'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4669909173874561800
    </id>
    <published>
      2007-07-24T07:42:00.001-07:00
    </published>
    <updated>2007-07-24T07:42:15.194-07:00
    </updated>
    <title type='text'>
      Emacspeak WebMarks: Online Bookmarks Using Google
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Emacspeak module
      &lt;code&gt;emacspeak-webmarks&lt;/code&gt;      adds support for
      adding, viewing and finding Google Bookmarks.
      Google Bookmarks allows you to store your bookmarks at Google;
      this module adds support similar to that provided by Firefox
      Bookmarklets for Google Bookmarks implemented in  JavaScript.
      Note that this module though relatively small was one of the
      motivators for the code refactoring described in 
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2007/07/web-interaction-in-emacspeak.html&#39;&gt;Web
      Interaction in Emacspeak&lt;/a&gt;.&lt;/p&gt;
      &lt;h3&gt;Usage Tips&lt;/h3&gt;
      &lt;ul&gt;
      &lt;li&gt;To use &lt;em&gt;Webmarks&lt;/em&gt;, you need to be
      signed      into Google.&lt;/li&gt;
      &lt;li&gt;Signing in to Google is easily done using the Webform
      provided as 
      &lt;code&gt;xml-forms/glogin.html&lt;/code&gt; in the Emacspeak
      distribution
      --- invoke it via key &lt;code&gt;C-e?/&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;In addition, the very first time you use Google Bookmarks,
      add your first bookmark using form
      &lt;code&gt;xml-forms/bookmark-add.html&lt;/code&gt;.
      Fill out that form, hit submit, and extract the value the
      &lt;code&gt;zx&lt;/code&gt; parameter returned by the
      server.&lt;/li&gt;
      &lt;li&gt;Use emacs Custom to save the value of the
      &lt;code&gt;zx&lt;/code&gt;
      parameter as  Emacs option
      &lt;code&gt;emacspeak-webmarks-key&lt;/code&gt;.&lt;/li&gt;
      
      &lt;/ul&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4669909173874561800'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4669909173874561800'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/07/emacspeak-webmarks-online-bookmarks.html' title='Emacspeak WebMarks: Online Bookmarks Using Google'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-680447884170689543
    </id>
    <published>
      2007-07-24T07:32:00.001-07:00
    </published>
    <updated>2007-07-24T07:32:16.956-07:00
    </updated>
    <title type='text'>Web
      Interaction In Emacspeak
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Users running out of SVN will have noticed that the
      emacspeak
      codebase has  seen a significant number of updates over the last
      couple of weeks.
      During this time, I&#39;ve refactored the Web interaction code in
      Emacspeak  to meet the following goals:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;All Emacspeak Web smarts have now been re-factored to be
      independent of any given Web browser. In practice, this avoids
      code duplication between W3 and W3M support.&lt;/li&gt;
      &lt;li&gt;The interface to XSLT has been significantly
      improved.&lt;/li&gt;
      &lt;li&gt;When using W3, Emacspeak automatically builds a cache of
      CSS
      &lt;code&gt;classnames&lt;/code&gt; and &lt;code&gt;ids&lt;/code&gt;
      occurring on the
      page.
      These are then used to provide interactive completion when
      invoking commands 
      &lt;code&gt;emacspeak-extract-by-id&lt;/code&gt; (bound to
      &lt;code&gt;e
      i&lt;/code&gt;
      in Web pages)
      and &lt;code&gt;emacspeak-we-extract-by-class&lt;/code&gt; (bound to
      &lt;code&gt;e
      c&lt;/code&gt; in Web pages).&lt;/li&gt;
      &lt;li&gt;Module &lt;code&gt;emacspeak-we&lt;/code&gt; holds all
      code      related to
      &lt;em&gt;editing&lt;/em&gt;
      Web pages before they are displayed.&lt;/li&gt;
      &lt;li&gt;Module &lt;code&gt;emacspeak-webutils&lt;/code&gt; holds
      all
      Web utility
      code.&lt;/li&gt;
      &lt;li&gt;Atom and RSS feeds are now pulled using Emacs-22 built-in
      library &lt;code&gt;url&lt;/code&gt;
      rather than via libxslt. This has the advantage that the feeds
      are pulled with any cookies the browser may have set during the
      session.&lt;/li&gt;
      &lt;li&gt;All &lt;code&gt;url templates&lt;/code&gt;,
      &lt;code&gt;search
      wizards&lt;/code&gt;
      and related Web utilities should now be capable of working
      similarly under W3 and W3M.&lt;/li&gt;
      &lt;li&gt;Module &lt;code&gt;emacspeak-moz&lt;/code&gt; provides a
      basic
      level of
      integration with Firefox --- see my related blog post on 
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2007/06/firebox-put-fox-in-box.html&#39;&gt;FireBox&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Module &lt;code&gt;emacspeak-w3m&lt;/code&gt; still needs
      work
      to take
      advantage of all of thesee changes; I myself do not use W3M much,
      so those updates will happen as and when W3M users contribute the
      necessary time and patches.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/680447884170689543'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/680447884170689543'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/07/web-interaction-in-emacspeak.html' title='Web Interaction In Emacspeak'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4720434896090389967
    </id>
    <published>
      2007-07-24T07:20:00.001-07:00
    </published>
    <updated>2007-07-24T07:20:51.938-07:00
    </updated>
    <title type='text'>
      Emacs-G-Client: Leveraging New Picasa API Features
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      The Google Picasa team announced a set of 
      &lt;a
      
      
      href=&#39;http://www.blogger.com/feeds/20280042/posts/default&#39;&gt;useful
      additions&lt;/a&gt;
      to the Picasa Web API yesterday. I&#39;ve added support for most of
      thesee new features in module &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/gphoto.el&#39;&gt;gphoto&lt;/a&gt;
      that is part of my Emacs &lt;code&gt;G-Client&lt;/code&gt;
      package.&lt;/p&gt;
      &lt;p&gt;You can get the latest version of package
      &lt;em&gt;Emacs-G-Client&lt;/em&gt;
      via &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client&#39;&gt;SVN&lt;/a&gt;.
      Note that  this  development version 
      of package &lt;em&gt;Emacs-G-Client&lt;/em&gt; also includes a
      light-weight
      client for finding and playing YouTube videos.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4720434896090389967'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4720434896090389967'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/07/emacs-g-client-leveraging-new-picasa.html' title='Emacs-G-Client: Leveraging New Picasa API Features'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-3172131081751645903
    </id>
    <published>
      2007-07-19T09:52:00.001-07:00
    </published>
    <updated>2007-07-19T09:52:52.881-07:00
    </updated>
    <title type='text'>
      Emacspeak And Beautiful Code
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      
      &lt;p&gt;
      In the fall of 2006, I was invited by O&#39;Reilly Media to
      participate in an innovative book project called &lt;em&gt;Beautiful
      Code&lt;/em&gt;.
      The project put together a set of chapters that focused on
      capturing the collected insight  from creating real
      software. A particularly attractive aspect of this book was that
      it focused on &lt;em&gt;code&lt;/em&gt;
      --- unlike many  book projects in the field of software
      engineering, here the goal was to &lt;em&gt;explicitly&lt;/em&gt;
      focus on real code and how it could be made beautiful.
      &lt;/p&gt;
      &lt;p&gt;The &lt;a
      
      href=&#39;http://www.oreilly.com/catalog/9780596510046/&#39;&gt;final      book&lt;/a&gt; is now available in print.
      The chapter on Emacspeak is being published on this Web site
      under a &lt;strong class=&#39;license&#39;&gt;Creative Common
      Licence&lt;/strong&gt;
      --- this &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/bc-emacspeak/publish-emacspeak-bc.html&#39;&gt;HTML version&lt;/a&gt;
      includes  &lt;em&gt;Chapter 31: Emacspeak  --- The Complete Audio
      Desktop&lt;/em&gt;
      and the &lt;em&gt;Afterword&lt;/em&gt; section from the
      book.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3172131081751645903'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/3172131081751645903'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/07/emacspeak-and-beautiful-code.html' title='Emacspeak And Beautiful Code'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2630586147007342952
    </id>
    <published>
      2007-07-06T17:53:00.001-07:00
    </published>
    <updated>2007-07-06T17:53:34.992-07:00
    </updated>
    <title type='text'>
      Searching The Emacspeak Knowledge Base
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Information about Emacspeak and its use is available from a
      collection of Web sites,
      and being able to restrict the search to thesee authoritative
      sources 
      is a good way of quickly finding the right document, without
      being distracted by the numerous hits one finds  when doing a
      search across the whole Web.
      You can now search the &lt;em&gt;Emacspeak Knowledge Base&lt;/em&gt;
      by using search form &lt;code&gt;emacspeak-search.html&lt;/code&gt;;
      access it via Emacspeak command 
      &lt;code&gt;emacspeak-websearch&lt;/code&gt;
      and specify &lt;code&gt;/&lt;/code&gt;to bring up the list of
      available
      forms.
      This form is also the default search form on the Emacspeak Web
      site.&lt;/p&gt;
      &lt;H2&gt;HowTo: Implement Emacspeak Knowledge Base
      Search&lt;/H2&gt;      &lt;p&gt;
      Implementing the above using CSE is trivial ---
      all I needed to do was:&lt;/p&gt;
      &lt;ol&gt;
      &lt;li&gt;Checked in an HTML file into the Emacspeak  repository at
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/html/kb.html&#39;&gt;Knowledge
      Base&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Create a CSE that uses the above document.&lt;/li&gt;
      &lt;/ol&gt;
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2630586147007342952'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2630586147007342952'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/07/searching-emacspeak-knowledge-base.html' title='Searching The Emacspeak Knowledge Base'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-7313367975327047017
    </id>
    <published>
      2007-07-06T17:45:00.001-07:00
    </published>
    <updated>2007-07-06T17:45:39.582-07:00
    </updated>
    <title type='text'>Emacs
      G-Client, Reader, And CSE: Searching Past Articles From
      Google&#xa;Reader
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;So I use module &lt;code&gt;greader&lt;/code&gt; (part of
      package &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client&#39;&gt;G-Client&lt;/a&gt;
      to read a large number of ATOM and RSS feeds. I have long missed
      the ability to search for articles I remember having read a few
      weeks or months ago;
      though I typically find it with an appropriately phrased Google
      Search, 
      I&#39;ve always wanted to have the ability to restrict the search to
      the feeds I subscribe to --- this makes formulating   the query
      much easier.&lt;/p&gt;
      &lt;p&gt;The advent of CSEs --- see my earlier blog post 
      entitled &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2007/06/making-search-fly-on-fly-custom-search.html&#39;&gt;On
      The Fly Custom Search&lt;/a&gt;
      combined with Google Reader&#39;s ability to export ones
      subscription      list as an OPML file gives me exactly what  I
      needed.&lt;/p&gt;
      
      &lt;h2&gt;HowTo: Enable Searching Of  Past Articles From Google
      Reader&lt;/h2&gt;
      
      &lt;ul&gt;
      &lt;li&gt;Since you need to be signed in to access the subscription
      list, the &lt;em&gt;CSE magic&lt;/em&gt; cannot directly retrieve 
      your subscription list at present.
      as a consequence, you need to retrieve and save your list of
      feeds   to a location that is publicly accessible.
      Feature Request: Would be nice if Reader did this automatically
      by talking to CSE on behalf of the signed-in user --- that would
      obviate the next manual step.&lt;/li&gt;
      &lt;li&gt;Export your subscription list using command
      &lt;code&gt;greader-opml&lt;/code&gt;.
      You&#39;ll need to do  an &lt;code&gt;svn update&lt;/code&gt;
      to get the above command; alternatively, sign in to Google and
      retrieve your 
      &lt;a
      
      
      href=&#39;http://www.google.com/reader/subscriptions/export&#39;&gt;subscription list&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Finally,   customize emacspeak option 
      &lt;code&gt;emacspeak-url-template-reading-list-opml&lt;/code&gt; to
      the
      location of the saved OPML file.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;Now, you can use Emacspeak &lt;code&gt;url
      template&lt;/code&gt;
      &lt;em&gt;reader subscription search&lt;/em&gt; from the Emacspeak
      Web
      Command Line to search articles you remember having seen in your
      Google Reader. This is also an excellent means of finding
      articles of interest that one might have missed in the past.
      As an example, I recently became interested in Selenium --- an
      extremely powerful Web application testing framework.
      Finding articles from the past that I &lt;em&gt;ought to have
      read&lt;/em&gt;
      but hadn&#39;t was a snap using the feature describe here.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7313367975327047017'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/7313367975327047017'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/07/emacs-g-client-reader-and-cse-searching.html' title='Emacs G-Client, Reader, And CSE: Searching Past Articles From Google&#xa;Reader'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6365820278984298699
    </id>
    <published>
      2007-07-03T16:28:00.001-07:00
    </published>
    <updated>2007-07-03T16:28:35.806-07:00
    </updated>
    <title type='text'>Google
      Books In Emacspeak
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;To coincide with today&#39;s announcement of 
      &lt;a
      
      
      href=&#39;http://googleblog.blogspot.com/2007/07/ever-more-books-to-read.html&#39;&gt;gull-text
      access to public domain works&lt;/a&gt;
      from Google Books, I&#39;ve updated the corresponding emacspeak Web
      Command-Line
      wizard. Use &lt;code&gt;C-e u&lt;/code&gt; to invoke &lt;em&gt;URL
      templates&lt;/em&gt;
      and type  &lt;code&gt; google books&lt;/code&gt; to access
      it.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6365820278984298699'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6365820278984298699'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/07/google-books-in-emacspeak.html' title='Google Books In Emacspeak'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4597026201724531986
    </id>
    <published>
      2007-06-28T16:58:00.001-07:00
    </published>
    <updated>2007-06-29T13:52:38.358-07:00
    </updated>
    <title type='text'>Making
      Search Fly: On-The-Fly Custom Search Engines
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      The Custom Search  Engine team at Google recently released 
      &lt;a
      
      
      href=&#39;http://googlecustomsearch.blogspot.com/2007/06/custom-search-on-fly.html&#39;&gt;CSE
      On The Fly&lt;/a&gt;
      a truly amazing feature. Incidentally Google Custom Search is the
      same piece of magic that brought us 
      &lt;a
      href=&#39;http://labs.google.com/accessible/&#39;&gt;Accessible     
      Search&lt;/a&gt; last year.&lt;/p&gt;
      &lt;p&gt;So in the spirit of continuing to enhance the Web Command
      Line
      in Emacspeak for every smart Web tool that becomes available,
      I&#39;ve checked in two new &lt;code&gt;url templates&lt;/code&gt;
      that demonstrate how one can  leverage this to be smart  and
      selective about what one reads.&lt;/p&gt;
      &lt;dl&gt;
      &lt;dt&gt;Searching Favorite Feeds&lt;/dt&gt;
      &lt;dd&gt;So I read a lot of Blogs, my current Blog Reader is Google
      Reader via --- you guessed it -- Emacs module 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/greader.el&#39;&gt;GReader&lt;/a&gt;
      (part of the Emacs G-Client package).
      But I often  feel the need to search my favorite feeds.
      URL-template &lt;code&gt;Reader Subscriptions&lt;/code&gt;
      lets you do this; what&#39;s more it&#39;s not specific to Google
      Reader. All you need do is to publish an OPML file listing  your
      favorite feeds  and customize Emacs variable
      &lt;code&gt;emacspeak-url-template-reading-list-opml&lt;/code&gt;
      to point to that location.&lt;/dd&gt;
      &lt;dt&gt;Official GoogleBlog Search&lt;/dt&gt;
      &lt;dd&gt;Google has a large number of Google-specific Blogs --- I
      usually read them through this &lt;em&gt;aggregated&lt;/em&gt; feed:
      &lt;a
      
      
      href=&#39;http://www.google.com/reader/public/subscriptions/user/10949413115399023739/label/officialgoogleblogs-all&#39;&gt;All
      GoogleBlog Stream&lt;/a&gt;
      Emacspeak wizard &lt;code&gt;Official GoogleBlog Search&lt;/code&gt;
      builds a
      CSE from this feed to let you search articles from all of
      Google&#39;s  blogs.&lt;/dd&gt;
      &lt;/dl&gt;
      &lt;p&gt;Eventually, I&#39;ll also add a &lt;em&gt;meta&lt;/em&gt;
      search
      wizard that
      lets  one construct any CSE on the fly --- with Lisp such
      meta-programming is a snap!&lt;/p&gt;
      &lt;p&gt;Later yesterday evening, I checked in a third
      &lt;code&gt;url-template&lt;/code&gt;
      called &lt;em&gt;On The Fly CSE&lt;/em&gt; that prompts for a search
      term
      and
      the URL for the  feed of feeds  that specifies the content to
      search.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4597026201724531986'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4597026201724531986'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/06/making-search-fly-on-fly-custom-search.html' title='Making Search Fly: On-The-Fly Custom Search Engines'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4040590380117175204
    </id>
    <published>
      2007-06-26T07:32:00.001-07:00
    </published>
    <updated>2007-06-26T07:32:25.229-07:00
    </updated>
    <title type='text'>
      Emacs-G-Client: Uploading Photos To PicasaWeb
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;The SVN version of package Emacs-G-Client 
      at &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client&#39;&gt;g-client&lt;/a&gt; now includes a new module &lt;code&gt;gphoto.el&lt;/code&gt;
      that can create albums and upload photos to Google&#39;s PicasaWeb
      site --- as an example, see &lt;a
      href=&#39;http://picasaweb.google.com/tv.raman.tv&#39;&gt;my photo
      gallery&lt;/a&gt;.
      Emacspeak users are likely to find the RSS and ATOM feeds for
      photo albums   more useful in general; package
      &lt;code&gt;gphoto&lt;/code&gt;
      provides easy access to previewing thesee feeds
      as well as viewing/editing  the metadata that goes along with
      the pictures.
      As an example of such a feed, here is 
      &lt;a
      
      
      href=&#39;http://picasaweb.google.com/data/feed/api/user/tv.raman.tv/albumid/5067595712573880865&#39;&gt;Hubbell
      Labrador&#39;s Graduation&lt;/a&gt; album.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4040590380117175204'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4040590380117175204'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/06/emacs-g-client-uploading-photos-to.html' title='Emacs-G-Client: Uploading Photos To PicasaWeb'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-511307680430077326
    </id>
    <published>
      2007-06-26T07:11:00.001-07:00
    </published>
    <updated>2007-06-26T07:11:01.779-07:00
    </updated>
    <title type='text'>
      Multilingual Dictionary Lookup Via Google
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;From the &lt;q&gt;every useful Google tool deserves a Web
      Command-line equivalent ...&lt;/q&gt;&lt;/p&gt;
      
      &lt;p&gt;
      I just checked in  an Emacspeak
      &lt;code&gt;url-template&lt;/code&gt;      for accessing 
      &lt;a
      
      
      href=&#39;http://googleblog.blogspot.com/2007/06/new-dictionary-translations.html&#39;&gt;multilingual dictionary lookup&lt;/a&gt; via Google.
      Invoke it like any other &lt;code&gt;url-template&lt;/code&gt; using
      &lt;code&gt;C-e u&lt;/code&gt; and type &lt;code&gt;mult
      tab&lt;/code&gt;.Specify the word to look up, and the source-target
      language pair
      using two letter codes --- this is analogous to how the Emacspeak
      &lt;code&gt;Translation Via Google&lt;/code&gt;
      tool  works.
      And remember, if there is something you find yourself doing often
      on the Web, there is most likely an Emacspeak 
      &lt;a
      
      
      href=&#39;http://emacspeak.blogspot.com/2005/12/emacspeak-web-tricks-web-command-line.html&#39;&gt;Web
      Command Line&lt;/a&gt;
      gadget for it --- well, at least that is true for the things I
      find myself  doing often;-)&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/511307680430077326'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/511307680430077326'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/06/multilingual-dictionary-lookup-via.html' title='Multilingual Dictionary Lookup Via Google'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4232278061050475592
    </id>
    <published>
      2007-06-22T17:28:00.001-07:00
    </published>
    <updated>2007-06-22T17:28:20.541-07:00
    </updated>
    <title type='text'>FireBox:
      Put The Fox In The Box
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      I&#39;ve finally found the right development environment for myself
      for writing and debugging Web Applications that use JavaScript to
      implement client-side interaction.
      It turns out that it wasn't&#39;t just me who found the thought of
      programming inside the Web browser a painful experience ---
      pleasant though the final end-user interaction that those results
      deliver might be for the final user.
      I discovered 
      &lt;a
      
      
      href=&#39;http://dev.hyperstruct.net/mozlab/wiki/MozRepl&#39;&gt;MozRepl&lt;/a&gt;
      --- a &lt;em&gt;read-eval-print&lt;/em&gt;
      loop for Firefox. MozRepl is a Firefox extension that allows you
      to open a connection to a running Firefox session and gain access
      to  a JavaScript interpreter context that  can access all aspects
      of the Firefox runtime.&lt;/p&gt;
      &lt;p&gt;This is quite neat, I can now use the power of Emacs to
      write
      and debug end-user JavaScript applications.
      But wait, there is more. So in general, as someone who doesn&#39;t
      need  to suffer from the hit on cycles and memory that running an X
      environment involves, 
      I usually dont start &lt;code&gt;GDM&lt;/code&gt; --- the graphical
      desktop
      --- on my Linux box. Believe me, running just at the console,
      especially with the LCD turned off makes my laptop run a lot
      longer.
      So challenge: How do you take the fox&#39;s head off Firefox?
      How do you run a headless Firefox?&lt;/p&gt;
      &lt;p&gt;Turns out that the original X Windows developers didn&#39;t
      always
      have access to all the displays that they were developing X
      applications for --- so they created &lt;code&gt;XVFB&lt;/code&gt;
      ---
      the X
      Virtual Frame Buffer server.
      Like all good things in the Open Source world, XVFB continues to
      survive --- even though today, X developers hardly if ever resort
      to XVFB.
      But in the fine UNIX tradition of 
      &lt;quote&gt;Get out of my way or I&#39;ll turn you into a shell
      script&lt;/quote&gt;
      XVFB also turns out to be just what I needed in order to run
      FireFox as a headless application.&lt;/p&gt;
      &lt;p&gt;So in summary: I&#39;m typing this blog on the shuttle bus
      ridinghome, with the monitor turned off,
      and Firefox running headless as I debug some of the code I&#39;ve
      been writing.
      If you want to put the fox&#39;s head in a box yourself, here is a
      pointer to 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/etc/firebox&#39;&gt;FireBox&lt;/a&gt;
      -- share and enjoy!
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4232278061050475592'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4232278061050475592'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/06/firebox-put-fox-in-box.html' title='FireBox: Put The Fox In The Box'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-8028686159404314470
    </id>
    <published>
      2007-06-14T11:50:00.001-07:00
    </published>
    <updated>2007-06-14T11:50:38.731-07:00
    </updated>
    <title type='text'>
      Emacspeak And Beautiful Code
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      &lt;a
      
      href=&#39;http://www.oreilly.com/catalog/9780596510046/&#39;&gt;Beautiful
      Code&lt;/a&gt;
      is a collection of essays on software design, with all proceeds
      going to Amnesty International.
      It includes a chapter on the use of Lisp advice 
      to speech-enable Emacs --- AKA Emacspeak.
      I&#39;ll eventually publish an HTML version of my article on the
      emacspeak Web site. In the meantime,  I highly recommend the
      complete      book ---
      which if you need an accessible version can probably be obtained
      from organizations like BookShare.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8028686159404314470'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/8028686159404314470'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/06/emacspeak-and-beautiful-code.html' title='Emacspeak And Beautiful Code'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2239678377295379080
    </id>
    <published>
      2007-05-23T16:24:00.001-07:00
    </published>
    <updated>2007-05-23T16:24:20.793-07:00
    </updated>
    <title type='text'>Google
      Group For Package G-Client
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;I&#39;ve created a Google Group for package G-Client here:
      &lt;a
      
      
      href=&#39;http://groups.google.com/group/emacs-g-client/feed/rss_v2_0_msgs.xml&#39;&gt;Emacs-G-Client&lt;/a&gt;.
      If you are using package &lt;code&gt;G-Client&lt;/code&gt; you can
      use
      this
      group to discuss your experiences with other users.
      Note that the codebase for this package is evolving actively
      under SVN at 
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client&#39;&gt;lisp/g-client&lt;/a&gt;
      .
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2239678377295379080'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2239678377295379080'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/05/google-group-for-package-g-client.html' title='Google Group For Package G-Client'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-9167321870051729186
    </id>
    <published>
      2007-05-19T11:29:00.001-07:00
    </published>
    <updated>2007-05-19T11:29:48.278-07:00
    </updated>
    <title type='text'>An Essay
      On Eyes-Free Computing
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;div&gt;
      &lt;p&gt; I just posted an essay on 
      &lt;a
      
      
      href=&#39;http://mathzome.blogspot.com/2007/05/thinking-of-mathematics.html&#39;&gt;eyes-free computing&lt;/a&gt;
      to my
      &lt;a
      
      
      href=&#39;http://mathzome.blogspot.com/feeds/posts/default&#39;&gt;MathZome&lt;/a&gt;blog.
      This essay highlights the relevance of 
      &lt;a
      
      
      href=&#39;http://www.georgehart.com/virtual-polyhedra/zometool.html&#39;&gt;ZomeTool&lt;/a&gt;
      in teaching
      mathematical concepts to students who are visually impaired. More
      generally, it describes my experiences as a mathematician who
      cannot see.  I&#39;m posting the abstract here; the
      &lt;a
      
      
      href=&#39;http://emacspeak.sourceforge.net/raman/publications/thinking-of-math/&#39;&gt;
      complete essay&lt;/a&gt; can be found on my Web site.&lt;/p&gt;
      &lt;p&gt;The experiences described in this essay have influenced the
      software I  have built and use on a daily basis; it should be
      of interest to:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;&lt;a
      href=&#39;http://emacspeak.sf.net&#39;&gt;Emacspeak&lt;/a&gt; users
      wishing
      to understand why things  look like the way they do in
      Emacspeak.&lt;/li&gt;
      &lt;li&gt;Students with visual impairments who are entering the
      field      of mathematics.&lt;/li&gt;
      &lt;li&gt;Teachers working with visually impaired
      students.&lt;/li&gt;
      &lt;li&gt;And the generally curious mathematician who wishes to view
      the world from a different perspective.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;h3&gt;Abstract&lt;/h3&gt;
      &lt;p&gt;
      This essay outlines some of my experiences as a mathematician
      who cannot see. Note that I transitioned to being a Computer
      Scientist during Graduate School. However I strongly believe in
      the edict &lt;q&gt;Once a mathematician, always a
      mathematician!&lt;/q&gt;  — my training in mathematics continues
      to      influence the
      way I think.
      &lt;/p&gt;
      &lt;p&gt;
      I&#39;ve been unable to see since the age of 14, which means that
      I&#39;ve studied and practiced mathematics predominantly in an
      eyes-free environment. This essay is my first conscious attempt
      at asking the question &lt;q&gt;What is involved in doing
      mathematics      when you cannot see?&lt;/q&gt; I hope that some of
      the
      experiences outlined here will prove insightful to
      mathematicians at large. At its heart, mathematics is about
      understanding the underlying structure inherent in a given area
      of interest — and where no such structure exists — to
      define the minimal structure that is needed to make forward
      progress.
      &lt;/p&gt;
      &lt;p&gt;
      The general perception that mathematics might be hard to do in
      an eyes-free environment probably traces itself to the common
      view of mathematics as a field where one performs copious
      calculations on paper. I&#39;ll illustrate some of the habits and
      abilities one evolves over time to compensate for the lack of
      ready access to &lt;em&gt;scratch memory&lt;/em&gt; provided by
      pencil
      and  paper when working in an eyes-free environment. In this essay,
      I hope to demonstrate that mathematics in its essence is
      something far bigger. By being bigger than &lt;q&gt;calculations on
      paper&lt;/q&gt;, not being able to see rarely if ever proves an
      obstacle when it comes to doing mathematics; the challenges one
      needs to overcome are primarily centered around gaining access
      to mathematical material, and communicating ones insights with
      fellow mathematicians. Thus, a large portion of this essay
      focuses on solutions to the challenges inherent in mathematical
      communication.
      &lt;/p&gt;
      
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9167321870051729186'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9167321870051729186'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/05/essay-on-eyes-free-computing.html' title='An Essay On Eyes-Free Computing'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4558730293999009024
    </id>
    <published>
      2007-05-16T07:41:00.001-07:00
    </published>
    <updated>2007-05-16T07:41:46.242-07:00
    </updated>
    <title type='text'>Updates
      To G-Client
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;If you use &lt;code&gt;g-client&lt;/code&gt; within
      Emacspeak to
      access
      Google Services, you might want to read 
      &lt;a
      
      
      href=&#39;http://emacsgeek.blogspot.com/2007/05/updates-to-g-client.html&#39;&gt;G-Client Updates&lt;/a&gt;.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4558730293999009024'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4558730293999009024'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/05/updates-to-g-client.html' title='Updates To G-Client'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-9051371237271911295
    </id>
    <published>
      2007-05-09T13:12:00.001-07:00
    </published>
    <updated>2007-05-09T13:12:24.777-07:00
    </updated>
    <title type='text'>Web 2.0
      And The Emacspeak Audio Webtop
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;Blogging while at WWW 2007.
      I attended the W3C AC meeting the first two days of the week. The
      highlight for me from the AC (Advisory Committee meeting was a
      panel consisting  of TimBL and Tim OReilly at the end of the day
      yesterday. It was fun to hear Tim OReilly  define Web-2.0 --- he
      is credited with originally coining the term, but in the last
      year, Web 2.0 has often been lightly equated to  
      dynamic Web applications that use JavaScript to the extent that
      many assume that anything that doesn&#39;t  use JavaScript is not
      Web-2.0!&lt;/p&gt;
      &lt;p&gt;The gist of Tim O&#39;s definition of Web-2.0 was 
      to point out that once  the Web had gained sufficient coverage
      and scale, it became possible to build application services on
      this Web that drew their value from aggregating the data on the
      Web; his examples ranged from Google to Amazon.
      His comments were insightful --- my own view now is that Web-2.0
      should have been called Web^2 i.e. this current revolution is
      about applying the power of the Web to itself.
      &lt;/p&gt;
      &lt;p&gt;The other amusing piece while running around at the
      conference
      and observing what everyone is working on is to realize that now
      that &lt;em&gt;Web Gadgets&lt;/em&gt; and the like are popular,
      it&#39;s
      now
      considered a fine idea to write light-weight site-specific
      tools. Notice that Emacspeak has had this since the late 90&#39;s in
      the form of first the &lt;em&gt;websearch&lt;/em&gt; module, to be
      later
      joined by &lt;em&gt;url-templates&lt;/em&gt;. I believe thesee
      innovations
      arrived earlier on the Emacspeak Webtop as compared to the rest
      of the Web for the following reasons:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Emacspeak relied on Emacs/W3 for Web functionality,and
      when      that browser stopped being maintained, there was a strong
      need to
      develop Web tools in the context of Emacspeak.&lt;/li&gt;
      &lt;li&gt;The visual Web was getting too complex  for use via speech
      output,
      and given the flexibility of the Emacs environment, and the
      arrival of XSLT in 1999, things were well set up to build a
      powerful set of Web access wizards.&lt;/li&gt;
      &lt;li&gt;Task-oriented Web tools in Emacspeak led to the conceptual
      &lt;strong&gt;Web Command Line&lt;/strong&gt; in Emacspeak at a time
      when
      &lt;em&gt;command-line interfaces&lt;/em&gt; were considered
      passe&#39;.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;Incidentally when I showed others working in the field of
      accessibility thesee Emacspeak tools during their early days, they
      were promptly dismissed as site-specific hacks that wouldn&#39;t
      scale in the face of generic screenreaders that would
      &lt;em&gt;handle
      every web page&lt;/em&gt;.
      With the visual Web getting too busy for
      &lt;em&gt;everyone&lt;/em&gt;
      mainstream users now have access to productivity solutions such
      as Apple&#39;s Dashboard Widgets, IGoogle modules that can be placed
      on a Web page or the desktop, and other comparable tools. It will
      be interesting to see how much longer blind users saddled with
      commercial screenreaders will have to wait before seeing similar
      tools emerge in their world --- just remember, when that does
      arrive, Emacspeak had them in 2000!&lt;/p&gt;
      &lt;/div&gt;
      
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9051371237271911295'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/9051371237271911295'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/05/web-20-and-emacspeak-audio-webtop.html' title='Web 2.0 And The Emacspeak Audio Webtop'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-6628772274443432663
    </id>
    <published>
      2007-05-03T18:51:00.001-07:00
    </published>
    <updated>2007-05-03T18:51:41.088-07:00
    </updated>
    <title type='text'>
      Emacspeak 26.0 --- LeadDog Unleashed!
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      
      Emacspeak Inc &lt;a
      href=&#39;http://emacspeak.sourceforge.net&#39;&gt;(NASDOG:
      ESPK)&lt;/a&gt;
      announces the immediate world-wide availability of &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-26.tar.bz2&#39;&gt;Emacspeak-26&lt;/a&gt;
      --a powerful audio desktop for leveraging today&#39;s evolving
      data and service-oriented semantic Web.
      &lt;/p&gt;
      &lt;h3&gt;Major Enhancements&lt;/h3&gt;
      
      &lt;ol&gt;
      &lt;li&gt; Added support for ESpeak -- a freely available TTS
      engine.&lt;/li&gt;
      &lt;li&gt; Added support for Ocropus -- a freely available OCR
      engine.&lt;/li&gt;
      &lt;li&gt; Updated Websearch tools.&lt;/li&gt;
      &lt;li&gt; Updated URL templates to enhance the Web Command
      Line.&lt;/li&gt;
      &lt;li&gt; Support for Google Services like Blogger via package
      G-Client.&lt;/li&gt;
      &lt;li&gt; Updated productivity tools in the wizards
      package.&lt;/li&gt;
      &lt;li&gt; Fully tested against the upcoming Emacs22.&lt;/li&gt;
      &lt;li&gt;Better integration between W3 and W3M.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;
      This release contains many user contributed patches including:
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt; ESpeak patches from the Oralux project.&lt;/li&gt;
      &lt;li&gt; W3M patches from RDC.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;
      You can visit  Emacspeak at 
      &lt;a
      href=&#39;http://emacspeak.sf.net&#39;&gt;SourceForge&lt;/a&gt;.
      The latest development snapshot of
      Emacspeak is available via subversion  from 
      &lt;a
      href=&#39;http://emacspeak.googlecode.com/svn/trunk&#39;&gt;Google
      Code Hosting&lt;/a&gt;.
      You can subscribe to the emacspeak mailing list &lt;em&gt;
      emacspeak@cs.vassar.edu&lt;/em&gt; by sending mail to the list
      request address &lt;a
      
      
      href=&#39;mailto:emacspeak-request@cs.vassar.edu&#39;&gt;emacspeak-request@cs.vassar.edu&lt;/a&gt;.  &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6628772274443432663'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/6628772274443432663'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/05/emacspeak-260-leaddog-unleashed.html' title='Emacspeak 26.0 --- LeadDog Unleashed!'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-4665207422065544454
    </id>
    <published>
      2007-03-20T06:57:00.001-07:00
    </published>
    <updated>2007-03-20T06:57:03.338-07:00
    </updated>
    <title type='text'>See You
      At CSUN 2007
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;After a gap of 7 years, I will  once again attend 
      &lt;a href=&#39;http://www.csun.edu/cod/conf/&#39;&gt;CSUN&lt;/a&gt;
       in
      LA
      this year.
      This will also be Bubbles&#39; first CSUN --- I attended CSUN 6
      years      in a row with Aster between 1994 and 1999.
      Anyway, if you&#39;re an Emacspeak user and are coming to CSUN this
      year, look for me at the Google booth.
      This is also Google&#39;s first year at CSUN;  I will be there with
      other Googlers working on accessibility.
      I arrive Wed morning and leave early Friday morning --- look
      forward to seeing you there.
      &lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4665207422065544454'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/4665207422065544454'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/03/see-you-at-csun-2007.html' title='See You At CSUN 2007'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-1780622495797519684
    </id>
    <published>
      2007-03-02T10:59:00.001-08:00
    </published>
    <updated>2007-03-02T10:59:41.076-08:00
    </updated>
    <title type='text'>An Emacs
      Client For Google Services
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;h2&gt;1 An Emacs Interface To Google Services&lt;/h2&gt;
      
      
      &lt;p&gt;
      Google offers a number of services using a Google account. Many
      of thesee services also expose a Web API. this package provides a
      set of Emacs modules for accessing thesee services from inside
      Emacs. These modules are designed with an Emacs-centric, rather
      than a Web-browser centered view of the world. Where necessary
      Emacs package &lt;code&gt;browse-url&lt;/code&gt; is used to invoke
      the
      Web browser of
      choice. 
      &lt;/p&gt;
      &lt;p&gt;
      The current distribution can be downloaded from &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/g-client.tar.bz2&#39;&gt;Google Code Hosting&lt;/a&gt; and the source code is available via &lt;a href=&#39;http://emacspeak.googlecode.com/svn/trunk/lisp/g-client/&#39;&gt;Subversion&lt;/a&gt;. Note
      that this is still work in progress. I&#39;m releasing it as part of
      the Emacspeak project since I believe the package already has
      sufficiently useful functionality for users who spend a large
      amount of their time inside Emacs. There is no dependency on
      Emacspeak, and all clients provided here can be used without
      Emacspeak loaded.
      &lt;/p&gt;
      
      &lt;h3&gt;1.1 Installation&lt;/h3&gt;
      
      
      &lt;p&gt;
      These are needed only if installing package
      &lt;code&gt;g-client&lt;/code&gt;
      stand-alone, i.e. outside of Emacspeak.
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;
      Unpack the tar archive and place the resulting
      &lt;code&gt;g-client&lt;/code&gt;
      directory on your emacs &lt;code&gt;load-path&lt;/code&gt;.
      &lt;/li&gt;
      &lt;li&gt;
      Type &lt;code&gt;make&lt;/code&gt; to compile the code.
      &lt;/li&gt;
      &lt;li&gt;
      In your .emacs, add &lt;code&gt;(load-library
      &quot;g&quot;)&lt;/code&gt;
      to set it up.
      
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;1.2 How It Works&lt;/h3&gt;
      
      
      &lt;p&gt;
      Clients are implemented using Google APIs based on Atom
      Publishing Protocol &lt;a
      
      
      href=&#39;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-09.html&#39;&gt;APP&lt;/a&gt; and Google Data APIs (&lt;a href=&#39;http://code.google.com/apis/gdata/index.html&#39;&gt;GData&lt;/a&gt;). We use &lt;code&gt;curl&lt;/code&gt;
      to retrieve content via &lt;i&gt;HTTPS&lt;/i&gt; and
      &lt;code&gt;xsltproc&lt;/code&gt; to transform the
      retrieved content to browsable HTML.
      &lt;/p&gt;
      &lt;p&gt;
      Clients sign you in the first time you invoke commands that require
      authentication. Once signed in, the session cookie is cached for
      future
      use. Session cookies presently expire in 30 minutes, and clients
      check
      forexpired cookies when authentication is needed. If the cookie has
      expired,
      clients retrieve a fresh cookie using the authentication credentials
      provided
      earlier. Note that authorization tokens etc are specific to a
      given service.
      &lt;/p&gt;
      
      &lt;h3&gt;1.3 Top-level Customizations&lt;/h3&gt;
      
      
      &lt;p&gt;
      All clients in this package use Emacs&#39;
      &lt;code&gt;customize&lt;/code&gt; interface to
      set user preferences.
      The most commonly used  ones are enumerated below.
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;
      &lt;code&gt;g-user-email&lt;/code&gt; Default email-id to use.
      Individual
      clients
      typically override this via user option
      &lt;code&gt;&amp;lt;clientname&amp;gt;-user-email&lt;/code&gt;.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;code&gt;g-html-handler&lt;/code&gt; Name of function that
      handles      HTML content.
      
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;1.4 Google Blogger &lt;i&gt;gblogger&lt;/i&gt;&lt;/h3&gt;
      
      
      &lt;p&gt;
      This client implements posting, editing and deleting of blog
      entries using the new Blogger API --- it replaces the now
      obsolete &lt;a
      
      
      href=&#39;http://emacsgeek.blogspot.com/2006/01/announcing-atom-blogger.html&#39;&gt;atom-blogger&lt;/a&gt; that implemented similar functionality
      using the old Blogger API. It uses value of customization option
      &lt;code&gt;g-user-email&lt;/code&gt; by default; this can be
      overridden
      via option
      &lt;code&gt;gblogger-user-email&lt;/code&gt;. See &lt;a
      
      
      href=&#39;http://code.google.com/apis/blogger/overview.html&#39;&gt;Blogger GData API&lt;/a&gt; for the underlying
      APIs used. For editing posts, I recommend installing &lt;a
      
      
      href=&#39;http://www.thaiopensource.com/nxml-mode/&#39;&gt;nxml-mode&lt;/a&gt;.
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;
      &lt;i&gt;Browse&lt;/i&gt; Command
      &lt;code&gt;gblogger-blog&lt;/code&gt;
      brings up the list of blogs
      owned by the currently authenticated user.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Posting&lt;/i&gt; Command
      &lt;code&gt;gblogger-new-entry&lt;/code&gt; takes a &lt;b&gt;post
      URL&lt;/b&gt; and sets
      up a special buffer where you can compose your
      article. the &lt;b&gt;post url&lt;/b&gt; is obtained from the feed
      of      blogs
      above, use the &lt;b&gt;post&lt;/b&gt; link for the blog to which
      you      wish to
      post.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Browsing&lt;/i&gt;      Command
      &lt;code&gt;gblogger-atom-display&lt;/code&gt; displays the
      atom feed for a specified blog as a browsable HTML page. In
      addition to reading your blog, this helps you find the &lt;b&gt;edit
         
      url&lt;/b&gt; for individual posts.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Editing&lt;/i&gt; Command
      &lt;code&gt;gblogger-edit-entry&lt;/code&gt; takes the &lt;b&gt;edit
      url&lt;/b&gt;
      of a previously posted entry. It retrieves the entry, and
      sets up a special composition buffer where you can edit the entry.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Submitting&lt;/i&gt; The special composition buffer created
      by
      commands &lt;code&gt;gblogger-new-entry&lt;/code&gt; and
      &lt;code&gt;gblogger-edit-entry&lt;/code&gt;
      provide a special command &lt;code&gt;gblogger-publish&lt;/code&gt;
      (bound to &lt;code&gt;C-c     C-c&lt;/code&gt;) that submits the
      entry to
      blogger.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Deleting&lt;/i&gt; Command
      &lt;code&gt;gblogger-delete-entry&lt;/code&gt; deletes an entry
      specified by its &lt;b&gt;edit url&lt;/b&gt;.
      
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;1.5 Google Calendar &lt;i&gt;gcal&lt;/i&gt;&lt;/h3&gt;
      
      
      &lt;p&gt;
      This client can be used to view, add or delete events from the
      Google Calendar for the authenticated user. It uses value of
      customization option &lt;code&gt;g-user-email&lt;/code&gt; by
      default;
      this can be
      overridden via option &lt;code&gt;gcal-user-email&lt;/code&gt;.
      Commands
      that display
      calendar items optionally accept the feed url of the calendar to
      view; this can be used to view calendars to which the
      authenticated user has read access. See &lt;a
      
      
      href=&#39;http://code.google.com/apis/calendar/overview.html&#39;&gt;GData Calendar API&lt;/a&gt; for
      the underlying APIs used.
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;
      &lt;i&gt;View&lt;/i&gt; Command
      &lt;code&gt;gcal-calendar-agenda&lt;/code&gt; displays the default
      calendar for the authenticated user. A prefix arg prompts for
      the calendar to display. This command is best used from
      inside the Emacs calendar; in this case, it uses the date
      under point when showing the agenda.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Add&lt;/i&gt; Command
      &lt;code&gt;gcal-add-event&lt;/code&gt;
      prompts for event details and
      adds it to the calendar.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Accept&lt;/i&gt; Command
      &lt;code&gt;gcal-accept-event&lt;/code&gt; accepts an event. Event
      is specified using the &lt;b&gt;edit url&lt;/b&gt; of the event.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Delete&lt;/i&gt; Command
      &lt;code&gt;gcal-delete-event&lt;/code&gt; deletes an event. Event
      is specified using the &lt;b&gt;edit url&lt;/b&gt; of the event.
      
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;h3&gt;1.6 Google Reader &lt;i&gt;greader&lt;/i&gt;&lt;/h3&gt;
      
      
      &lt;p&gt;
      This client allows the authenticated user to read, browse and
      subscribe/unsubscribe to feeds.
      It uses value of customization option
      &lt;code&gt;g-user-email&lt;/code&gt; by
      default; this can be overridden via option
      &lt;code&gt;g-user-email&lt;/code&gt;.
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;
      &lt;i&gt;Reading&lt;/i&gt; Command
      &lt;code&gt;greader-reading-list&lt;/code&gt; displays the
      reading list (river of news).
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Browsing&lt;/i&gt; Command
      &lt;code&gt;greader-feed-list&lt;/code&gt; displays a
      browsable Web page with pointers to  subscribed feeds.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Finding&lt;/i&gt; Command
      &lt;code&gt;greader-find-feeds&lt;/code&gt; searches for matching
      feeds to subscribe.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Subscribing&lt;/i&gt; Commands
      &lt;code&gt;greader-subscribe-feed&lt;/code&gt; and
      &lt;code&gt;greader-unsubscribe-feed&lt;/code&gt; are used to
      subscribe
      and
      unsubscribe.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Labeling&lt;/i&gt; Command
      &lt;code&gt;greader-star&lt;/code&gt;
      and &lt;code&gt;greader-add-label&lt;/code&gt; are
      used to label articles.
      &lt;/li&gt;
      &lt;li&gt;
      &lt;i&gt;Reading&lt;/i&gt; Starred  articles can be read by
      providing a prefix argument to command
      &lt;code&gt;greader-reading-list&lt;/code&gt;. Thus, C-u M-x
      greader-reading-list
      will prompt for the specific set of articles to retrieve.
      
      &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p class=&#39;author&#39;&gt; Author: T.V Raman
      &lt;a
      
      
      href=&#39;mailto:raman@cs.cornell.edu&amp;gt;&#39;&gt;&amp;lt;raman@cs.cornell.edu&amp;gt;&amp;gt;&lt;/a&gt;
      &lt;/p&gt;
      &lt;p class=&#39;date&#39;&gt; Date: 2007/03/02 10:36:07&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1780622495797519684'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/1780622495797519684'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/03/emacs-client-for-google-services.html' title='An Emacs Client For Google Services'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-2634050357130206777
    </id>
    <published>
      2007-02-12T16:45:00.001-08:00
    </published>
    <updated>2007-01-29T09:51:41.314-08:00
    </updated>
    <title type='text'>
      Emacspeak Downloads On GoogleCode
    </title>
    <content type='html'>
      &lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;
      &lt;p&gt;
      I&#39;ve now made all Emacspeak releases available from the download
      area on Googlecode.
      Going forward, all Emacspeak releases will be made at the
      GoogleCode site   --- not SourceForge. This is because uploading
      code to GoogleCode is &lt;em&gt;significantly&lt;/em&gt; easier than
      making
      releases on SourceForge.&lt;/p&gt;
      
      &lt;p&gt;But even more importantly, once uploaded, grabbing a
      release      from GoogleCode is significantly easier than on
      SourceForge&#39;s
      release mechanisms.
      You can always find a link to the latest releases from Emacspeak
      on GoogleCode 
      by starting from the 
      &lt;a
      href=&#39;http://code.google.com/p/emacspeak/&#39;&gt;Emacspeak     
      GoogleCode&lt;/a&gt; page.
      Follow the link labeled &lt;em&gt;Featured Downloads&lt;/em&gt; to
      download
      the newest release. I&#39;ve also made all past releases from the
      download area --- follow the link labeled
      &lt;em&gt;downloads&lt;/em&gt;
      on
      the Emacspeak GoogleCode page.&lt;/p&gt;
      
      &lt;p&gt;Here is a brief summary of why I  chose to start making
      releases on GoogleCode, it can be viewed as a short summary of
      the positives in making the switch.&lt;/p&gt;
      
      &lt;ul&gt;
      &lt;li&gt; GoogleCode makes it possible to create download URLs 
      that      can be bookmarked.
      No more clicking through multiple pages before getting to the
      file you want, you can simply point &lt;code&gt;wget&lt;/code&gt;,
      &lt;code&gt;curl&lt;/code&gt; or your favorite download tool at a
      meaningful
      URL.
      For instance,  
      here is a pointer to 
      
      &lt;a
      
      
      href=&#39;http://emacspeak.googlecode.com/files/emacspeak-25.tar.bz2&#39;&gt;Emacspeak
      25&lt;/a&gt; release.&lt;/li&gt;
      &lt;li&gt;The above is more than a convenience --- it&#39;s in line
      with
      good Web architecture. I&#39;ve  been looking for an alternative to
      SourceForge ever since that site decided to turn meaningful
      download URLs from the past into obfuscated pointers into their
      content management system; this left me with a feeling of having
      created Open Source Software only to have it locked away in
      someone else&#39;s vault with no easy mechanism for end-users to
      retrieve what had been released as free software.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;Share And Enjoy --- and let&#39;s hope we never have
      download
      sites that say &lt;em&gt;Glad to be of service &lt;/em&gt;
      as they close behind you with a sigh of a job well done.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2634050357130206777'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/2634050357130206777'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2007/02/emacspeak-downloads-on-googlecode.html' title='Emacspeak Downloads On GoogleCode'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-116680570263571503
    </id>
    <published>
      2006-12-22T08:41:00.000-08:00
    </published>
    <updated>2006-12-22T08:41:42.690-08:00
    </updated>
    <title type='text'>IBM
      Software TTS On Ubuntu 6 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      I had earlier reported the IBM TTS engine segfaulting on my home
      Ubuntu 6 machine; I&#39;m still to fix that problem. 
      Surprisingly though, I tried it on a different Ubuntu 6 machine,
      and there, installing 
      &lt;pre&gt;
      sudo apt-get install libstdc++2.10-glibc2.2
      &lt;/pre&gt;
      on top of the regular Ubuntu install was enough to get the TTS
      working.
      The segfault on my home machine occurs inside libc, and as best I
      can tell the two machines have identical libc installs. 
      So on the positive front, it&#39;s only my home machine that appears
      broken; on the negative side, the fact that the breakage is hard
      to explain and hence fix doesn&#39;t inspire confidence  in
      upgrading.
      Others have reported not having any problems on Edgy -- so the
      problem is hopefully transitory.
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116680570263571503'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116680570263571503'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/12/ibm-software-tts-on-ubuntu-6.html' title='IBM Software TTS On Ubuntu 6 '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-116610975299685723
    </id>
    <published>
      2006-12-14T07:22:00.000-08:00
    </published>
    <updated>2006-12-14T07:22:33.060-08:00
    </updated>
    <title type='text'>Web
      Command Line Tool For Google Patent Search 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;From the &lt;em&gt;every new Google search tool gets a
      corresponding
      Emacspeak wizard dept&lt;/em&gt;:&lt;/p&gt;
      &lt;p&gt;Google just introduced &lt;a
      href=&quot;http://www.google.com/patents&quot;&gt;Patent
      Search&lt;/a&gt;
      an easy to use search interface for US patents.
      In the spirit of the 
      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2005/12/emacspeak-web-tricks-web-command-line.html&quot;&gt;Web Command Line&lt;/a&gt;,
      Emacspeak now sports a &lt;em&gt;Patent Search From
      Google&lt;/em&gt;      &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2006/10/emacspeak-smart-url-for-google-code.html&quot;&gt;
      smart URL&lt;/a&gt;
      like other smart URLs on the Emacspeak Audio Desktop, this places 
      executing patent searches just a few keystrokes away.
      To use this new wizard, do the following:
      &lt;/p&gt;
      
      
      &lt;ul&gt;
      &lt;li&gt;Update your working copy of Emacspeak from 
      &lt;a
      
      
      href=&quot;http://emacspeak.googlecode.com/svn/trunk&quot;&gt;SVN&lt;/a&gt;. The
      patent search wizard will be part of the next official Emacspeak
      release slated for May 2007.&lt;/li&gt;
      &lt;li&gt;Invoke the Smart URL tool by pressing &lt;code&gt;C-e
      u&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Type the first few characters of the phrase
      &lt;code&gt;patent
      search  from Google&lt;/code&gt; and hit
      &lt;code&gt;tab&lt;/code&gt; to
      complete
      the name of the smart URL.&lt;/li&gt;
      &lt;li&gt;Hit enter, specify what you&#39;re searching for and hit
      enter
      again.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;happy inventing --- &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116610975299685723'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116610975299685723'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/12/web-command-line-tool-for-google.html' title='Web Command Line Tool For Google Patent Search '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-116439077642569619
    </id>
    <published>
      2006-11-24T09:52:00.000-08:00
    </published>
    <updated>2006-11-24T09:52:56.480-08:00
    </updated>
    <title type='text'>
      Emacspeak 25.0 (ActiveDog) Unleashed 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;I released Emacspeak 25.0 (ActiveDog) yesterday.
      Here are the &lt;a
      
      
      href=&quot;http://emacspeak.sf.net/releases/release-25.0.html&quot;&gt;release
      notes&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;While trying to release it on Sourceforge I ran into a
      couple
      of show-stoppers --- first off the SourceForge download mechanism
      has changed &lt;em&gt;yet again&lt;/em&gt; and it&#39;s now gotten
      sufficiently
      convoluted that  software released via SourceForge&#39;s file
      release      system is becoming well-nigh impossible to download
      except for
      the most motivated user. Worse, as I released the file, upload
      services on SourceForge hung, with a consequence that it created
      a 0 sized &lt;code&gt;emacspeak-25.tar.bz2&lt;/code&gt; file --- the
      SourceForge mechanism  made it well-nigh impossible to clean up
      the 0-sized file.&lt;/p&gt;
      &lt;p&gt;Given this mess, I decided to keep things simple by placing
      the &lt;a
      
      href=&quot;http://emacspeak.sf.net/emacspeak-25.tar.bz2&quot;&gt;release
      on
      the Emacspeak site &lt;/a&gt; directly -- this suffers from the
      disadvantage of the release not getting mirrored on the various
      Sourceforge download archives; it has the advantage of allowing
      users to grab the release with one click.&lt;/p&gt;
      
      &lt;p&gt;The other thing to note about this release is that there
      are      no RPMs built  --- a first in 7 years. I&#39;ve now
      switched to
      Ubuntu on my home machine and dont have the ability to build RPMs
      so I&#39;ll leave this  to individual distributions. I&#39;ve also
      not
      built Debian packages this time around, mostly because I&#39;ve not
      gotten around to understanding Debian&#39;s packaging system
      sufficiently well to do this. Moreover I prefer minimalistic
      packaging solutions --- and in general  though Debian&#39;s
      packaging      is nice, it still feels a little too heavy-weight for
      something
      like the Emacspeak source tarball which needs a simple
      &lt;code&gt;make; sudo make install&lt;/code&gt; to get set up.
      So for now, I&#39;ll rely on folks like Jim Van Zandt to build
      downstream Debian 
      packages  for incorporating with the various distributions like
      Debian and Ubuntu --- this way, packages can be built to match
      particular distributions.&lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116439077642569619'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116439077642569619'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/11/emacspeak-250-activedog-unleashed.html' title='Emacspeak 25.0 (ActiveDog) Unleashed '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-116008484563022809
    </id>
    <published>
      2006-10-05T14:47:00.000-07:00
    </published>
    <updated>2006-10-05T14:47:25.710-07:00
    </updated>
    <title type='text'>
      Emacspeak  Smart URL For Google Code Search 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Every useful Web tool deserves a Web short-cut.
      Google just announced a new service called &lt;a
      href=&quot;http://www.google.com/codesearch&quot;&gt;Code
      Search&lt;/a&gt;that lets you  search  the codebases of Open Source
      projects. It&#39;s a great way of finding source code relevant to
      ones programming projects.&lt;/p&gt;
      
      &lt;p&gt;I just checked in a corresponding &lt;code&gt;URL
      Template&lt;/code&gt;
      --- as a reminder, &lt;code&gt;url templates&lt;/code&gt; in
      Emacspeak
      are&lt;em&gt;smart URLs&lt;/em&gt; that provide web short-cuts to
      create
      a conceptual &lt;em&gt;Smart Web Command Line&lt;/em&gt;.
      To use:
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Invoke the &lt;code&gt;url template&lt;/code&gt;tool via
      the
      default
      key-binding &lt;code&gt;C-e u&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Select the &lt;code&gt;Code Search Via Google&lt;/code&gt;
      tool
      by typing
      &lt;code&gt;cod&lt;/code&gt; and pressing the
      &lt;code&gt;tab&lt;/code&gt; key.&lt;/li&gt;
      &lt;li&gt;Specify the  search query --- see the Google Code Search
      help
      instructions for the types of queries that are allowed.&lt;/li&gt;
      &lt;/ul&gt;
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116008484563022809'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/116008484563022809'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/10/emacspeak-smart-url-for-google-code.html' title='Emacspeak  Smart URL For Google Code Search '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115945396346366925
    </id>
    <published>
      2006-09-28T07:32:00.000-07:00
    </published>
    <updated>2006-09-28T07:32:43.513-07:00
    </updated>
    <title type='text'>Using
      Helix Player From Emacspeak 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;In the spirit of &lt;q&gt;You can never have  sufficiently
      many
      media players&lt;/q&gt;, I now have Helix Player working under
      Emacspeak  &lt;em&gt;i.e.,&lt;/em&gt; 
      I can now run Helix Player without having to start up X. This is
      useful because there are still media streams on the Web that
      sometimes fail with &lt;code&gt;mplayer&lt;/code&gt;, and from the
      minimaltesting I&#39;ve done so far, Helix Player is successful in
      those
      cases.&lt;/p&gt;
      
      &lt;h3&gt;What Is It?&lt;/h3&gt;
      &lt;p&gt;HelixPlayer --- installable on  modern Linux 
      distributions as &lt;code&gt;hxplay&lt;/code&gt; from package
      &lt;code&gt;HelixPlayer&lt;/code&gt; is the community-supported
      version
      ofRealPlayer 10. The well-distributed and documented client,
      &lt;code&gt;hxplay&lt;/code&gt;
      is capable of playing a wide variety of audio and video formats
      over HTTP and RTSP/RTP, and specifically, can handle RealPlayer10
      formats which includes support for &lt;em&gt;5.1&lt;/em&gt;
      audio.&lt;/p&gt;
      
      &lt;p&gt;A lesser known set of tools available from Helix ---&lt;a
      
      
      href=&quot;http://forms.helixcommunity.org/helix/builds/?category=helixdnaclient&quot;&gt;
      Helix DNA Client&lt;/a&gt; is a bare-bones UI-less player which can
      be
      used effectively  at the shell. You can download pre-built
      binaries for your flavor of Linux (GCC3.2 or later vs GCC 2.95
      based systems) 
      note that thesee are 
      nightly builds. You can also download a source zip archive. Note
      that all of thesee requires you to accept a 
      End Users License Agreement (&lt;code&gt;EULA&lt;/code&gt;)
      before being taken to the download link.&lt;/p&gt;
      &lt;p&gt;The links on the page above can be confusing; Here are
      pointers to the specific packages you need to grab  if you want a
      player that has all of the functionality described above.&lt;/p&gt;
      &lt;dl&gt;
      &lt;dt&gt;Binary&lt;/dt&gt;
      &lt;dd&gt;&lt;a
      
      
      href=&quot;http://forms.helixcommunity.org/helix/builds/index.html?filename=20060926/all_clients-helix-20060926-linux-2.2-libc6-gcc32-i586.tar.gz&quot;&gt;
      Sep 26, 2006 build for Linux GCC 3.2&lt;/a&gt;&lt;/dd&gt;
      &lt;dt&gt;Sources&lt;/dt&gt;
      &lt;dd&gt;&lt;a
      
      
      href=&quot;http://forms.helixcommunity.org/helix/builds/index.html?filename=20060927/all_clients-helix-20060927-source.zip&quot;&gt;Source
      archive from September 27, 2006&lt;/a&gt;&lt;/dd&gt;
      &lt;/dl&gt;
      
      &lt;h3&gt;Using The Binary Distribution&lt;/h3&gt;
      
      &lt;p&gt;Here is what I did you set up the binary distribution on my
      Ubuntu 6.0.6 (Dapper) machine&lt;/p&gt;
      
      &lt;ul&gt;
      &lt;li&gt;Unpacked  &lt;a
      
      
      href=&quot;http://forms.helixcommunity.org/helix/builds/index.html?filename=20060926/all_clients-helix-20060926-linux-2.2-libc6-gcc32-i586.tar.gz&quot;&gt;binary
      package&lt;/a&gt;
      under &lt;code&gt;/usr/lib&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Created a symlink  &lt;code&gt;/usr/lib/splay&lt;/code&gt;
      to
      point to
      the directory created  by unpacking the binary package.&lt;/li&gt;
      &lt;li&gt;Created the following shell script
      &lt;code&gt;/usr/bin/hsplay&lt;/code&gt;
      to launch the player:
      &lt;pre&gt;
      #!/bin/sh
      #Use Simple Helix Player:
      #
      SPLAY_LIB=/usr/lib/splay
      export HELIX_LIBS=$SPLAY_LIB
      exec /usr/bin/aoss $SPLAY_LIB/splay -iss -s &quot;$@&quot;
      &lt;/pre&gt;
      &lt;/li&gt;
      &lt;li&gt; The above script assumes you have the
      &lt;code&gt;alsa-oss&lt;/code&gt;
      package installed; you will need this to have Helix Player use
      ALSA --- something that is essential if you want to be able to
      use your sound card with other applications while playing media
      streams.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;With this setup, you can launch one or more media streams
      (both local, as well as remote HTTP/RTSP/RTP streams)
      from a shell.
      This player successfully plays the &lt;code&gt;BBC Radio4
      LW&lt;/code&gt;
      stream, something &lt;code&gt;mplayer&lt;/code&gt;
      fails to play on my Ubuntu box.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115945396346366925'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115945396346366925'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/09/using-helix-player-from-emacspeak.html' title='Using Helix Player From Emacspeak '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115811802876722544
    </id>
    <published>
      2006-09-12T20:27:00.000-07:00
    </published>
    <updated>2006-09-12T20:27:08.833-07:00
    </updated>
    <title type='text'>
      Emacspeak, Ubuntu And Software Dectalk 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;On the positive side with respect to software syntheseis,
      the      Software Dectalk &lt;em&gt;does&lt;/em&gt;
      work out of the box on Ubuntu  --- &lt;em&gt;out of the
      box&lt;/em&gt;
      that
      is if you first install &lt;code&gt;alsa-oss&lt;/code&gt; the
      ALSA-&amp;gt;OSS
      compatibility layer.
      I&#39;ve updated the Emacspeak speech server for Software Dectalk to
      use &lt;code&gt;alsa-oss&lt;/code&gt; where available; performance
      is not
      as
      responsive as the Emacspeak Viavoice server using the native ALSA
      APIs, but it&#39;s a good backup option.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115811802876722544'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115811802876722544'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/09/emacspeak-ubuntu-and-software-dectalk.html' title='Emacspeak, Ubuntu And Software Dectalk '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115798552474387360
    </id>
    <published>
      2006-09-11T07:38:00.000-07:00
    </published>
    <updated>2006-09-11T07:38:44.816-07:00
    </updated>
    <title type='text'>
      Emacspeak 24 On Ubuntu 6 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;I upgraded my home FC3 machine to Ubuntu 6.0.6 (Dapper)
      over      the weekend. Here is a short summary for things to watch
      out for
      as an emacspeak user.&lt;/p&gt;
      &lt;h2&gt;The Good, The Bad, And The Painful&lt;/h2&gt;
      
      &lt;dl&gt;
      &lt;dt&gt;Good&lt;/dt&gt;
      &lt;dd&gt;One of my friends helped with the install and it is
      remarkably quick when everything works (in my case the Ubuntu LTS
      6.0.6 installer had trouble with the NVidea display card and
      came up correctly at the third attempt).&lt;/dd&gt;
      &lt;dt&gt;Bad&lt;/dt&gt;
      &lt;dd&gt;A one CD install is nice -- but after it you have
      remarkably
      little installed from the perspective of an emacspeak user. You
      end up with a very nice GUI but very little else --- the
      reasoning being that the average user won't need much more, and
      the savvy user can always run
      &lt;code&gt;apt-get&lt;/code&gt;.&lt;/dd&gt;&lt;dt&gt;Bad&lt;/dt&gt;
      &lt;dd&gt;Worse, Ubuntu does not install
      &lt;code&gt;openssh-server&lt;/code&gt;
      --- it limits itself to installing
      &lt;code&gt;openssh-client&lt;/code&gt;. This means that you cannot
      bootstrap
      yourself by logging in from another machine until you install
      &lt;code&gt;openssh-server&lt;/code&gt; off the network. If there
      was one
      thing I would ask the Ubuntu maintainers, it would be to rectify
      this situation.&lt;/dd&gt;
      &lt;dt&gt;Painful&lt;/dt&gt;
      &lt;dd&gt;In my case, the &lt;code&gt;apt&lt;/code&gt; suite of
      tools      appeared to
      have a problem --- they died saying
      &lt;code&gt;/var/lib/dpkg/available: no such file or
      directory&lt;/code&gt;. Googling showed this to be a known problem
      with
      &lt;code&gt;apt&lt;/code&gt; and the fix is to run
      &lt;code&gt;dselect
      update&lt;/code&gt; -- but if you&#39;re new to Debian/ubuntu,  this
      is
      less than obvious.&lt;/dd&gt;
      &lt;dt&gt;Good&lt;/dt&gt;
      &lt;dd&gt;Once you overcome the above,
      &lt;code&gt;apt-get&lt;/code&gt;
      got me
      emacspeak-17.0 which was sufficient to let me bootstrap the rest
      of the process on my own using my trusted Dectalk Express to
      produce speech.&lt;/dd&gt;
      &lt;dt&gt;Painful&lt;/dt&gt;
      &lt;dd&gt;Note that you should install
      &lt;code&gt;tcl8.3&lt;/code&gt;
      and&lt;code&gt;tclx8.3&lt;/code&gt; --- rather than the newest (8.4)
      versions of
      thesee packages.
      This is because as of 8.4, the maintainers of those packages no
      longer build a stand-alone &lt;code&gt;tcl&lt;/code&gt; (extended
      TCL)
      shell. This is something that will have to be handled by
      Emacspeak in the future.&lt;/dd&gt;
      &lt;dt&gt;Good&lt;/dt&gt;
      &lt;dd&gt;I was able to get everything I needed (and more) installed
      using a combination of &lt;code&gt;apt-get&lt;/code&gt; and
      &lt;code&gt;aptitude&lt;/code&gt;.&lt;/dd&gt;
      &lt;dt&gt;Bad&lt;/dt&gt;
      &lt;dd&gt;The IBM TTS engine no longer works --- under FC3 and
      friends,
      you needed to install package
      &lt;code&gt;libstdc++-compat&lt;/code&gt;
      toget it to work. Well, there is no corresponding package for
      Ubuntu/Debian from what I could find out, and pulling in the RPM
      for &lt;code&gt;libstdc++-compat&lt;/code&gt;,
      converting it via &lt;code&gt;alien&lt;/code&gt; and installing the
      resultproduces a segfault when you run the TTS engine.&lt;/dd&gt;
      &lt;dt&gt;Bad&lt;/dt&gt;
      &lt;dd&gt;For the same reason, the old command-line
      &lt;code&gt;trplayer&lt;/code&gt; will also not work on Ubuntu 6.0.
      This is not as painful --- since mplayer works --- though I had
      to build &lt;code&gt;mplayer&lt;/code&gt; from source.
      It would be nice to create a command-line player on top of the
      HelixPlayer code base.
      At present, the missing &lt;code&gt;trplayer&lt;/code&gt; means that
      the
      &lt;code&gt;etc/rivo.pl&lt;/code&gt; provided by emacspeak no longer
      works.
      You can use &lt;code&gt;mplayer&lt;/code&gt; to  convert
      &lt;code&gt;realaudio&lt;/code&gt; to mp3; however
      &lt;code&gt;mplayer&lt;/code&gt;does
      not have a command-line option to specify the duration of
      playback,
      something that  script &lt;code&gt;etc/rivo.pl&lt;/code&gt;
      needs.&lt;/dd&gt;
      
      &lt;/dl&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115798552474387360'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115798552474387360'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/09/emacspeak-24-on-ubuntu-6.html' title='Emacspeak 24 On Ubuntu 6 '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115765095083923408
    </id>
    <published>
      2006-09-07T10:42:00.000-07:00
    </published>
    <updated>2006-09-07T10:42:30.936-07:00
    </updated>
    <title type='text'>Google
      Archive News Search 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;To mark the arrival of Google News Archive search, I
      checked      in a &lt;em&gt;Archive News Search&lt;/em&gt; 
      &lt;code&gt;url-template&lt;/code&gt; yesterday morning. To use it,
      hit
      &lt;code&gt;C-e u&lt;/code&gt; followed by &lt;code&gt;arc
      tab&lt;/code&gt; and specify
      your search term.
      &lt;/p&gt;
      &lt;p&gt;The above is checked into the SVN repository at &lt;a
      href=&quot;http://emacspeak.googlecode.com/svn&quot;&gt;Emacspeak
      GoogleCode&lt;/a&gt;.
      &lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115765095083923408'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115765095083923408'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/09/google-archive-news-search.html' title='Google Archive News Search '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115655243678974508
    </id>
    <published>
      2006-08-25T17:33:00.000-07:00
    </published>
    <updated>2006-08-25T17:33:56.843-07:00
    </updated>
    <title type='text'>Update:
      Emacspeak On Google Code Hosting 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;The initial experiment of moving emacspeak development to
      Subversion at Google Code Hosting has been largely
      successful. After a few bumps along the road, mostly a
      consequence of my being new to SVN, things are looking good, and
      I have  stopped updating the CVS repository on
      SourceForge.&lt;/p&gt;      &lt;p&gt;
      Some additional goodies as a consequence of the move to
      SVN:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;&lt;a
      href=&quot;http://emacspeak.googlecode.com/svn/tags&quot;&gt;SVN
      Tags&lt;/a&gt; contains snapshots of prior releases.&lt;/li&gt;
      &lt;li&gt;Future releases will come with an SVN Revision number that
      allows one to reliably recreate a released version.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115655243678974508'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115655243678974508'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/08/update-emacspeak-on-google-code.html' title='Update: Emacspeak On Google Code Hosting '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115551499254984501
    </id>
    <published>
      2006-08-13T17:23:00.000-07:00
    </published>
    <updated>2006-08-13T17:23:12.613-07:00
    </updated>
    <title type='text'>
      Emacspeak Codebase Via Subversion From GoogleCode 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      I&#39;ve checked in the Emacspeak codebase into the Subversion
      repository provided by &lt;a
      href=&quot;http://code.google.com/hosting&quot;&gt;Google Project
      Hosting
      &lt;/a&gt;.
      The project page is &lt;a
      href=&quot;http://code.google.com/p/emacspeak&quot;&gt;Emacspeak at
      GoogleCode&lt;/a&gt;.
      You can find Emacspeak --- complete  with its code history going
      back to the point where I started using CVS at
      &lt;a
      href=&quot;http://emacspeak.googlecode.com/svn/&quot;&gt;Emacspeak
      SVN
      Repository&lt;/a&gt;.&lt;/p&gt;
      
      &lt;p&gt;For now, the Emacspeak Web site will continue to live at
      Sourceforge; The Emacspeak mailing list will continue to live at
      Vassar as before.
      To checkout the code from SVN, follow the instructions on 
      &lt;a href=&quot;http://code.google.com/p/emacspeak/source&quot;&gt;
      Emacspeak SVN&lt;/a&gt;.
      If you run into any hitches  in checking out the code, please
      report it on the Emacspeak mailing list. Note that you can
      anonymous checkout the code from the above location entirely from
      the shell command-line without ever having to point a browser at
      anything.&lt;/p&gt;
      &lt;p&gt;Emacspeak users presently running out of SourceForge CVS
      might
      want to do an SVN checkout in a separate directory and make sure
      things work, in preparation for a permanent switch-over to
      svn. Here are the minimal steps you need to perform: 
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;&lt;code&gt;svn checkout
      http://emacspeak.googlecode.com/svn/trunk/
      emacspeak &lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;The above will create a directory called
      &lt;code&gt;emacspeak&lt;/code&gt; with the code under it;
      obviously, you
      should do this somewhere different from where you have  your
      current copy of emacspeak.&lt;/li&gt;
      &lt;li&gt;For now, I recommend renaming the directory created in the
      above step to &lt;code&gt;svn-emacspeak&lt;/code&gt; so that you can
      easily
      tell  which snapshot you&#39;re looking at. &lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Note that
      reading thesee is not a replacement for learning about SVN ---
      there is an excellent on-line book available at 
      &lt;a href=&quot;http://svnbook.red-bean.com/&quot;&gt;SVN
      Manual&lt;/a&gt;.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115551499254984501'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115551499254984501'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/08/emacspeak-codebase-via-subversion-from.html' title='Emacspeak Codebase Via Subversion From GoogleCode '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115521910331821233
    </id>
    <published>
      2006-08-10T07:11:00.000-07:00
    </published>
    <updated>2006-08-10T07:11:43.366-07:00
    </updated>
    <title type='text'>Zipping
      Through Web Pages 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;h2&gt;Zipping Through Web Pages With Emacspeak/W3&lt;/h2&gt;
      
      &lt;p&gt;
      I just added an experimental &lt;em&gt;zip through Web
      pages&lt;/em&gt;
      shortcut to &lt;code&gt;emacspeak-w3&lt;/code&gt;.
      The command is called
      &lt;code&gt;emacspeak-w3-speak-next-block&lt;/code&gt;
      and is bound to &lt;code&gt;z&lt;/code&gt; in all W3 buffers.
      It is useful for quickly moving through Web pages that have
      logically separate content units in &lt;em&gt;separate
      blocks&lt;/em&gt;
      where a &lt;em&gt;block&lt;/em&gt; is one of:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;HTML &lt;code&gt;div&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;HTML tables.&lt;/li&gt;
      &lt;li&gt;HTML &lt;code&gt;p&lt;/code&gt; elements.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;In general this provides an effective means of skimming
      many      large Web pages.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115521910331821233'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115521910331821233'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/08/zipping-through-web-pages.html' title='Zipping Through Web Pages '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115370169395797389
    </id>
    <published>
      2006-07-23T17:41:00.000-07:00
    </published>
    <updated>2006-08-10T09:36:15.143-07:00
    </updated>
    <title type='text'>Summary
      Of Emacspeak Features Compared To Other Alternatives 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;div&gt;
      &lt;h2&gt;Introduction&lt;/h2&gt;
      &lt;p&gt;I&#39;ve received a number of queries asking about the
      differences
      between Emacspeak and Speechdel ---especially given some of the
      somewhat confusing assertions made in recent Speechdel release
      announcements. I&#39;m posting this article in the hope of clearing
      up some of this confusion.
      &lt;/p&gt;
      &lt;h2&gt;
      &lt;a name=&quot;sec-1&quot;&gt;1 Emacspeak And Speechdel  -*-
      mode:org
      -*-&lt;/a&gt;
      &lt;/h2&gt;
      &lt;h3&gt;
      &lt;a name=&quot;sec-2&quot;&gt;1.1 Background&lt;/a&gt;
      &lt;/h3&gt;
      &lt;p&gt;
      &lt;a
      href=&quot;http://emacspeak.sf.net&quot;&gt;Emacspeak&lt;/a&gt;     
      speech-enables Emacs by advising core emacs
      functionality.  Speech services are provided by a simple
      Emacspeak speech-server.  Additionally, Emacspeak implements
      speech-extensions for popular emacs modules --- see the 
      &lt;a
      
      
      href=&quot;http://emacspeak.sf.net/applications.html&quot;&gt;speech-enabled applications list&lt;/a&gt;.
      &lt;/p&gt;
      &lt;p&gt;
      Emacspeak was first released in 1995, and then (as now), there
      was limited speech access to the Linux GUI.  Therefore, to be
      useful as a complete access solution, Emacspeak has always needed
      to enable the user to &lt;b&gt;do everything&lt;/b&gt; from within
      Emacs,
      not just
      regular editing operations. As a case in point, emacspeak users
      are probably one of the last remaining communities that use Emacs
      for browsing the Web.
      &lt;/p&gt;
      &lt;h3&gt;
      &lt;a name=&quot;sec-3&quot;&gt;1.2 Speech Dispatcher
      (SpeechD)&lt;/a&gt;
      &lt;/h3&gt;
      &lt;p&gt;
      The idea of SpeechD --- peech Dispatcher as an intermediate layer
      between speech clients and TTS engines was first floated sometime
      in the late 90&#39;s.  Such a common layer is a laudible goal but is
      something that takes time and effort to get right. Additionally,
      you have the challenge of getting existing software e.g.,
      emacspeak, to abandon their own speech abstraction and
      re-implement against a supposedly more generic, but completely
      untested and untried intermediate layer.
      &lt;/p&gt;
      &lt;p&gt;
      The developers of SpeechD initially incorporated some of the
      Emacspeak code into an Emacs wrapper (speechdel) that called
      SpeechD, but later decided to go their own way -- and present
      &lt;a
      
      
      href=&quot;http://www.freebsoft.org/speechd-el&quot;&gt;speechdel&lt;/a&gt; is the result.
      &lt;/p&gt;
      &lt;p&gt;
      Like Emacspeak, speechdel uses Emacs Lisp&#39;s advice facility to
      add spoken feedback to core editing commands; speech output is
      produced by calling out to speech-dispatcher.
      &lt;/p&gt;
      &lt;p&gt;
      The summary of feature differences between Emacspeak and speechdel
      in the
      next section is from examining the speechdel code-base; I have
      not run speechdel since its dependency chain resulting from
      speechd was difficult to resolve on my FC3 64bit machine.
      &lt;/p&gt;
      &lt;h3&gt;
      &lt;a name=&quot;sec-4&quot;&gt;1.3 Emacspeak Features Not Found In
      SpeechDel&lt;/a&gt;
      &lt;/h3&gt;
      &lt;ol&gt;
      &lt;li&gt;
      Emacspeak implements Aural CSS &lt;a
      
      href=&quot;http://www.w3.org/Press/1998/CSS2-REC&quot;&gt;ACSS&lt;/a&gt;,
      and uses it to  provides
      the aural analog of &lt;code&gt;font-lock&lt;/code&gt;.
      &lt;/li&gt;
      &lt;li&gt;
      Emacspeak provides pronunciation
      dictionaries. Pronunciations can be defined on a per-mode,
      per-buffer or per-directory basis. Directory and mode
      specific pronunciations are persisted across sessions. This
      allows Emacspeak to leverage Emacs&#39; intelligence about the
      semantics of a given application; thus, you can have
      it say &quot;p arrow x&quot; for &quot;p-&amp;gt;x&quot; when
      editing C
      code. Per-directory pronunciations are useful for reading
      electronic books. Per-buffer pronunciations are useful for
      succinctly speaking long lines of shell output e.g. when
      compiling complex software.
      &lt;/li&gt;
      &lt;li&gt;
      By advising core Emacs functionality, Emacs modes work out
      of the box with Emacspeak. But in most cases, Emacspeak goes
      one step further by providing light-weight speech-modules
      that specialize spoken output for a given mode. As an
      example, advising next-line to speak the current line is
      sufficient to use &lt;code&gt;dired-mode&lt;/code&gt; --- but having
      to
      listen to
      the entire line of dired output is not a pleasant
      experience. The dired-specific module in Emacspeak advises
      all interactive dired commands to speak the &quot;right&quot;
      information. As an another example, GOOD interaction
      automatically speaks the line of source-code without leaving
      the &lt;b&gt;Good&lt;/b&gt; buffer.
      &lt;/li&gt;
      &lt;li&gt;
      Emacspeak comes with many &quot;Emacs Applets&quot; for performing
      tasks that most users would perform outside of
      Emacs. Examples include playing CDs, playing multimedia
      streams etc. Fortunately, I have not had to write too many
      of thesee since there are always Emacs users other than
      myself who also create such Emacs applications --- so where
      Emacs applications already exist, I merely speech-enable
      them with a small set of advice definitions, and in some
      cases add a few additional interactive commands.
      &lt;/li&gt;
      &lt;li&gt;
      Emacs applications are plentiful for most tasks; one
      exception is the Web. Since emacs/w3 development was
      abandoned sometime around 1998, I have added significant Web
      interaction functionality to Emacspeak using Emacs/W3 as the
      basis. Today, a lot of this has also been ported to
      Emacs/W3M thanks to other enthusiasts on the Emacspeak
      mailing list.  Examples include:
      &lt;ol&gt;
      &lt;li&gt;
      WebSearch module --- prompts for query and processes
      response to focus on the results.
      &lt;/li&gt;
      &lt;li&gt;
      XSLT pre-processing: Allows pre-processing of complex
      pages before rendering via W3. Used to enable
      &lt;b&gt;smart&lt;/b&gt;
      screen-scrapers using XPath.
      &lt;/li&gt;
      &lt;li&gt;
      URL-Tempaltes: Originally motivated by
      &lt;code&gt;webjump.el&lt;/code&gt;, this
      provides url templates that enable easy access to a
      variety of Web tasks rangig from looking up flight times
      to listening to your favorite NPR or BBc show. Think early
      cut at a &quot;Web Command Line in the minibuffer&quot;.
      &lt;/li&gt;
      &lt;/ol&gt;
      &lt;/li&gt;
      &lt;li&gt;
      Customization via Custom, including additional
      keymaps. Comes with additional keymap files for the Linux
      console to enable &lt;code&gt;hyper&lt;/code&gt;,
      &lt;code&gt;super&lt;/code&gt;, and &lt;code&gt;alt&lt;/code&gt;
      prefix
      keymaps.
      &lt;/li&gt;
      &lt;li&gt;
      Module emacspeak-wizards iplements a large collection of
      Emacs wizards that enable common tasks that you would
      otherwise perform at the shell e.g., checking display status
      on a laptop. The additional prefix keymaps come in handy!
      &lt;/li&gt;
      &lt;/ol&gt;
      8)Finally, note that &lt;b&gt;all&lt;/b&gt; modules (except the
      core) are
      loaded
      on demand.All code is compiled with
      &lt;code&gt;byte-compile-dynamic&lt;/code&gt; set to
      =T=  and individual application-specific modules  are kept
      completely independent of one another. Given the size of the
      Emacspeak codebase, this is a  pre-requisite for both efficiency
      and developer sanity.
      &lt;p class=&quot;author&quot;&gt; Author: TV Raman
      &lt;a
      
      
      href=&quot;mailto:raman@users.sf.net&quot;&gt;&amp;lt;raman@users.sf.net&amp;gt;&lt;/a&gt;
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115370169395797389'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115370169395797389'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/07/summary-of-emacspeak-features-compared.html' title='Summary Of Emacspeak Features Compared To Other Alternatives '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115341852989897851
    </id>
    <published>
      2006-07-20T11:02:00.000-07:00
    </published>
    <updated>2006-07-20T11:02:09.920-07:00
    </updated>
    <title type='text'>
      Emacspeak And Accessible Search Via Google 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Google  has released an early experiment that favours easy
      to
      read Web content --- 
      &lt;a
      
      
      href=&quot;http://googleblog.blogspot.com/2006/07/finding-easy-to-read-web-content_20.html&quot;&gt;checkout
      the relevant Blog post here&lt;/a&gt;.
      Emacspeak has always had a set of Google Websearch tools --- and
      this set has now been enhanced with a shortcut to &lt;a
      href=&quot;http://labs.google.com/accessible&quot;&gt;Accessible
      Search&lt;/a&gt;.
      Below, I&#39;ll summarize the set of Google Websearch tools in
      Emacspeak.&lt;/p&gt;
      
      &lt;p&gt;All Emacspeak Websearch tools are reached via the
      key-sequence
      &lt;code&gt;C-e?&lt;/code&gt;. Specific search tools are selected by
      single-letter keystrokes following &lt;code&gt;C-e?&lt;/code&gt; ---
      I&#39;ll
      enumerate some of thesee below.&lt;/p&gt;
      
      &lt;dl&gt;
      &lt;dt&gt;i&lt;/dt&gt;
      &lt;dd&gt;Accessible Search --- Google Web Search that favors
      accessible content.&lt;/dd&gt;
      &lt;dt&gt;g&lt;/dt&gt;
      &lt;dd&gt;Vanila Google Search.&lt;/dd&gt;
      &lt;dt&gt;space&lt;/dt&gt;
      &lt;dd&gt;Google &lt;em&gt;I&#39;m Feeling Lucky&lt;/em&gt; ---
      takes you
      directly to
      the first search hit.&lt;/dd&gt;
      &lt;dt&gt;n&lt;/dt&gt;
      &lt;dd&gt;Google News Search.&lt;/dd&gt;
      &lt;dt&gt;e&lt;/dt&gt;
      &lt;dd&gt;EmapSpeak Via Google Maps.&lt;/dd&gt;
      &lt;dt&gt;u&lt;/dt&gt;
      &lt;dd&gt;Google Usenet Search.&lt;/dd&gt;
      &lt;/dl&gt;
      
      &lt;p&gt;Note that in addition, module
      &lt;code&gt;emacspeak-url-template&lt;/code&gt; provides a number of
      Google
      tools as &lt;em&gt;smart URLs.&lt;/em&gt;&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115341852989897851'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115341852989897851'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/07/emacspeak-and-accessible-search-via.html' title='Emacspeak And Accessible Search Via Google '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115112691863662574
    </id>
    <published>
      2006-06-23T22:28:00.000-07:00
    </published>
    <updated>2006-06-23T22:28:38.686-07:00
    </updated>
    <title type='text'>ALSA And
      Emacspeak: Closing The Legacy Loop With ALSA-OSS 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;And now, with ALSA working well with software TTS and
      cooperating with ALSA_aware streaming applications 
      such as &lt;code&gt;mplayer&lt;/code&gt; it&#39;s time to close the
      legacy loop
      for those few applications that still have the old
      &lt;code&gt;OSS&lt;/code&gt; API hard-wired.&lt;/p&gt;
      &lt;p&gt;One such useful application is
      &lt;code&gt;trplayer&lt;/code&gt;
      --- the
      command-line &lt;em&gt;real player&lt;/em&gt; that has not been
      updated
      inover 4 years.
      For the most part, the functionality provided by
      &lt;code&gt;trplayer&lt;/code&gt; is subsumed by the newer --- and
      actively
      maintained --- &lt;code&gt;mplayer&lt;/code&gt; but it&#39;s still
      useful
      to have
      &lt;code&gt;trplayer&lt;/code&gt; for times when
      &lt;code&gt;mplayer&lt;/code&gt; hits
      gliches with slow-responding RTSP streams.&lt;/p&gt;
      &lt;p&gt;The ALSA way of handling such legacy applications is
      through      the &lt;em&gt;ALSA OSS&lt;/em&gt; emulation layer;
      Emacspeak now contains
      a
      script &lt;code&gt;etc/atrplayer&lt;/code&gt; that invokes
      &lt;code&gt;trplayer&lt;/code&gt; via &lt;code&gt;aoss&lt;/code&gt;.
            Incidentally for
      the more observant Emacspeak user running out of CVS, script
      &lt;code&gt;atrplayer&lt;/code&gt; is not new; it has been around
      for      about a
      year, but until now it used command &lt;code&gt;vsound&lt;/code&gt;
      to
      stream
      the converted audio to command &lt;code&gt;aplay&lt;/code&gt;. I
      needed
      to do
      this until ALSA 1.0.11 since &lt;code&gt;trplayer&lt;/code&gt; used
      to
      fail
      sporadically if run through the &lt;code&gt;AOSS&lt;/code&gt;
      emulation
      layer.  But those problems now seem to be in the past with the
      upgrade to ALSA 1.0.11.  As usual with cutting edge technology
      like ALSA, your mileage with &lt;strong&gt;all of
      this&lt;/strong&gt;      will vary; so
      let me end with the usual disclaimer --- if it breaks, you get to
      keep both pieces.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115112691863662574'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115112691863662574'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/06/alsa-and-emacspeak-closing-legacy-loop.html' title='ALSA And Emacspeak: Closing The Legacy Loop With ALSA-OSS '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-115072588866693831
    </id>
    <published>
      2006-06-19T07:04:00.000-07:00
    </published>
    <updated>2006-06-19T07:04:48.726-07:00
    </updated>
    <title type='text'>
      SpeakFreely, Software TTS And ALSA 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      In &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2006/06/emacspeak-tts-alsa-and-asym.html&quot;&gt;ALSA
      and ASYM&lt;/a&gt;
      I mentioned that &lt;code&gt;speakfreely&lt;/code&gt; appeared to
      have
      stopped working.
      As it turns out, this had nothing to do with the switch to
      ASYM. I believe that in the past I had run speakfreely by first
      killing software TTS --- since by default
      &lt;code&gt;speakfreely&lt;/code&gt; uses OSS.&lt;/p&gt;
      &lt;p&gt;Getting &lt;code&gt;speakfreely&lt;/code&gt; working with
      ALSA
      without
      losing software TTS required the following steps;&lt;/p&gt;
      &lt;ol&gt;
      &lt;li&gt;Retrieve the latest  tarball 
      &lt;code&gt;speak_freely-7.6a.tar.gz&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Uncomment the &lt;code&gt;ALSA&lt;/code&gt; specific line
      in
      its&lt;code&gt;Makefile&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;In file &lt;code&gt;audio_alsa.c&lt;/code&gt;, change the
      default audio
      device from &lt;code&gt;plughw:0,0&lt;/code&gt; to
      &lt;code&gt;default&lt;/code&gt;.
      Without this change, speakfreely will try to  access the sound
      card directly; setting it to &lt;code&gt;default&lt;/code&gt;
      on line 41:
      &lt;pre&gt;
      char *devAudioOutput = &quot;default&quot;;
      &lt;/pre&gt;
      matches things up with the &lt;code&gt;pcm.default&lt;/code&gt; that
      was
      configured in the &lt;code&gt;.asoundrc&lt;/code&gt;.&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;With this, you can now talk using
      &lt;code&gt;speakfreely&lt;/code&gt; and
      continue to use software TTS.
      &lt;/p&gt;
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115072588866693831'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/115072588866693831'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/06/speakfreely-software-tts-and-alsa.html' title='SpeakFreely, Software TTS And ALSA '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114963944798906198
    </id>
    <published>
      2006-06-06T17:17:00.000-07:00
    </published>
    <updated>2006-06-06T17:17:28.043-07:00
    </updated>
    <title type='text'>
      Emacspeak, TTS, Alsa And ASYM 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      This is a continuation of the earlier thread about using ALSA for
      software TTS using DMix ---
      see &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2006/05/asoundrc-parameters-for-reliably-using.html&quot;&gt;ASoundrc
      And Emacspeak&lt;/a&gt;.&lt;/p&gt;
      
      &lt;p&gt;I&#39;ve now updated the CVS version of
      &lt;code&gt;ASoundRC&lt;/code&gt; to
      use the &lt;code&gt;ASYM&lt;/code&gt;
      plugin for the default ALSA device. 
      The &lt;code&gt;ASYM&lt;/code&gt; plugin allows you to configure
      both the
      playback and capture device, which removes the annoyance of
      having to specify an ALSA device when calling
      &lt;code&gt;arecord&lt;/code&gt; --- as used to be the case when
      using
      &lt;code&gt;DMIX&lt;/code&gt; in the
      &lt;code&gt;pcm.default&lt;/code&gt;
      device.&lt;/p&gt;
      
      &lt;p&gt;Possible Caveats:
      I am having trouble getting &lt;code&gt;speakfreely&lt;/code&gt; to
      work
      reliably --- I&#39;ve used  it with ALSA in the past --- though
      I&#39;m
      not sure if the &lt;code&gt;ASYM&lt;/code&gt; plugin is the
      culprit.&lt;/p&gt;
      
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114963944798906198'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114963944798906198'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/06/emacspeak-tts-alsa-and-asym.html' title='Emacspeak, TTS, Alsa And ASYM '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114834483483433408
    </id>
    <published>
      2006-05-22T17:40:00.000-07:00
    </published>
    <updated>2006-05-22T17:40:34.880-07:00
    </updated>
    <title type='text'>ASoundrc
      Parameters For Reliably Using ALSA Powered Software TTS 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt; 
      Advanced Linux Sound Architecture 
      &lt;a href=&quot;http://www.alsa-project.org/&quot;&gt;
      ALSA&lt;/a&gt; is a boon for software TTS users --- you can now use
      your soundcard to produce spoken output while not losing 
      audio output from other applications such as music players and
      streaming radio stations.&lt;/p&gt;
      &lt;p&gt;Emacspeak implements an ALSA-enabled TTS server for the IBM
      ViaVoice engine --- 
      using this server effectively requires appropriately tuning the
      parameters in the user&#39;s &lt;code&gt;asoundrc&lt;/code&gt; file
      to:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Enable the &lt;code&gt;DMix&lt;/code&gt; plugin to enable
      software mixing
      of multiple channels of audio.&lt;/li&gt;
      &lt;li&gt;To configure the various parameters ALSA itself
      uses.&lt;/li&gt;&lt;/ul&gt;
      
      &lt;p&gt;Depending on how well your sound-card is supported by ALSA,
      the above can be either trivially simple or a  tedious process of
      trial and error. I&#39;m writing this up to:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Collect a  list of sound cards on which the
      &lt;code&gt;asoundrc&lt;/code&gt; provided with Emacspeak works as
      expected.&lt;/li&gt;
      &lt;li&gt;In the hope that the wider ALSA community discovers and
      helps
      flesh out this material;
      my hope is that 
      the ALSA community has more insight into how thesee settings
      work.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;For the above, &lt;em&gt;works effectively&lt;/em&gt; means
      the
      following:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;The TTS engine speaks without perceptible stuttering or
      other
      audio artifacts.&lt;/li&gt;
      &lt;li&gt;The engine is responsive with respect to starting and
      stopping speech; especially when typing fast at high speech
      rates.&lt;/li&gt;
      &lt;li&gt;The TTS engine does not interfere with other alsa-enabled
      applications, e.g. &lt;code&gt;mplayer&lt;/code&gt;.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;At the end of this entry, you can find the relevant section
      from the    &lt;code&gt;asoundrc&lt;/code&gt; file from the
      Emacspeak      distribution, with comments indicating which sound
      cards perform
      well.
      An example of a card that &lt;em&gt;does not&lt;/em&gt; work well
      with
      thesee
      settings is the Audigy-LS from Creative; the TTS engine works on
      that card, but performs degrades:
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;mplayer cannot use the audio device; (aplay and mpg321 are
      able to share the card with the TTS engine.)&lt;/li&gt;
      &lt;li&gt;Speech does not stop immediately as on the soundcards
      enumerated in the &lt;code&gt;asoundrc&lt;/code&gt; file.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;pre&gt;
      Id: asoundrc,v 1.3 2006/05/23 00:22:16 raman Exp $
      #thesee numbers work on the following:
      # aplay -l | head 1
      # I82801DBICH4 [Intel 82801DB-ICH4] (IBM Thinkpads)
      # ICH6 [Intel ICH6],
      
      #  default device is a mixer
      
      pcm.!default {
      type plug
      slave.pcm &quot;dmixer&quot;
      }
      
      pcm.dmixer  {
      type dmix
      ipc_key 1024
      slave {
      pcm &quot;hw:0,0&quot;
      format s16_LE
      period_time 0
      period_size 1024
      buffer_size 4096
      rate 44100
      }
      bindings {
      0 0
      1 1
      }
      }
      &lt;/pre&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114834483483433408'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114834483483433408'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/05/asoundrc-parameters-for-reliably-using.html' title='ASoundrc Parameters For Reliably Using ALSA Powered Software TTS '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114666709268320351
    </id>
    <published>
      2006-05-03T07:38:00.000-07:00
    </published>
    <updated>2006-05-03T07:38:17.460-07:00
    </updated>
    <title type='text'>
      Listening To The Web Through A Mobile Lens 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      The similarities between Web access issues faced 
      by mobile users and those confronting eyes-free Web browsing are
      striking, and thesee similarities have often been used to advocate
      the creation of well-structured, accessible  Web content. As an
      example of mobile-friendly content 
      being a blessing for eyes-free spoken access to WebFormation,
      Emacspeak provides a 
      &lt;em&gt;mobile lens&lt;/em&gt; via the
      &lt;a href=&quot;http://www.google.com/gwt/n&quot;&gt;
      Google Mobile&lt;/a&gt; transcoder.&lt;/p&gt;
      &lt;p&gt;
      Here are a few convenient means of using the above within the
      Emacspeak Audio Desktop:&lt;/p&gt;
      
      &lt;ul&gt;
      &lt;li&gt;While browsing the Web using &lt;code&gt;w3&lt;/code&gt;,
      press &lt;code&gt;t&lt;/code&gt; on a link (command:
      &lt;code&gt;emacspeak-w3-transcode-via-google&lt;/code&gt;)
      to view that link through the mobile transcoder.&lt;/li&gt;
      &lt;li&gt;Note that all links in the resulting mobile view
      automatically go through the transcoder.&lt;/li&gt;
      &lt;li&gt;To  undo the effect of automatically viewing links in the
      mobile view through the transcoder, use &lt;code&gt;t&lt;/code&gt;
      with a
      &lt;em&gt;interactive prefix argument&lt;/em&gt;
      i.e., press &lt;code&gt;C-u t&lt;/code&gt; to follow a link to view
      it in
      its
      original form.&lt;/li&gt;
      &lt;li&gt;Additionally, I bind command
      &lt;code&gt;emacspeak-wizards-google-transcode&lt;/code&gt;
      to a convenient key so that I can launch Web sites using the
      mobile view.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;p&gt;I use this tool on a regular basis while commuting to work 
      to
      browse mainstream news sites, it provides speech-friendly content
      that has the added benefit of downloading fast over a wireless
      link --- after all, &lt;strong&gt;this is
      &lt;em&gt;Mobile&lt;/em&gt;      content&lt;/strong&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114666709268320351'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114666709268320351'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/05/listening-to-web-through-mobile-lens.html' title='Listening To The Web Through A Mobile Lens '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114662907863308710
    </id>
    <published>
      2006-05-02T21:04:00.000-07:00
    </published>
    <updated>2006-05-02T21:04:38.680-07:00
    </updated>
    <title type='text'>
      Announcing Emacspeak 24.0 (LiveDog) 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;strong&gt;For Immediate Release&lt;/strong&gt;
      &lt;p&gt;
      San Jose, CA, (May 3,  2006)&lt;br/&gt;
      Emacspeak-Alive:   --- Bringing Live  Access For  Enlightened
      Users&lt;br/&gt;
      --Zero cost of ownership makes priceless software
      affordable!&lt;/p&gt;
      
      &lt;h3&gt;Major Enhancements&lt;/h3&gt;
      &lt;ol&gt;
      &lt;li&gt;  emacspeak-muse: Speech-enabled Muse Mode&lt;/li&gt;
      &lt;li&gt;  emacspeak-ruby: Speech-enabled Ruby Mode&lt;/li&gt;
      &lt;li&gt;  emacspeak-m-player: Updated for new MPlayer&lt;/li&gt;
      &lt;li&gt;  emacspeak-sudoku.el: Speech-enabled SuDoKu&lt;/li&gt;
      &lt;li&gt;  New Option: tts-strip-octals&lt;/li&gt;
      &lt;li&gt;  emacspeak-keymap.el Updated keybindings&lt;/li&gt;
      &lt;li&gt;  lisp/atom-blogger.el Light-weight blogging
      tool&lt;/li&gt;
      &lt;li&gt;  emacspeak-atom-blogger: Speech-enables above&lt;/li&gt;
      &lt;li&gt;  voice-setup.el Custom support&lt;/li&gt;
      &lt;li&gt; Multispeech related patches&lt;/li&gt;
      &lt;li&gt; User contributed patches&lt;/li&gt;
      &lt;/ol&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114662907863308710'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114662907863308710'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/05/announcing-emacspeak-240-livedog.html' title='Announcing Emacspeak 24.0 (LiveDog) '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114204420283018511
    </id>
    <published>
      2006-03-10T18:30:00.000-08:00
    </published>
    <updated>2006-03-10T18:30:02.880-08:00
    </updated>
    <title type='text'>W3:
      Minor Patch To Handle  Content-Type application/xhtml+xml 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      Here is a minor patch to w3.el to allow it to handle content-type
      &lt;code&gt;application/xhtml+xml&lt;/code&gt;.
      For all practical  purposes (at least as far as W3 is concerned),
      this can be handled by the html parser/renderer; however since that
      content-type did not exist at the time W3 was written, it offers
      to download/save  documents of that type.
      The attached patch fixes this, and also adds a fix to a minor
      irritant with decoding of multimedia attachments.&lt;/p&gt;
      &lt;pre&gt;
      Index: w3.el
      ===================================================================
      RCS file: /cvsroot/w3/w3/lisp/w3.el,v
      retrieving revision 1.32
      diff -b -c -r1.32 w3.el
      *** w3.el	12 Jan 2003 22:10:25 -0000	1.32
      --- w3.el	11 Mar 2006 02:24:52 -0000
      ***************
      *** 34,39 ****
      --- 34,40 ----
      
      
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      
      (require &#39;w3-sysdp)
      + (eval-when-compile (require &#39;mm-decode))
      (require &#39;w3-cfg)
      
      (or (featurep &#39;efs)
      ***************
      *** 325,331 ****
      (mm-handle-media-type handle)))))
      ;; Fixme: can handle be null?
      (cond
      !        ((equal (mm-handle-media-type handle)
      &quot;text/html&quot;)      ;; Special case text/html if it comes
      through w3-fetch
      (set-buffer (generate-new-buffer &quot; *w3-html*&quot;))
      (mm-disable-multibyte)
      --- 326,333 ----
      (mm-handle-media-type handle)))))
      ;; Fixme: can handle be null?
      (cond
      !        ((or (equal (mm-handle-media-type handle)
      &quot;application/xhtml+xml&quot;)
      !          (equal (mm-handle-media-type handle)
      &quot;text/html&quot;))
      ;; Special case text/html if it comes through w3-fetch
      (set-buffer (generate-new-buffer &quot; *w3-html*&quot;))
      (mm-disable-multibyte)
      &lt;/pre&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114204420283018511'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114204420283018511'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/03/w3-minor-patch-to-handle-content-type.html' title='W3: Minor Patch To Handle  Content-Type application/xhtml+xml '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114187119760134089
    </id>
    <published>
      2006-03-08T18:26:00.000-08:00
    </published>
    <updated>2006-03-08T18:26:37.636-08:00
    </updated>
    <title type='text'>Blogging
      From Emacs: Additional Atom-Blogger Documentation 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Thanks to Jason  Dunsmore 
      for writing up some additional 
      &lt;a
      
      
      href=&quot;http://phototechnic.blogspot.com/2006/03/using-atom-blogger-with-emacs-to-post.html&quot;&gt;
      step-by-step documentation&lt;/a&gt;
      on using &lt;code&gt;atom-blogger&lt;/code&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114187119760134089'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114187119760134089'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/03/blogging-from-emacs-additional-atom.html' title='Blogging From Emacs: Additional Atom-Blogger Documentation '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114074992344461641
    </id>
    <published>
      2006-02-23T18:58:00.000-08:00
    </published>
    <updated>2006-02-23T18:58:43.536-08:00
    </updated>
    <title type='text'>
      Emacspeak: Connecting Lynx And W3 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Emacs/W3 is still the best Web page rendering option inside
      Emacspeak given the ability to apply XSL transforms, as well as
      obtaining aural styling via ACSS.
      However W3&#39;s url handling layer often breaks when faced with
      multiple redirects, especially when some of thesee happen through
      the &lt;code&gt;Host:&lt;/code&gt; HTTP header. Additionally,
      &lt;code&gt;HTTPS&lt;/code&gt; authentication sometimes fails
      mysteriously in
      the presence of redirects.&lt;/p&gt;
      
      &lt;p&gt;In many of thesee cases, &lt;code&gt;lynx&lt;/code&gt;
      happily
      fetches the
      pages correctly; however you&#39;re then stuck using  a  fairly weak
      auditory interface in that Emacspeak degrades to being
      aterminal level screenreader.&lt;/p&gt;
      
      &lt;p&gt;An effective solution to this problem is to use
      &lt;code&gt;lynx&lt;/code&gt; within an Emacs terminal, and after
      finding
      the
      content that is worth reading, handing off that content to
      Emacs/W3. The next few paragraphs show how.&lt;/p&gt;
      
      &lt;H4&gt;The &lt;code&gt;lynx-site.cfg&lt;/code&gt; File&lt;/H4&gt;
      
      &lt;p&gt;This is where you add site-specific configurations.
      Here are the lines I have in my &lt;code&gt;lynx-site.cfg
      &lt;/code&gt;
      tointegrate &lt;code&gt;lynx&lt;/code&gt; and Emacs.
      Before you use any of this, make sure you have executed
      &lt;code&gt;M-x
      server-start&lt;/code&gt; in your running Emacs, and make sure that
      all
      is well by experimenting with &lt;code&gt;emacsclient&lt;/code&gt;
      to      ensure
      that external programs can hand-off editing tasks to the
      currently running Emacs.&lt;/p&gt;
      
      
      &lt;pre&gt;
      #site defaults
      #for bookshare:
      DOWNLOADER:BKS Unpack:bks.pl  %s %s:TRUE 
      PRINTER:Edit:emacsclient %s:TRUE
      KEYMAP:???:EDITTEXTAREA	# use external editor to edit a form
      textarea      PRETTYSRC:TRUE
      SOURCE_CACHE:MEMORY
      SAVE_SPACE:~/.wget/
      BOLD_HEADERS:TRUE
      PRINTER:W3:emacsclient -e &#39;(w3-open-local
      &quot;%s&quot;)&#39;:TRUE
      &lt;/pre&gt;
      &lt;p&gt;Below, I&#39;ll describe what each of the above lines
      do:&lt;/p&gt;
      
      &lt;ul&gt;
      
      &lt;li&gt; &lt;code&gt;DOWNLOADER:BKS Unpack:bks.pl  %s %s:TRUE
      &lt;/code&gt;&lt;br/&gt;
      The above line creates an additional item in the &lt;em&gt;download
      menu&lt;/em&gt; that invokes the BookShare unpacker.
      Script &lt;code&gt;bks-unpack.pl&lt;/code&gt; invokes the BookShare
      unpacktool with the appropriate options.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;PRINTER:Edit:emacsclient
      %s:TRUE&lt;/code&gt;&lt;br/&gt;
      This creates an &lt;em&gt;Edit&lt;/em&gt; item in the
      &lt;em&gt;print      menu&lt;/em&gt;.
      Invoking this menu item causes the current page to be handed off
      to Emacs for editing.
      If you want to edit the source, first switch to &lt;em&gt;source
      view&lt;/em&gt; by hitting &lt;code&gt;\&lt;/code&gt; before
      invoking      print.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;KEYMAP:???:EDITTEXTAREA	# use external editor
      to
      edit a form textarea&lt;/code&gt;&lt;br/&gt;
      This sets lynx up so that when editing a multiline textarea, you
      can hand off the editing job to Emacs. This is particularly
      useful for editing Wiki pages. Replace the
      &lt;code&gt;??&lt;/code&gt;
      with
      the desired key sequence.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;PRETTYSRC:TRUE&lt;br/&gt;
      SOURCE_CACHE:MEMORY&lt;/code&gt;&lt;br/&gt;
      The above two settings make the edit source functionality more
      pleasant to use.&lt;/li&gt;
      &lt;li&gt; &lt;code&gt;PRINTER:W3:emacsclient -e &#39;(w3-open-local
      &quot;%s&quot;)&#39;:TRUE&lt;/code&gt;&lt;br/&gt;
      The above creates a &lt;em&gt;W3&lt;/em&gt; menu item in the
      &lt;em&gt;print
      menu&lt;/em&gt;. Invoking this  causes Emacs/W3 to display the
      current
      page --- again switch to &lt;code&gt;source view&lt;/code&gt; before
      invoking
      this so that Emacs/W3 gets handed the HTML markup.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;h4&gt;Script &lt;code&gt;bks-unpack.pl&lt;/code&gt;&lt;/h4&gt;
      &lt;pre&gt;
      #!/usr/bin/perl -w
      #$Id: bks.pl,v 1.1 2003/07/04 15:41:55 tvraman Exp tvraman $
      #Description: Bookshare downloader for Lynx
      use strict;
      my $location=&quot;$ENV{HOME}/books/book-share&quot;;
      my $password = &#39;xxxxxxx&#39;;
      my $grabbed = shift;
      my $target = shift;
      my $dir =qx(basename $target .bks);
      chomp $dir;
      my $where = &quot;$location/$dir&quot;;
      qx(mkdir -p $where);
      qx(mv $grabbed  $where/$target);
      chdir $where;
      qx(echo $password | bks-unpack -q $target 1&amp;gt;&amp;amp;-
      2&amp;gt;&amp;amp;- &amp;amp;);
      &lt;/pre&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114074992344461641'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114074992344461641'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/02/emacspeak-connecting-lynx-and-w3.html' title='Emacspeak: Connecting Lynx And W3 '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114057538920932076
    </id>
    <published>
      2006-02-21T18:29:00.000-08:00
    </published>
    <updated>2006-02-21T18:29:49.256-08:00
    </updated>
    <title type='text'>
      Emacspeak, SuDoKu And History 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Here is a small enhancement to &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2006/02/playing-sudoku-using-auditory-feedback.html&quot;&gt;playing
      SuDoKu&lt;/a&gt; in Emacspeak.
      The feature is probably generally useful  i.e., it&#39;s not
      specific      to eyes-free interaction,
      but its presence encourages one to try different solution
      strategies.&lt;/p&gt;
      &lt;p&gt;Commands
      &lt;code&gt;emacspeak-sudoku-history-push&lt;/code&gt;
      bound to
      &lt;code&gt;m&lt;/code&gt; and 
      &lt;code&gt;emacspeak-sudoku-history-pop&lt;/code&gt;
      bound to &lt;code&gt;M&lt;/code&gt; allow one to
      &lt;em&gt;mark&lt;/em&gt; interesting
      states in the game and return to thesee prior states with a single
      keystroke. This means that when one is confronted with  one of
      two choices, with no apparent additional information on which 
      route to take, it becomes possible to push that state on to the
      history stack, try one of the alternatives and backtrack if
      necessary.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114057538920932076'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114057538920932076'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/02/emacspeak-sudoku-and-history.html' title='Emacspeak, SuDoKu And History '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-114048639986049011
    </id>
    <published>
      2006-02-20T17:46:00.000-08:00
    </published>
    <updated>2006-02-20T17:46:39.903-08:00
    </updated>
    <title type='text'>
      Emacspeak And Voice Locking Using Aural CSS 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      
      &lt;p&gt;This is slightly reformatted from what was posted to the
      Emacspeak mailing list as separate message.&lt;/p&gt;
      &lt;ol&gt;
      &lt;li&gt;Emacspeak defines a number of voice overlays such as
      &lt;code&gt;voice-bolden&lt;/code&gt;, and
      &lt;code&gt;voice-lighten&lt;/code&gt; that can be applied to a
      given voice to change what it sounds like.&lt;/li&gt;
      
      &lt;li&gt;Voice overlays are defined in terms of Aural CSS (&lt;a
      
      href=&quot;http://www.w3.org/tr/css2/aural.html&quot;&gt;ACSS&lt;/a&gt;)
      to
      keep them independent of a specific TTS engine.&lt;/li&gt;
      
      &lt;li&gt;For each such overlay there is a corresponding
      &lt;code&gt;&amp;lt;overlay-name&amp;gt;-settings&lt;/code&gt;
      variable
      that can be customized via
      custom.&lt;/li&gt;
      
      &lt;li&gt;The numbers in &lt;code&gt;voice-bolden-settings as an
      example&lt;/code&gt;:&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;table border=&quot;2&quot; cellpadding=&quot;5&quot;&gt;
      &lt;thead&gt;
      &lt;tr&gt;
      &lt;th&gt;Setting&lt;/th&gt;
      &lt;th&gt;Value&lt;/th&gt;
      &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
      &lt;tr&gt;
      &lt;td&gt;family&lt;/td&gt;
      &lt;td&gt;nil&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;average-pitch&lt;/td&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;pitch-range&lt;/td&gt;
      &lt;td&gt;6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;stress&lt;/td&gt;
      &lt;td&gt;6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;richness&lt;/td&gt;
      &lt;td&gt;nil&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;punctuation&lt;/td&gt;
      &lt;td&gt;nil&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;/table&gt;
      Unset values (&lt;code&gt;nil&lt;/code&gt;) show up as
      &quot;unspecified&quot; in the customize
      interface.
      
      &lt;ol&gt;
      &lt;li&gt;Do not directly customize
      &lt;code&gt;voice-bolden&lt;/code&gt;
      and friends, instead
      customize the corresponding
      &lt;code&gt;voice-bolden-settings&lt;/code&gt;, since that
      ensures that all voices that are defined in terms of
      &lt;code&gt;voice-bolden&lt;/code&gt; get correctly
      updated.&lt;/li&gt;
      
      &lt;li&gt;Discovering what to customize:&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;p&gt;Command
      &lt;code&gt;emacspeak-show-personality-at-point&lt;/code&gt; (bound
      by
      default
      to C-e M-v) will show you the value of properties personality and
      face at point. A recent update I implemented last weekend makes
      this more useful, so make sure you do a CVS update; earlier this
      command used to display the ACSS setting --- now it displays the
      abstract name. Describe-variable on thesee names should tell you
      what to customize; so as an example:&lt;/p&gt;
      
      &lt;p&gt;Put point on a comment line, and hit &lt;code&gt;C-e
      M-v&lt;/code&gt;:
      you will hear&lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      Personality emacspeak-voice-lock-comment-personality
      Face font-lock-comment-delimiter-face
      &lt;/pre&gt;
      
      &lt;p&gt;Describe-variable of
      &lt;code&gt;emacspeak-voice-lock-comment-personality&lt;/code&gt;
      gives:&lt;/p&gt;
      
      &lt;pre class=&quot;example&quot;&gt;
      emacspeak-voice-lock-comment-personality&#39;s value is
      acss-p0-s0-all
      
      Documentation:
      Personality used for font-lock-comment-face
      This personality uses  voice-monotone whose  effect can be changed
      globally by customizing voice-monotone-settings.
      
      &lt;/pre&gt;
      
      
      &lt;h3&gt;How It All Works&lt;/h3&gt;
      
      &lt;p class=&quot;first&quot;&gt;Here is a brief explanation of the
      connection between
      &lt;code&gt;voice-bolden&lt;/code&gt; and its associated
      &lt;code&gt;voice-bolden-settings&lt;/code&gt;.&lt;/p&gt;
      
      
      &lt;ol&gt;
      &lt;li&gt;Voice  settings are initially in
      &lt;code&gt;voice-bolden-settings&lt;/code&gt; which is a list
      of numbers.&lt;/li&gt;
      
      &lt;li&gt;That list of numbers needs to be translated to appropriate
      device-specific codes to send to the TTS engine.&lt;/li&gt;
      
      &lt;li&gt;You do not want to do this translation
      &lt;em&gt;each&lt;/em&gt; time you
      speak something.&lt;/li&gt;
      
      &lt;li&gt;So when &lt;code&gt;voice-bolden&lt;/code&gt; is defined,
      the
      definition happens in
      two steps:&lt;/li&gt;
      &lt;/ol&gt;
      
      &lt;ul&gt;
      &lt;li&gt;The list of settings is stored away in
      &lt;code&gt;voice-bolden-settings&lt;/code&gt;,&lt;/li&gt;
      &lt;li&gt;A corresponding voice-name is generated ---
      
      
      &lt;code&gt;acss-a&amp;lt;n&amp;gt;-p&amp;lt;n&amp;gt;-r&amp;lt;n&amp;gt;-s&amp;lt;n&amp;gt;&lt;/code&gt; and the corresponding control codes to
      send to the device are stored away in a hash-table keyed by the
      above      symbol.&lt;/li&gt;
      
      &lt;li&gt;Finally, &lt;code&gt;voice-bolden&lt;/code&gt; is assigned
      the
      above symbol.&lt;/li&gt;
      &lt;/ul&gt;
      
      
      &lt;h3&gt;What this gives is:&lt;/h3&gt;
      
      &lt;ol&gt;
      &lt;li&gt;The ability to customize the voice via custom by editing
      the list of numbers in
      &lt;code&gt;voice-bolden-settings&lt;/code&gt;&lt;/li&gt;
      
      &lt;li&gt;When that list is edited,
      &lt;code&gt;voice-bolden&lt;/code&gt; is arranged to be
      updated automatically.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;h3&gt;Other Useful Commands&lt;/h3&gt;
      &lt;p&gt;In addition, commands
      &lt;code&gt;emacspeak-wizards-generate-voice-sampler&lt;/code&gt;
      can be
      useful in generating a buffer that shows what the various ACSS
      settings sound like.
      Command &lt;code&gt;emacspeak-wizards-voice-sampler&lt;/code&gt; can
      be
      used
      to apply a specific voice to a region of text while experimenting
      with the various settings.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114048639986049011'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/114048639986049011'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/02/emacspeak-and-voice-locking-using.html' title='Emacspeak And Voice Locking Using Aural CSS '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113970989256663836
    </id>
    <published>
      2006-02-11T18:04:00.000-08:00
    </published>
    <updated>2006-02-11T18:04:52.580-08:00
    </updated>
    <title type='text'>Playing
      SuDoKu Using Auditory Feedback 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Emacspeak speech-enables &lt;em&gt;SuDoKu&lt;/em&gt;
      implemented
      by &lt;a
      
      
      href=&quot;http://www.columbia.edu/~jr2075/elisp/index.html&quot;&gt;sudoku.el&lt;/a&gt;.
      Speech-enabling games is an effective means of discovering what
      additions one needs to make to an auditory interface for
      working effectively in an eyes-free environment --- this was
      aptly demonstrated a few years ago by identifying interesting
      &lt;em&gt;conversational gestures&lt;/em&gt; by speech-enabling the
      game
      of
      &lt;code&gt;Tetris&lt;/code&gt; --- see  &lt;a
      
      
      href=&quot;http://emacspeak.sourceforge.net/raman/publications/assets-98/paper.pdf&quot;&gt;Conversational
      Gestures For The Audio Desktop&lt;/a&gt; from Assets 1998.&lt;/p&gt;
      
      
      &lt;h4&gt;Advising Interactive Commands&lt;/h4&gt;
      &lt;p&gt;As with speech-enabling any Emacs module,
      &lt;code&gt;emacspeak-sudoku&lt;/code&gt;
      &lt;em&gt;advices&lt;/em&gt;
      all interactive
      commands to produce spoken feedback.
      In addition to speaking the cell moved to, all navigation
      commands produce an auditory icon that is a function of whether
      the cell value is mutable ---  original values cannot be changed
      and this is indicated with a distinctive icon.&lt;/p&gt;
      
      &lt;h4&gt;Additional Interactive Commands&lt;/h4&gt;
      
      &lt;p&gt;Playing SuDoKu effectively requires one to build a good
      mental
      image of the state of the board as well as the ability to
      effectively query the game for currently active constraints. The
      eye&#39;s ability to  quickly move around the board and perceive
      row,      column and sub-square constraints needs to be compensated
      for in
      an eyes-free environment. As an example, it is too difficult to
      build the necessary mental model by just listening to the board
      spoken aloud, or by listening to idnividual cells by navigating
      to them.&lt;/p&gt;
      
      &lt;p&gt;Here are the set of additional interactive commands that
      needed to be added in order to be able to play the game
      effectively.&lt;/p&gt;
      
      &lt;dl&gt;
      &lt;dt&gt;&lt;code&gt;r&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speak current row.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;c&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speak current column&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;s&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speak current sub-square.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;R&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speak number of remaining cells in current row.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;C&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speak number of remaining cells in current
      column.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;S&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speak number of remaining cells in current
      sub-square.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;d&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the sub-square below the current
      sub-square.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;u&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the sub-square above the current
      sub-square.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;n&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the next sub-square.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;p&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the previous sub-square.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;a&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the beginning of current row.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;e&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the end of the current row.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;t&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the top of the current column.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;b&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Move to the bottom of the current column.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;,&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speaks information about the overall
      &lt;em&gt;distribution&lt;/em&gt; of
      numbers on the board.
      &lt;ul&gt;
      &lt;li&gt;&lt;code&gt;d&lt;/code&gt; --- Conveys how many instances
      of
      each digit
      have been filled in.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;s&lt;/code&gt; --- Conveys number of remaining
      cells in each
      sub-square.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;r&lt;/code&gt; --- Conveys number of remaining
      cells in each
      row.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;c&lt;/code&gt; --- Conveys number of remaining
      cells in each
      column.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;/&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speaks number of remaining cells in the current
      board.&lt;/dd&gt;
      &lt;dt&gt;&lt;code&gt;.&lt;/code&gt;&lt;/dt&gt;
      &lt;dd&gt;Speaks value in current cell.&lt;/dd&gt;
      &lt;/dl&gt;
      
      &lt;p&gt;Notes on how invormation is spoken:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Numbers are spoken in groups of 3 to achieve effective
      intonation.&lt;/li&gt;
      &lt;li&gt;When navigating by sub-squares, point
      &lt;em&gt;always&lt;/em&gt; moves
      to the top left corner of the sub-square.&lt;/li&gt;
      &lt;li&gt;Additional commands bound to &lt;code&gt;M-r&lt;/code&gt;,
      &lt;code&gt;M-c&lt;/code&gt; and &lt;code&gt;M-s&lt;/code&gt; erase
      the
      current row,
      column or sub-square respectively. These commands would probably
      be convenient to have independent of whether one is using visual
      output.&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;h4&gt;Effectiveness Of The Resulting Interface&lt;/h4&gt;
      
      &lt;p&gt;With the above interface in place, the simpler levels of
      the      game are a breeze, levels &lt;em&gt;difficult&lt;/em&gt;
      and      &lt;em&gt;evil&lt;/em&gt;
      are sufficiently challenging to be fun.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113970989256663836'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113970989256663836'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/02/playing-sudoku-using-auditory-feedback.html' title='Playing SuDoKu Using Auditory Feedback '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113842396545550696
    </id>
    <published>
      2006-01-27T20:52:00.000-08:00
    </published>
    <updated>2006-01-27T20:52:45.470-08:00
    </updated>
    <title type='text'>Browsing
      Sourceforge Download Servers 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Sourceforge is a nice service, but it can also be painful
      to      use because of the heavy-weight Web page design, and the
      need to
      repeatedly click before you get the download you want.&lt;/p&gt;
      &lt;p&gt;The most irksome of thesee is the download mechanism
      provided      by Sourceforge --- where you first need to browse a
      list of
      download servers, pick a mirror, and then download what you
      want. 
      Emacspeak implements a &lt;em&gt;Smart URL&lt;/em&gt; that enables
      one to
      download from Sourceforge in a single step.&lt;/p&gt;
      &lt;p&gt;By default, this uses a North American mirror; the behavior
      can be customized if outside the US.
      Use &lt;em&gt;smart URL&lt;/em&gt; &lt;code&gt;Sourceforge Browse
      Mirror&lt;/code&gt; and
      specify the name of a SF hosted project when prompted.
      This brings up the index page for the project&#39;s download area,
      sorted by date. Move to the bottom of the page and   hit
      &lt;code&gt;b&lt;/code&gt; to move to the latest available
      download.&lt;/p&gt;
      &lt;p&gt;The &lt;em&gt;smart URL&lt;/em&gt; sets up the W3 buffer
      with a
      context-sensitive download function; when on a download link, hit
      &lt;code&gt;C-d&lt;/code&gt;
      to start downloading. This command will prompt for the URL;
      rather than hitting &lt;code&gt;return&lt;/code&gt; (which would
      bring
      you to
      the &lt;em&gt;browse mirrors&lt;/em&gt; page, hit
      &lt;code&gt;M-p&lt;/code&gt; to get the
      download URL for your  SF mirror.
      Note that this wizard uses &lt;code&gt;GNU wget&lt;/code&gt; to
      perform
      the
      download
      via Emacs module &lt;code&gt;w3-wget&lt;/code&gt;.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113842396545550696'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113842396545550696'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/browsing-sourceforge-download-servers.html' title='Browsing Sourceforge Download Servers '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113842342844647994
    </id>
    <published>
      2006-01-27T20:43:00.000-08:00
    </published>
    <updated>2006-01-27T20:43:48.903-08:00
    </updated>
    <title type='text'>BBC
      Channels On Emacspeak 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Since the BBC&#39;s various channels are what I listen to
      the
      most, launching BBC channels has always been a couple of
      keystrokes in Emacspeak. As a first step, directory
      &lt;code&gt;realaudio/radio&lt;/code&gt; contains shortcut files for
      launching  live streams from the various BBC channels.&lt;/p&gt;
      &lt;p&gt;
      In addition, module &lt;code&gt;emacspeak-url-template&lt;/code&gt;
      defines a
      number of &lt;em&gt;Smart URLs&lt;/em&gt; for single-click access to
      BBC
      programs. The ones I use the most are:&lt;/p&gt;
      
      &lt;ul&gt;
      &lt;li&gt;&lt;em&gt;Smart URL&lt;/em&gt; &lt;code&gt;BBC Channels On
      Demand&lt;/code&gt;, and &lt;/li&gt;
      &lt;li&gt;&lt;em&gt;Smart URL&lt;/em&gt; &lt;code&gt;BBC Genres On
      Demand&lt;/code&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
      These &lt;em&gt;smart URLs&lt;/em&gt; prompt for the channel or
      genre      respectively and bring up a Web page that lists the
      various shows
      that are available --- note that the BBC archives shows for a
      whole week.
      The resulting Web page is easy to browse in W3; the most
      effective way to skim the buffer is to repeatedly hit
      &lt;code&gt;i&lt;/code&gt; which moves through the various items on
      the
      page.
      Hitting &lt;code&gt;e e&lt;/code&gt; (that&#39;s the letter
      &lt;code&gt;e&lt;/code&gt;
      &lt;em&gt;twice&lt;/em&gt;) while on a hyperlink will launch the
      corresponding media stream by calling   a
      &lt;em&gt;context-aware&lt;/em&gt;
      command that knows about transforming the URL to one that
      accesses the program stream; --- note that simply following the
      hyperlink will get you first to a page about the program, rather
      than to the program stream itself.&lt;/p&gt;
      &lt;p&gt;To find out what channels and genres are available, browse
      the
      BBC Web site --- channel and genre names are not hard-wired into
      Emacspeak since thesee can change over time with channels and
      genres being added or renamed.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113842342844647994'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113842342844647994'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/bbc-channels-on-emacspeak.html' title='BBC Channels On Emacspeak '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113832891320852876
    </id>
    <published>
      2006-01-26T18:28:00.000-08:00
    </published>
    <updated>2006-01-26T18:28:33.273-08:00
    </updated>
    <title type='text'>
      Emacspeak World Clock For Timezone Travel 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Command &lt;code&gt;emacspeak-speak-time&lt;/code&gt; bound
      to
      &lt;code&gt;C-e
      t&lt;/code&gt; speaks the current time. 
      An additional convenience offered by this keystroke is to get the
      time at a specified time zone using Emacs&#39; completion
      facility. &lt;/p&gt;
      &lt;p&gt;To use this feature, simply precede  the keystroke with an
      &lt;code&gt;interactive prefix arg&lt;/code&gt; i.e., use
      &lt;code&gt;C-u
      C-e
      t&lt;/code&gt;.
      This will prompt for the timezone in the minibuffer. Using two
      &lt;code&gt;C-u C-u&lt;/code&gt; will set the  default timezone
      after      speaking the time --- a useful way of avoiding jet-lag as
      you
      travel.&lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113832891320852876'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113832891320852876'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/emacspeak-world-clock-for-timezone.html' title='Emacspeak World Clock For Timezone Travel '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113795676485627531
    </id>
    <published>
      2006-01-22T11:06:00.000-08:00
    </published>
    <updated>2006-01-22T11:06:05.263-08:00
    </updated>
    <title type='text'>
      Emacspeak Web Wizards: Obtaining Context From The Calendar 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Emacspeak implements a number of &lt;code&gt;smart
      URLs&lt;/code&gt; in
      module &lt;code&gt;emacspeak-url-template.el&lt;/code&gt; --- see
      earlier
      post on &lt;a
      
      
      href=&quot;http://emacspeak.blogspot.com/2005/12/emacspeak-web-tricks-web-command-line.html&quot;&gt;Web
      Command Line&lt;/a&gt;. Many of thesee &lt;code&gt;smart
      URLs&lt;/code&gt;
      prompt
      the user for the date, e.g. you can use &lt;code&gt;smart
      URL&lt;/code&gt;&lt;em&gt;NPR On Demand&lt;/em&gt; to play  archived
      NPR
      shows.
      &lt;/p&gt;
      &lt;p&gt;The most intuitive means of specifying a date is of course
      using a &lt;code&gt;calendar&lt;/code&gt; that functions as a
      &lt;em&gt;date-picker&lt;/em&gt;, and Emacs has a very powerful
      built-in
      calendar. Emacspeak ties thesee two together by arranging for
      commands that prompt for a date to use the &lt;em&gt;current
      date&lt;/em&gt;
      in the  Emacs Calendar as the default. So the easiest way to play
      &lt;em&gt;NPR Morning Edition&lt;/em&gt; for  &lt;em&gt;Monday,
      January
      2, 2006&lt;/em&gt;
      is to do the following:
      &lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Switch to the Emacs Calendar and move to the desired date
      &lt;em&gt;Monday January 2, 2006&lt;/em&gt; by pressing
      &lt;code&gt;gd&lt;/code&gt;.
      &lt;/li&gt;
      &lt;li&gt;Invoke the &lt;em&gt;NPR On Demand&lt;/em&gt;
      &lt;code&gt;smart
      URL&lt;/code&gt; by
      pressing &lt;code&gt;C-e u RET NPR  RET&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Specify the program code for &lt;em&gt;Morning
      Edition&lt;/em&gt; by
      pressing &lt;code&gt;me RET &lt;/code&gt;&lt;/li&gt;
      &lt;li&gt; Hit enter to pick the default date that is offered in the
      minibuffer.&lt;/li&gt;
      &lt;li&gt;Sit back and listen ...&lt;/li&gt;
      &lt;/ul&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113795676485627531'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113795676485627531'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/emacspeak-web-wizards-obtaining.html' title='Emacspeak Web Wizards: Obtaining Context From The Calendar '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113755198213159076
    </id>
    <published>
      2006-01-17T18:39:00.000-08:00
    </published>
    <updated>2006-01-17T18:39:42.490-08:00
    </updated>
    <title type='text'>Viewing
      Atom Feeds Within Emacspeak 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;The most effective way of viewing Atom Feeds in Emacspeak
      is      to use command
      &lt;code&gt;emacspeak-atom-display&lt;/code&gt; and
      specifying
      the URL of the feed when prompted. Thus, &lt;code&gt;M-x
      emacspeak-atom-display RET
      http://emacspeak.blogspot.com/atom.xml&lt;/code&gt; displays a Web
      page
      generated from the Emacspeak Blog.&lt;/p&gt;
      &lt;p&gt;Notice the following in the generated Web page:&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;It starts with a navigable table of contents.&lt;/li&gt;
      &lt;li&gt;Each Blog entry has a  link labeled
      &lt;code&gt;edit&lt;/code&gt; next to
      it.&lt;/li&gt;
      &lt;li&gt;Each Blog entry ends with a link labeled
      &lt;code&gt;Bookmark&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;There is a link labeled &lt;code&gt;Post&lt;/code&gt; at
      the
      top of the
      page.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;The above links help you easily create and edit posts to
      the      Blog if you have write access using commands provided by
      module
      &lt;code&gt;atom-blogger&lt;/code&gt;.
      Eventually, I may add commands to thesee hyperlinks to
      automatically invoke the appropriate command from
      &lt;code&gt;atom-blogger&lt;/code&gt;; for now, I find it 
      sufficiently
      convenient to copy the URL under point to the
      &lt;code&gt;kill-ring&lt;/code&gt; and later yank it back into the
      minibuffer
      when prompted by &lt;code&gt;atom-blogger&lt;/code&gt;.&lt;/p&gt;
      &lt;p&gt;Finally, note that this and subsequent posts to this Blog
      will
      show  up automatically on the &lt;a
      
      
      href=&quot;http://www.cs.vassar.edu/~priestdo/emacspeak/&quot;&gt;Emacspeak
      Mailing List&lt;/a&gt; at Vassar.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113755198213159076'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113755198213159076'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/viewing-atom-feeds-within-emacspeak.html' title='Viewing Atom Feeds Within Emacspeak '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113752981092887635
    </id>
    <published>
      2006-01-17T12:30:00.000-08:00
    </published>
    <updated>2006-01-17T12:39:36.013-08:00
    </updated>
    <title type='text'>Viewing
      Formatted Source Code In Emacs/W3 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;div&gt;
      &lt;p&gt;While reading online texts on programming in Python and
      Ruby,
      I noticed that Emacspeak was not announcing indented lines in
      preformatted source-code examples, even with &lt;code&gt;audio
      indentation&lt;/code&gt; turned on.
      The reason is that many of thesee texts use an HTML non-breaking
      space for indentation, and though W3 was rendering thesee
      correctly, the default syntax table in W3 had not defined the
      resulting &lt;code&gt;octal 240&lt;/code&gt; to be of class
      white-space. Consequently, Emacspeak&#39;s audio indentation code
      was      not treating the non-breaking space as white
      space.&lt;/p&gt;
      &lt;p&gt;I&#39;ve checked in a patch to
      &lt;code&gt;emacspeak-w3.el&lt;/code&gt; that
      modifies the syntax table in &lt;code&gt;w3-mode&lt;/code&gt;
      by adding the appropriate lines to
      &lt;code&gt;w3-mode-hook&lt;/code&gt;.
      &lt;/p&gt;
      &lt;/div&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113752981092887635'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113752981092887635'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/viewing-formatted-source-code-in.html' title='Viewing Formatted Source Code In Emacs/W3 '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113726801747885464
    </id>
    <published>
      2006-01-14T11:46:00.000-08:00
    </published>
    <updated>2006-01-14T11:46:57.486-08:00
    </updated>
    <title type='text'>
      Speech-Enabled ATOM-Blogger 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      Module &lt;code&gt;atom-blogger&lt;/code&gt; is a light-weight Emacs
      client
      for creating or editing &lt;em&gt;blogger&lt;/em&gt; posts using
      ATOM.
      Emacspeak bundles &lt;code&gt;atom-blogger&lt;/code&gt; and
      speech-enables it
      via module &lt;code&gt;emacspeak-atom-blogger&lt;/code&gt;.
      &lt;/p&gt;
      &lt;p&gt;Module &lt;code&gt;emacspeak-setup.el&lt;/code&gt; has been
      updated to set
      up the Emacs&#39; &lt;code&gt;load-path&lt;/code&gt; to locate
      package
      &lt;code&gt;atom-blogger&lt;/code&gt;, so if correctly installed,
      Emacspeak
      users should be able to launch and use
      &lt;code&gt;atom-blogger&lt;/code&gt;
      with no further configuration.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113726801747885464'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113726801747885464'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/speech-enabled-atom-blogger_14.html' title='Speech-Enabled ATOM-Blogger '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113707573746854118
    </id>
    <published>
      2006-01-12T06:22:00.000-08:00
    </published>
    <updated>2006-01-12T06:22:17.530-08:00
    </updated>
    <title type='text'>
      Emacspeak And Ruby 
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;Emacspeak now speech-enables ruby-mode to support
      developing      Web applications using &lt;code&gt;Ruby On
      Rails&lt;/code&gt;.
      I presently use &lt;code&gt;nxml-mode&lt;/code&gt; for editing the
      &lt;code&gt;.rhtml&lt;/code&gt; files, but am looking for an
      alternative
      to
      using multi-mode or its variants when editing the embedded Ruby
      code.
      Sadly, one has to turn off &lt;code&gt;nxml-mode&lt;/code&gt;&#39;s
      validity
      checking while editing &lt;code&gt;.rhtml&lt;/code&gt; files ---
      otherwise it
      complains about the &lt;code&gt;&amp;lt;%&lt;/code&gt; directives.
      &lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113707573746854118'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113707573746854118'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/emacspeak-and-ruby.html' title='Emacspeak And Ruby '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113622417010298115
    </id>
    <published>
      2006-01-02T09:49:00.000-08:00
    </published>
    <updated>2006-01-02T09:49:33.126-08:00
    </updated>
    <title type='text'>
      Emacspeak Wizard: Recording Audio Streams For Later Playback
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      Emacspeak includes  a large collection of wizards implemented in
      module &lt;code&gt;emacspeak-wizards.el&lt;/code&gt;
      One of thesee ---&lt;code&gt;emacspeak-wizrds-rivo&lt;/code&gt; 
      works      hand-in-hand with script
      &lt;code&gt;etc/rivo.pl&lt;/code&gt;
      to provide a simple &lt;strong&gt;record for later
      playback&lt;/strong&gt;        facility that can be used to record
      live
      realaudio streams for
      future playback. This is useful for  listening to live broadcasts
      at a more convenient time.&lt;/p&gt;
      &lt;p&gt;Wizard &lt;code&gt;emacspeak-wizrds-rivo&lt;/code&gt;
      prompts
      for the time
      at which to record, the length of the recording, the stream to
      record, and the location in which the recording is to be stored.
      It then uses command &lt;code&gt;trplayer&lt;/code&gt; (text-mode
      RealPlayer)
      with command  &lt;code&gt;vsound&lt;/code&gt;
      to capture the audio stream, and  converts the result to MP3
      using command &lt;code&gt;lame&lt;/code&gt;.
      ToDo: With &lt;code&gt;mplayer&lt;/code&gt; now able to play
      RealAudio
      streams, the &lt;code&gt;etc/rivo.pl&lt;/code&gt; script should be
      updated to
      use &lt;code&gt;mplayer&lt;/code&gt; since this will :&lt;/p&gt;
      &lt;ul&gt;
      &lt;li&gt;Remove the &lt;code&gt;vsound&lt;/code&gt;
      dependency.&lt;/li&gt;
      &lt;li&gt;Enable us to record more than just RealAudio
      streams.&lt;/li&gt;      &lt;/ul&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113622417010298115'/>
    <link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/20280042/posts/default/113622417010298115'/>
    <link rel='alternate' type='text/html' href='https://emacspeak.blogspot.com/2006/01/emacspeak-wizard-recording-audio.html' title='Emacspeak Wizard: Recording Audio Streams For Later Playback'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113605677499310089
    </id>
    <published>
      2005-12-31T11:19:00.000-08:00
    </published>
    <updated>2005-12-31T11:19:35.036-08:00
    </updated>
    <title type='text'>Emacs
      Tip: Viewing Commands Available On A Prefix Key
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      Emacs, and consequently Emacspeak, uses a number of multi-key
      sequences. The initial key that makes up such a multi-key
      sequence --- AKA the &lt;code&gt;prefix-key&lt;/code&gt;
      that leads to all Emacspeak commands is &lt;code&gt;C-e&lt;/code&gt;
      (&lt;code&gt;control-e)&lt;/code&gt;.
      &lt;/p&gt;
      &lt;p&gt;Pressing any &lt;code&gt;prefix-key&lt;/code&gt; followed
      by the
      &lt;code&gt;help-key&lt;/code&gt; (&lt;code&gt;C-h&lt;/code&gt;)
      results
      in Emacs
      displaying a &lt;strong&gt;*Help*&lt;/strong&gt; buffer that lists
      all
      key-sequences beginning with that prefix. &lt;/p&gt;
      
      &lt;p&gt;This can be a very useful way of quickly seeing what
      keyboard
      commands are available ---  as  the resulting listing is 
      shorter than what is produced by &lt;code&gt;C-h b&lt;/code&gt;
      (command
      describe-bindings) which lists all key-bindings.
      &lt;/p&gt;
      &lt;p&gt;To  use this feature to review Emacspeak&#39;s
      key-bindings, I have now moved command
      &lt;code&gt;emacspeak-learn-emacs-mode&lt;/code&gt; to
      &lt;code&gt;C-h
      C-l&lt;/code&gt;
      and &lt;code&gt;C-e F1&lt;/code&gt;
      from its original key-binding of &lt;code&gt;C-e C-h&lt;/code&gt; 
      ---
      thechange is checked into CVS.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280042/posts/default/113605677499310089'/>
    <link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280042/posts/default/113605677499310089'/>
    <link rel='alternate' type='text/html' href='http://emacspeak.blogspot.com/2005/12/emacs-tip-viewing-commands-available.html' title='Emacs Tip: Viewing Commands Available On A Prefix Key'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113596114050756312
    </id>
    <published>
      2005-12-30T08:45:00.000-08:00
    </published>
    <updated>2006-01-01T13:25:05.803-08:00
    </updated>
    <title type='text'>Using
      The New MPlayer With ALSA Support &#xa;
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      &lt;p&gt;
      New versions of the Linux &lt;code&gt;mplayer&lt;/code&gt;
      can now play RealMedia files in addition to the various DVD and
      Windows
      audio and video streams.
      As an added bonus, &lt;code&gt;mplayer&lt;/code&gt; can be built to
      use
      ALSA ---(note that default RPMs available on the Web still default
      to OSS
      as of December 2006).
      This, with the additional support for  newer RealMedia formats has
      finally caused me to switch away from
      &lt;code&gt;trplayer&lt;/code&gt;
      a---a command line RealPlayer that was built against RealPlayer
      8.0&lt;/p&gt;
      &lt;p&gt;Note that building &lt;code&gt;mplayer&lt;/code&gt; from
      source
      to include ALSA support, and locating all the  codecs you need will
      require a few Google searches. Specifically, to play NPR streams,
      you      will need to grab &lt;code&gt;avisynth.dll&lt;/code&gt;
      from the
      SourceForge project of the same name. But once this is done,
      &lt;code&gt;mplayer&lt;/code&gt; will happily play multiple streams
      of
      audio without requiring multichannel support from the sound card.
      For      Emacspeak users this means that you get auditory icons, and
      more
      importantly software TTS while listening to audio streams.&lt;/p&gt;
      &lt;p&gt;
      To use software TTS while &lt;code&gt;mplayer&lt;/code&gt; is
      playing      audio streams requires that you use a TTS server that
      uses ALSA; the
      default Emacspeak servers still use OSS.
      To build a TTS server for IBM ViaVoice TTS, obtain Emacspeak sources
      from
      CVS, and follow the instructions in file
      &lt;code&gt;servers/linux-outloud/ALSA&lt;/code&gt;.
      &lt;/p&gt;
      &lt;p&gt;As of a few weeks ago, The Emacspeak CVS repository has
      been      updated so that all access to streaming media goes through
      &lt;code&gt;mplayer&lt;/code&gt; by default.  Make sure to configure
      your
      &lt;code&gt;mplayer&lt;/code&gt; with a smaller cache size if you
      use it
      exclusively for streaming audio; by default it uses a rather
      large cache, and streaming realaudio often takes a long time to
      start before the cache is configured to be something smaller; I
      use a cache size of &lt;code&gt;64kb&lt;/code&gt; on my
      laptop.&lt;/p&gt;
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280042/posts/default/113596114050756312'/>
    <link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280042/posts/default/113596114050756312'/>
    <link rel='alternate' type='text/html' href='http://emacspeak.blogspot.com/2005/12/using-new-mplayer-with-alsa-support.html' title='Using The New MPlayer With ALSA Support &#xa;'/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
  <entry>
    <id>tag:blogger.com,1999:blog-20280042.post-113589454437902784
    </id>
    <published>
      2005-12-29T14:15:00.000-08:00
    </published>
    <updated>2006-01-01T13:25:53.083-08:00
    </updated>
    <title type='text'>Blogging
      From Inside Emacs&#xa;  
    </title>
    <content type='html'>&lt;div
      xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
      
      &lt;p&gt;
      I&#39;m posting this using a bare-boned
      &lt;code&gt;atom-blogger&lt;/code&gt; that I implemented this
      morning.
      It uses &lt;code&gt;curl&lt;/code&gt; to  process the HTTP Post
      Request.&lt;/p&gt;
      &lt;h3&gt;Editing Previous Entries&lt;/h3&gt;
      &lt;p&gt;What&#39;s more, the bare-bones atom-blogger can now edit
      previous posts.
      This is done by getting the desired entry, filtering it for elements
      that
      should not be present when submitting updates, and adding a
      &lt;code&gt;generator&lt;/code&gt; element --- all of thesee steps
      are      required by the Blogger API.
      Unwanted elements are filtered out using
      &lt;code&gt;xsltproc&lt;/code&gt;.
      &lt;/p&gt;
      
      &lt;/div&gt;
    </content>
    <link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280042/posts/default/113589454437902784'/>
    <link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280042/posts/default/113589454437902784'/>
    <link rel='alternate' type='text/html' href='http://emacspeak.blogspot.com/2005/12/blogging-from-inside-emacs.html' title='Blogging From Inside Emacs&#xa;  '/>
    <author>
      <name>T. V. Raman
      </name>
      <uri>
        http://www.blogger.com/profile/03589687652590194428
      </uri>
      <email>noreply@blogger.com
      </email>
      <gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/>
    </author>
  </entry>
</feed>
