Older blog entries for rupert (starting at number 17)

Finally got crystal out the door. It's a small server application that allows control of a CrystalFontz LCD screen via a TCP connection.

It's based on the very nice pyCFontz module by Ben Wilson, and uses a simple plaintext protocol for issuing commands (e.g. out 'foo', crlf, cls, etc..). It's a released pre-release version <grin>, so the full suite of control functions isn't in there just yet, but that should be resolved by the time 1.0 comes out. I'm just using the socket module for now, but I'd like to transition over to using the much nicer SocketServer class, which will allow me to handle multiple simultaneous connections, and be easier to maintain.

Eventually I'd like to add in some advanced features such as multiple LCD screen support, the ability to have a client program 'lock' a region on a screen for exclusive use, and have a set of templates in place that'll allow the submission of a list of data objects to the server that'll get pre-formatted and displayed. The protocol will probably change in the next couple of versions, and use enaml style commands, because they provide a better structure.

Not much else going on. Robey was kind enough to contribute some additional MP3View code, that permits the sequential play of songs, so this should be making its way into 2.2, along with LCD display support.

My brother finished Army basic training yesterday, and did amazingly well. Top of his platoon in marksmanship, and got several other distinctions. Congratulations! (although he's not much of a net person, and will probably never read this) :-P

Have a nice Memorial Day everyone!

Did a short interview with The Screen Savers show on ZDNet's TechTV, in conjunction with a piece on the Alameda County Computer Resource Center. I talked about the Beowulf that we've been building from scrap hardware and donations, and it went pretty well. If you have DSS, check out the show in two weeks or so if you'd like to see me!

Work work work, as usual. Had a nice relaxing dinner with tague tonight, in which we griped about software companies, and watched The Simpsons... a nice change.

Too tired to write anything more...

Goodnight world :)

Sent an email to Senator Richard Alston. Despite my joking re-write of Australia's National Anthem in previous diary entries, he's a fellow I would actually like to chat with. It'd be interesting to hear a little more about how he thinks about his role in Australian government as Minister for Communications, Information Technology and the Arts. His policies are decidedly conservative, and I wonder how much weight he gives to the enforceability of the policies he proposes (e.g. content filtering), or if the social impact is all that really matters to him...

Hopefully my request to meet him will be granted, and I'll be able to ask him these questions in person...

I began playing with CMU Sphinx speech recognition last night. Sphinx is a large vocabulary, speaker independent speech recognition system from Carnegie Mellon, developed with support from DARPA. The package was easy to install (configure, make, make install), but using it was a bit trickier, since there's only fragmentary documentation in the example code. I finally tried running the sphinx2-demo perl script, and was able to say words into the microphone, and see a relatively accurate transcription to the console, which was very very cool. In order to accurately recognize speech, the system requires a language model (lm), which contains a vocabulary file, and assorted support files which have coded pronunciations for each of the sentences and sentence fragments. The best way to generate an LM is to use CMU's web based Langua ge Modelling Tool, which takes in a CR separated list of sentences and vocabulary words, and returns a .tar.gz file containing all of the necessary files for a basic language model.

Also got Festival working for the first time with very little difficulty. It uses Scheme for control, which surprisingly isn't a bad language to work in. I've hacked up a very basic set of wrapper functions in Python, that simply do os.system() calls to the festival program to speak text, execute Scheme scripts, etc, from within Python. Dynamically generating speech is much slower than just pulling it from a WAV file, even on a machine of decent speed.

Not much else going on... it's raining here in SF, and I managed to break my car key off in my trunk lock this morning :-( ... I wish I knew the digital code for my car door keypad..

Composed in the early morning hours, in frustration about not having enough disk space on a server....

Holding Out For An Inode.
Rupert Scammell
April 9, 2001.

(to Holding Out For a Hero, by Bonnie Tyler)

Where has all the disk space gone,
and where are all the blocks?
and where's the rm -rf command to fight the rising odds?
Isn't there a gzip, upon a fiery steed,
Late at night I toss and turn, and dream of what I need...

I need some inodes, I'm holding out for some inodes 'till the end of the night...
The disk's got to be strong, and it's got to be fast, and it's got to be mounted read/write..
I need some inodes, I'm holding out for some inodes 'till the morning light..
I've got to have more, and it's got to been soon, and it's got to have ten gigabytes...

Somewhere after midnight, in my wildest fantasy,
Somewhere just beyond my reach,
There's SCSI-1 reaching back for me,
Racing on the read write head,
And air-cooled against the heat,
It's going to take an fsck to sweep me off my feet

I need some inodes, I'm holding out for some inodes 'till the end of the night...
The disk's got to be strong, and it's got to be fast, and it's got to be mounted read/write..
I need some inodes, I'm holding out for some inodes 'till the morning light..
I've got to have more, and it's got to been soon, and it's got to have ten gigabytes..

Up where the Mountain tapes meet the heavens above,
Up where the lightning splits the Seagate,
I would swear that there's a volume, somewhere, caching me

Through the hinv and the stack and the frames,
and the storm and the RAID,
I can feel its I/O like the fire in my 'Blade

I need some inodes, I'm holding out for some inodes 'till the end of the night...
The disk's got to be strong, and it's got to be fast, and it's got to be mounted read/write..
I need some inodes, I'm holding out for some inodes 'till the morning light..
I've got to have more, and it's got to been soon, and it's got to have ten gigabytes...

Finally got around to releasing updates to MP3View, my console MP3 playlist viewer. Among other things, it includes cleaner code (much more modular), additional documentation, and most importantly, optional speech cues that are tied to certain events. This allows you to look at the screen less while driving.

I also released the first version of my Greet script, which provides a voice greeting (good morning, afternoon, evening), and a status message based on sys.argv[1]. By default, I'm using "The car computer is now on line / offline", because the current application for the program is to provide notification for when the computer has booted in the trunk, and is ready for use, or ready to be powered down. It just strings together WAV files, so it could be easily reconfigured to say anything.

AT&T's online TTS generator is fantastic, and it's what I've been using to generate the speech in both programs.

The Rupert is now offline.

3 Apr 2001 (updated 3 Apr 2001 at 20:05 UTC) »
Retreat, Australia Fair.
(a.k.a. An Ode to Sen. Richard Alston)

Australians all, let us rejoice,
We've lost our liberty.
With golden soil,
And Alston's toil,
The 'net's no longer free.

Our land abounds in censorship,
There's red tape everywhere.
On the virtual stage, let ev'ry page
Retreat Australia fair.
In G-rated strains then let us sing,
"Retreat Australia Fair."

This is my parody of Australia's National Anthem, for those non-Aussies out there... Richard Alston is the Australian Senator who seems to take his political inspiration from a combination of 1984, Brave New World, and a hefty dose of Luddite philosophy. He's been the driving force behind a great deal of draconian legislation that operates on the naive assumption that you can actually filter Internet content on a national level, despite a CSIRO (the Australian equivalent of the NSF) report that correctly blasted this idea as useless...

I hate voicemail and pager messages, except from a few people. Why can't Nokia include the GSM equivalent of ipchains in their firmware, which would allow me to do the following?

  • The ability to blanket allow/deny phone calls using a regex to match callerid values.
  • The ability to specify times at which specific numbers can connect (again, via a regex match).
  • The ability to send regex-matched numbers directly to voicemail (no ring), or conversely, have a select few numbers never go to voicemail, and just keep on ringing.
  • The ability to apply a separate set of rules for SMS messages, voice mail, and phone-ring access.
Would this be really that hard to do? I couldn't care less about all of these new 3G services like VoIP, video conferencing, etc.. I just want my phone to give me more control over who can connect to the services that I pay for. I don't even get very many calls... but there are some that annoy the hell out of me, and some that I always want to make sure that I receive.

Is anyone out there working on this?

Out of the blue, Louis Luangkesorn at Northwestern contributed several new functions and revisions to my Python finance library, py-fi, adding equivalent value of an annuity, and compound interest present value functions. Nice to see the library of functions growing by leaps and bounds.

I also made some more additions to my MP3View software last night, for the Linux based MP3 computer that I have in my car. I'd found that one of the most frustrating things about having a computer in the trunk was that the usual physical cues of lights, the BIOS beep, and fan noise were absent. Without these, it was difficult to tell if the system was functioning correctly. In order to make things a bit easier, I generated some spoken cues for the computer to use, via the AT&T Research Next-Gen Text to Speech software, using a 16 Khz sample rate, male voice, wav output.

The cues are used in a variety of different areas within the system, both in the MP3View player itself, and in the OS at large. When the computer is powered on or halted, a Python script called greet (online soon), grabs the system time via time.localtime(time.time()), and uses the hour value of the returned tuple to determine whether to say 'Good morning', 'Good afternoon', or 'Good evening'. After this is spoken, the value passed to the script in sys.argv[1] (either "online", or "offline", currently), is used to announce that the car computer is online or going offline.

Since I haven't gotten around to modifying getty to not call /bin/login yet, so typing in a username (no password), is still necessary to run the MP3View script. The keyboard on the Cybiko that I'm using as a VT100 terminal is a bit unreliable, so it's nice to have confirmation that everything got typed correctly. .bash_profile now contains a line that announces that the login was successful.

MP3View also has a startup, shutdown, and problem announcement (if an exception gets caught).

The biggest problem I had in doing all of this wasn't writing the code, or generating speech. It was simply finding a tool that would play wav files at the command line with low overhead. XMMS is fine for when I'm in Gnome, but it doesn't really cut it on a stripped down system. After some searching, I ended up using a tool called Dreamplaye r, which does exactly what I need. I wonder though... does Linux (RH 6.1, at least), include some kind of utility for doing this that I'm missing? It seems like pretty basic functionality to have.

Next steps are to play with some speech recognition to minimize keypad use (maybe CMU Sphinx? , and dynamically generated TTS (I'll give Festival a try, and see how it does.

This has been a really cool project so far. I've learnt a lot of new things about Python, and touched on some aspects of Linux that I hadn't had a reason to play with before. With any luck I'll take advantage of my friend's digital camera, and post some pictures at some point.

I had a pretty cool weekend. Spent Friday night hanging out with Robey. The Valley puzzles me. Filled with tech companies that presumably have at least some people working late, but practically impossible to find even simple food at 10pm, since Mountain View / Los Altos seem to close down around 9pm. I ended up going to this little sports bar / restaurant called The Boardwalk down on El Camino. Nothing spectacular, but at least you can get a decently sized burger and fries when the rest of the neighborhood has been plunged into darkness! Are there any other good places open late around this area? Email me at rupe at metro dot yak net if you have any recommendations...

Since late-food is a staple of good free software development, I'd make this an actual article, but for the fact that I'm not an Apprentice anymore... lerdsuwa certified me as an Apprentice recently, which for some bizzare reason dropped me back to Observer level. I've read raph's explanation of the trust model, and I can't see why this would be so. Has this happened to anyone else?

Saturday, had a great dinner with Robey, Greg, and fair, who's become a sort of offbeat tour guide and guru for me recently, and has deepened my knowledge of topics as diverse as Internet history, DNS server arcana, and Bay Area history.

I'm slowly getting settled into my new place. No actual furniture yet, but no shortage of computing power. The room came with a DSL connection, which was a goddess-send, as I didn't have to bang my head against the wall with Pac Bell in order to get hooked up. I don't have much space, which is a bit annoying, but the location is fantastic, which (mostly) makes up for it I can wander down the road and look out over the Pacific Ocean, which is something I've always wanted to be able to do.

I made some additions to my MP3View software. New features include sequential play of songs (the previous version wouldn't increment to the next song and start playing it, which made using it in the car distracting), and a more generalized version of the draw_screen() function, which should be useful for adding additional control screens later on. I need to do a little more testing, so the new version should be posted around lunch tomorrow.

Tonight was the first time I'd been in a laundromat since college... and it was a direct result of a computer failure. The temperature control board in our dryer failed, so I went down to 15th and Geary with a big pile of wet laundry to get it dried. Amusing sitting on a laundry bench watching the Oscars and waiting for clothes to dry! I'm glad Gladiator got Best Picture. Some of the CG in the film was amazing (especially in the fight sequences), and the plot had enough twists and turns to keep things riveting the whole way through.

When I was hauling the (now dry) laundry back to my car, I walked past a coffeeshop that caught my eye. Not having seen very many open-late (sense a theme?) establishments of this type in SF that looked like they had any soul whatsoever, I stowed my laundry, and went back across the road to try it out. It was pretty quiet, but the coffee was good, and the people seemed nice. It's called the Royal Ground, and it's just across the road from the Alexandria theatre at 16th and Geary... I sense I'll be becoming a regular before too long.

8 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!