<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for rupert</title>
    <link>http://www.advogato.org/person/rupert/</link>
    <description>Advogato blog for rupert</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Fri, 25 Jul 2008 16:23:06 GMT</pubDate>
    <item>
      <pubDate>Sun, 10 Feb 2002 19:48:22 GMT</pubDate>
      <title>10 Feb 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=42</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=42</guid>
      <description>&lt;pre&gt;
\documentclass[12pt]{article}
\begin{document}
\begin{center}
\LARGE{This weekend, I learnt how to format and write simple
 documents using \LaTeX~!}
\end{center}
It's amazing how easy the language is to learn and use, and
how good it makes documents look.  I think I'm going to
start doing the documentation for ALICE in both plaintext
and PostScript.
\end{document}
&lt;/pre&gt;</description>
    </item>
    <item>
      <pubDate>Thu, 7 Feb 2002 08:44:31 GMT</pubDate>
      <title>7 Feb 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=41</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=41</guid>
      <description>&lt;b&gt;Hacking&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
Submitted a patch to fix a couple of cursor movement bugs in
&lt;i&gt;pyCFontz&lt;/i&gt;, an LCD control library that's part of the
&lt;a
href="http://mpy3.thelocust.org"&gt;mpy3&lt;/a&gt; package, another
car MP3 player.  It was accepted and integrated very quickly
by the maintainer, which was a pleasant surprise.
&lt;a href="http://arrow.yak.net/alice.html" &gt;ALICE&lt;/a&gt; uses the
API from this project for LCD display control also, so it
benefits both applications.
&lt;br&gt;&lt;br&gt;
Concurrently, I've been making lots of small fixes, and
adding final
polish to ALICE.  Now that the architecture's stable, I've
been making the code more readable, breaking out some
redundant bits and pieces of code into functions, adding a
few more events to each of the core speech and LCD display
modules, and still finding the occasional bug :-)  The whole
app is starting to feel like it's very together, which is a
gratifying sensation after 6 months of work.
&lt;br&gt;&lt;br&gt;
I do hope that users will enjoy the voice controlled MP3
module that comes with ALICE, and developers will find the
available modules easy to work with, and useful for creating
voice controlled apps.  Potential applications are
limitless, but could include things as diverse as a system
monitor (disk space, CPU use, memory, users, etc) , an X-10
appliance controller, a voice datebook/calendar, a news and
info reader, a data acquisition monitor (with customized
voice alarms), a GPS navigation system, and so on...
&lt;br&gt;&lt;br&gt;
--- Rupert</description>
    </item>
    <item>
      <pubDate>Wed, 6 Feb 2002 08:09:57 GMT</pubDate>
      <title>6 Feb 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=40</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=40</guid>
      <description>&lt;a href="http://www.advogato.org/person/bratsche/" &gt;bratsche&lt;/a&gt;: Very good to see someone else
playing with open source speech recognition.  CMU Sphinx is
a fine application.  Best of luck with the project!
&lt;br&gt;&lt;br&gt;
--- Rupert</description>
    </item>
    <item>
      <pubDate>Sat, 2 Feb 2002 09:39:01 GMT</pubDate>
      <title>2 Feb 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=39</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=39</guid>
      <description>&lt;b&gt;Advogato stats (2002-02-02)&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
&lt;i&gt;(courtesy of /bin/grep and /usr/bin/nl)&lt;/i&gt;
&lt;br&gt;&lt;br&gt;
Current number of Advogatoans: 5776&lt;br&gt;
Observer users: 3329&lt;br&gt;
Apprentice users: 548&lt;br&gt;
Journeyer users: 1422&lt;br&gt;
Master users: 477&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;b&gt;Hacking&lt;/b&gt;&lt;br&gt;&lt;br&gt;
Added dynamic module registration to &lt;a
href="http://arrow.yak.net/alice.html"&gt;ALICE&lt;/a&gt;'s event
distribution server.  Now only a single entry in the config
file is required to get a module registered (as opposed to
having to modify the source, as was the case before).
&lt;br&gt;&lt;br&gt;
Happy birthday &lt;a href="http://www.advogato.org/person/jmallett/" &gt;jmallett&lt;/a&gt;!
&lt;br&gt;&lt;br&gt;
--- Rupert</description>
    </item>
    <item>
      <pubDate>Thu, 31 Jan 2002 19:29:04 GMT</pubDate>
      <title>31 Jan 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=38</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=38</guid>
      <description>&lt;a href="http://www.advogato.org/person/fxn/" &gt;fxn&lt;/a&gt; - &lt;a href="http://www.advogato.org/proj/MyAdvogato/" &gt;MyAdvogato&lt;/a&gt; looks like a 
really neat project.  Keep up the good work!
&lt;br&gt;&lt;br&gt;
&lt;b&gt;'Mobile Application Server'?&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
I noticed that a company called &lt;a href="http://www.aligo.com" &gt;aligo&lt;/a&gt; seems to have their 
own project that they are calling a 'mobile application 
server'.  Our definitions of the term seem to differ a 
bit.  They're developing a small-footprint application 
server for handheld devices, that's J2ME based, and 
provides centralized messaging, sync services, etc.  
&lt;br&gt;&lt;br&gt;
&lt;a href="http://arrow.yak.net/alice.html" &gt;ALICE&lt;/a&gt;, which 
I'm also calling a 'mobile application server', focuses on 
providing speech recognition, speech synthesis, and LCD 
display services for hands-free applications. ALICE is 
intended to be used in situations where using conventional 
input methods (mouse, keyboard) might be impractical or 
dangerous (i.e. while driving).  The app is also intended 
to run on a larger footprint platform than a handheld, such 
as a laptop or permanently installed system in a car.  I've 
also thought about using ALICE in my house, in conjunction 
with a module that'd control X-10 devices, and take 
advantage of the permanent DSL connection to provide news 
and other useful information on demand.  
&lt;br&gt;&lt;br&gt;
&lt;b&gt;A little project history&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
A very early version of this system was developed back when 
the Ricochet wireless modem service was still alive.  The 
input device that I used was a little kids PDA called a 
Cybiko, that had a full (if microscopic) QWERTY keyboard, 
along with an RS-232 port, and a terminal program.  Via a P-
133 box running RedHat 6.2 in the trunk, I got a serial 
console running on it, and used &lt;a href="http://arrow.yak.net/mp3view.html" &gt;MP3View&lt;/a&gt; to 
play MP3s.  After several of my friends expressed some 
concern about me trying to squint at the 4 point type on 
the screen, while trying to navigate the fast lane on H-
101, I decided to use voice recognition instead.  What 
started as a simple attempt to clean up the codebase that 
I'd been using resulted in a total, and much needed re-
architecture, that made the whole system modular and easier 
to maintain.  Thus, ALICE was born.  Muhahaha :-)
&lt;br&gt;The reference to Ricochet above was in relation to the 
fact that the original version would grab and parse RSS 
feeds from CNN on demand, parse them, and then speech 
synthesize the headlines.  It was kludgy, though, and after 
Ricochet went away, it became less of a priority.
&lt;br&gt;&lt;br&gt;
Happy Hacking!
&lt;br&gt;&lt;br&gt;
--- Rupert
&lt;br&gt;&lt;br&gt;
&lt;i&gt;P.S.  If anyone would actually like to play with a pre-
beta release of the project, drop me an email 
(rupe@arrow.yak.net), and I'd be happy to oblige.
&lt;/i&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 30 Jan 2002 01:52:03 GMT</pubDate>
      <title>30 Jan 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=37</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=37</guid>
      <description>&lt;a href="http://www.advogato.org/person/hacker/" &gt;hacker&lt;/a&gt; - And this coming from 
a company 
that's also supporting open standards in the form of &lt;a href="http://support.bbc.co.uk/ogg/" &gt;Ogg Vorbis&lt;/a&gt; 
streams.  A classic case of the right hand being unaware of 
the actions of the left.  Quite odd.
&lt;br&gt;&lt;br&gt;
Lots more work on &lt;a href="http://arrow.yak.net/alice.html" &gt;ALICE&lt;/a&gt;.  I 
finally finished binding all of the speech commands to 
events in &lt;i&gt;mp3_module&lt;/i&gt;, the MP3 player, and 
added a couple more useful events to 
&lt;i&gt;lcd_module&lt;/i&gt;, the module which handles all of 
the LCD display functions.  The last few major issues are 
all resolved (problems with song scrolling, and double 
execution of spoken commands).  Having done this, I'm 
refining a few functional, but rough edges, cleaning up the 
documentation, and taking time to test everything a little 
more thoroughly.
&lt;br&gt;&lt;br&gt;
The temptation to add new features at this stage is 
incredibly great.  For that reason, I can't wait to get a 
beta out the door, and start work on the 1.1 branch!
&lt;br&gt;&lt;br&gt;
A quick thanks to my current beta tester, Jed Parsons, 
who's brave enough to withstand daily builds.  Thanks also 
to &lt;a href="http://www.advogato.org/person/jooon/" &gt;jooon&lt;/a&gt;, who made encouraging 
comments.
&lt;br&gt;&lt;br&gt;
Best of luck to everyone with their respective projects,
&lt;br&gt;&lt;br&gt;
--- Rupert

&lt;p&gt; &lt;i&gt;Update 2002-01-29.  Remove &amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt; tags, since 
they're not supported.  Oh, the irony!&lt;/i&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 22 Jan 2002 20:29:38 GMT</pubDate>
      <title>22 Jan 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=36</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=36</guid>
      <description>&lt;a href="http://arrow.yak.net/alice.html" &gt;ALICE&lt;/a&gt;, the 
mobile computing app server that I've been working on, is 
very close to a first beta release.  To demonstrate the 
speech recognition and speech synth capabilities that it 
provides, it'll include an MP3 player module that's fully 
voice controlled.
&lt;br&gt;&lt;br&gt;
The software is very stable, seems to be lightweight in 
terms of overall CPU/memory usage, and much easier to 
configure, since all of the modules use a central config 
file now.  There are a couple of minor, mostly cosmetic 
bugs that I'm trying to squash, but good documentation has 
been a much greater focus.  So far I've got an installation 
&amp;amp; 'quick start' guide hammered out, and I'm working on 
finishing a document that describes how to accomplish 
development tasks like creating new modules, changing the 
language model, and using the functions that the LCD 
display and speech I/O modules provide.   
&lt;br&gt;&lt;br&gt;
Good docs are something that a good majority of otherwise 
well written free software seems to lack.  Documentation is 
at least as important as the actual executable, but 
constantly gets treated as the sort of bastard cousin of 
software engineering tasks.  I particularly like Knuth's &lt;a href="http://www.literateprogramming.com/" &gt;Literate 
Programming&lt;/a&gt; approach towards this end, although I think 
that adopting a middle-ground is probably a great deal more 
practical in most cases, since the philosophy expounded 
here is time intensive in the short term.
&lt;br&gt;&lt;br&gt;
It's really cool that the app has finally gotten to this 
stage:
&lt;br&gt;&lt;br&gt;
&lt;b&gt;Me:&lt;/b&gt; What is the name of this song?
&lt;br&gt;
&lt;b&gt;Computer:&lt;/b&gt; This song is Bookends, by Simon and 
Garfunkel.&lt;br&gt;
&lt;b&gt;Me:&lt;/b&gt; Thanks, Alice.&lt;br&gt;
&lt;b&gt;Computer:&lt;/b&gt; You're welcome, Rupert.&lt;br&gt;
&lt;br&gt;
--- Rupert

</description>
    </item>
    <item>
      <pubDate>Thu, 17 Jan 2002 19:06:27 GMT</pubDate>
      <title>17 Jan 2002</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=35</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=35</guid>
      <description>Entirely unrelated to open-sourcery, but an interesting 
anecdote to boot...
&lt;br&gt;&lt;br&gt;
Last night I was driving home from a friend's house around 
midnight.  As I was driving up Van Ness St, a major street 
that cuts through San Francisco, I stopped at a traffic 
light. In the lane next to me was a black Chevy with a 
picture of a lit Olympic torch silkscreened onto the door, 
and the words '2002 Olympic Torch Relay' on the back.  I 
gave the driver a friendly smile and thumbs up, and he 
waved back.  The light changed to green, and I drove on.  
As I was driving along at about 30mph, the car caught up 
with me, and the woman in the passenger seat rolled her 
window down, and yelled "Hey! I have something for you!", 
holding out her hand.  I reached out my window, grabbed the 
small item, and yelled back a thank you.  The item turned 
out to be a little gold 'Salt Lake City - 2002 Olympic 
Torch Relay' pin.  A really cool souvenir to have!
&lt;br&gt;&lt;br&gt;
Since the torch &lt;a href="http://www.sfgate.com/cgi-
bin/article.cgi?f=/c/a/2002/01/17/MN54637.DTL" &gt;arrives in 
San Francisco today&lt;/a&gt;, I wonder if this is the actual 
vehicle that carries the torch from place to place?
</description>
    </item>
    <item>
      <pubDate>Fri, 28 Dec 2001 19:14:01 GMT</pubDate>
      <title>28 Dec 2001</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=34</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=34</guid>
      <description>&lt;a href="http://www.advogato.org/person/Phoon/" &gt;Phoon&lt;/a&gt;: Interesting to see that you got a 
JamCam camera.  They actually work pretty decently with 
Linux, via the USB interface.  I wrote a short doc on 
getting the cam set up (using &lt;a href="http://www.gphoto.org" &gt;gphoto&lt;/a&gt; and &lt;a href="http://libusb.sourceforge.net" &gt;libusb&lt;/a&gt;).  The doc 
can be found at &lt;a href="http://www.yak.net/fqa/279.html" &gt;http://www.yak.net/fq
a/279.html&lt;/a&gt;.

&lt;p&gt; Cheers,

&lt;p&gt; --- Rupert
</description>
    </item>
    <item>
      <pubDate>Thu, 27 Dec 2001 20:33:15 GMT</pubDate>
      <title>27 Dec 2001</title>
      <link>http://www.advogato.org/person/rupert/diary.html?start=33</link>
      <guid>http://www.advogato.org/person/rupert/diary.html?start=33</guid>
      <description>&lt;b&gt;Hacking&lt;/b&gt;&lt;br&gt;&lt;br&gt;
The four day weekend was very productive.  I got tons of 
new work done on alice, my mobile computing application 
server.  Since finishing the core event distribution 
server, I've moved on and have re-written 
&lt;i&gt;lcd_module&lt;/i&gt;, which handles output to the &lt;a href="http://www.crystalfontz.com" &gt;CrystalFontz&lt;/a&gt; LCD 
that I'm using, and &lt;i&gt;speechio_module&lt;/i&gt;, which handles 
speech input from the &lt;a href="http://www.speech.cs.cmu.edu" &gt;CMU Sphinx&lt;/a&gt; speech 
recognition server.  Now I'm in the middle of migrating 
&lt;i&gt;mp3_module&lt;/i&gt;, which handles MP3 playing, over from the 
old, prototype version to the new one.  Doing an almost 
complete re-architecture has produced several nice 
enhancements, including --
&lt;ul&gt;
&lt;li&gt; Cleaner, better commented, more modular code
&lt;li&gt; Vastly improved speed and CPU usage (thanks to use of 
select.poll() over threads)
&lt;li&gt; More flexible channels of communication between client 
modules attached to the event distribution server.  Data 
sent from clients to the server takes the form 
&amp;lt;/i&amp;gt;destination_module: data_for_module&amp;lt;/i&amp;gt;, 
where 
destination_module represents the name of the client module 
that the data is intended to be used by, and 
data_for_module is the module-specific data.  The EDS uses 
a lookup table of module names to route incoming data to 
the appropriate client endpoint.  Everything 
was 'hardwired', previously.
&lt;li&gt; Use of a central configuration file (parseable via 
ConfigParser), with individual sections for each module.
&lt;li&gt; Cookie-cutter event loops in clients, which speeds up 
client development time enormously.
&lt;/ul&gt;
&lt;b&gt;Writing&lt;/b&gt;&lt;br&gt;&lt;br&gt;
More for my own amusement than anything else, I've been 
doing some traffic analysis of search requests on the 
cluster of P2P networks known collectively as Gnutella.  
I've been collecting a large number of (timestamp, source 
IP, search term) tuples, and looking for patterns within 
the data.  Some of the metrics I'm looking at are:
&lt;ul&gt;
&lt;li&gt; Per-IP / Per-network frequency of search terms over 
different time periods.
&lt;li&gt; 'Top 100' most popular search terms on a per month 
basis
&lt;li&gt; Correlation of search terms by approximate &lt;a href="http://cello.cs.uiuc.edu/cgi-
bin/slamm/ip2ll/" &gt;geographic location of source IP&lt;/a&gt;.
&lt;li&gt; Using data to build a weighted network that'll act as 
a predictive data model for testing the probability of a 
user (or network as a whole) searching for certain terms, 
given an input set of terms from that IP/network.
&lt;/ul&gt;
Depending on how things go, I may write an essay on the 
subject if the data proves interesting enough.  Comments on 
this, and references to similar work would be appreciated.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;Post-Yule&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
At least I survived seeing family.  It's never as bad as I 
expect it'll be, and the food is always decent (my mom 
makes amazing desserts!).  And I got some decent gifts, 
which included a large reference volume on military 
aircraft, courtesy of my brother, and some much needed home 
appliances from my Mom.  However, I will never understand 
the strange phenomenon of Holiday Ties, those ties which 
include things like Snowmen, Reindeer, Large Bearded Fat 
Men, etc.  Is this a uniquely US phenomenon, or are the 
Europeans also subject to this scourge?
&lt;br&gt;&lt;br&gt;
Happy $holidays to all;
&lt;br&gt;&lt;br&gt;
--- Rupert

&lt;p&gt; &lt;i&gt;update: 2001-12-27: fix CMU Sphinx URL.&lt;/i&gt;</description>
    </item>
  </channel>
</rss>
