Saturday, November 27, 2010

Conference Manager Overhaul

Received a complaint that the conference manager is too danged complicated for simple use (requires realtime meetme, etc.).  I agree, given that I have it running in a VM and there's so much code in it that it flickers in heavy load conditions.  As such, I'm wading through the code, removing the features that aren't required to manage a single conference.  I'll post the new code in a bit.

Wave in a Box

Spent a couple hours yesterday, playing with Google's Wave in a Box (WiaB).  The install was very smooth, though it did take a little over 11 minutes for ant to wade through the various .jar's and build the server.

If you're building your own WiaB and get a lot of "cannot connect" errors, take a look at what interface your server is listening on (i.e., use netstat).  Even though I'd properly configured the forward and reverse lookups in DNS, I'd forgotten that Linux is usually configured to check /etc/hosts first.  Since I'd left the `hostname` code in the config file (where "hostname" is surrounded by backticks), it was actually defaulting to "localhost" vice the proper IP address for the server.  (Note: you probably won't receive this error unless you're running WiaB and your XMPP server on different systems.)

Experimenting with federation took a bit longer as it requires configuration of DNS, /etc/hosts, and SSL certificates.  Nothing too difficult though.  End result is that I now have a WiaB instance tied to the Openfire server.  Notes in the wiki shortly.

Friday, November 12, 2010

Openfire and the Email Listener plugin

Just a note to anyone considering using the Email Listener plugin for Openfire (it's available via the plugins web page for Openfire): you may want to test it on a non-production system as it doesn't un-install, other than via a manual process.

I didn't like the plugin because it sends you the entire email, vice sender/subject, via Jabber.  It's quite messy when viewed in Xchat via Bitlbee.

Various versions of Xen - initial thoughts

Finally had time to install Xen on a couple hard drives. (Thermaltakes are useful!)  Installed Xen's XCP v0.5 and Citrix's XenServer 5.60.  Initial impression is that the difference between the two is in the user interface.  Both installed what appears to be the same server and server console, though numbers are slightly different (Xen XCP = 0.5, Citrix XenServer= 5.6.0).

For now, there's no rush for me to experiment heavily with these.  I have to take the main server down to play with these and current house guests get cranky if the "Internet is down" during the evening hours.  It probably won't become a crisis until VMware removes para-virtualization from ESXi 4.x (supposedly soon).

Xen XCP looks like it's ready for someone to write a new interface.  The current one involves Java and I learned to dislike Java control GUIs back when Gauntlet 4.0 was cutting edge.  Nothing's simple and there's too much stuff missing.  Haven't had a chance to install the management software for Citrix, so I can't yet comment on that.

I'll keep notes in the wiki as I go along.

Tuesday, November 9, 2010

Wow, that's fast!

I've made comment previously on performing Google searches on niche topics and seeing a lot of your own content in the results.  Google searches just got a bit weirder!

Just before I generated the preceding post, I'd started a very specific Google search.  As soon as I hit "Publish Post", I went back to the Google search page and hit "Next".  There, at the bottom of the next page, was the post that I'd just generated.  If Google gets any faster, I'll have search first so's I can read what I'm about to write. (heh)

Correction to Saturday's post

It seems that the second "false" line in liquidtts isn't there for erroring out.  In reading additional source code, the second "false" is supposed to be replaced with a command to normalize the audio file generated by the first line.  I don't yet know which command it's supposed to be.  I'll keep reading.

Saturday, November 6, 2010

Working with Liquidsoap's TTS

Yet another note to self which I'll sometime get around to adding to the wiki...

By default, the text-to-speech script that comes with the Liquidsoap audio scripting language is intentionally broke (uses "/bin/false" as the TTS tool!). The fix is easy:

- Edit /usr/local/lib/liquidsoap/0.9.3/liquidtts
- In the first line that starts with "echo", change the word "false" to "text2wave"

The next to the last line shouldn't need the word "false" changed to "text2wave". It's there in case the first part (before the first "return") fails.

And that's it. If you add say_metadata to your liq script, you should hear a familiar crappy synthesized voice, telling you what the song was.

If you want to use swift (i.e., Cepstral), the following seems to work well:

#!/bin/sh


# This script is called from liquidsoap for generating a file
# for "say:voice/text" URIs.
# Usage: liquidtts text output_file voice


swift -o $2.wav " that was $1 " && /usr/bin/sox $2.wav -t wav -c 2 -r 44100 $2 2> /dev/null > /dev/null
return=$?
/bin/rm $2.wav
false $2 2> /dev/null > /dev/null
exit $return

Please note that the first line of the script starts with "swift" and ends with "/dev/null > /dev/null".  Blogger likes to wrap code and cause problems.

I added in the "prosody" tags to slow Allison's speaking a bit. The default rate is set for "New Yorker". I've spent too much time in the South to be comfortable with it for any length of time.  If you want to tweak the voice further, Cepstral has some common usage examples.

I'm still trying to figure out how to get pass/accept events in and out for speech and for posting events to Twitter or IRC. The former probably means having to pull from a secondary stream. For the later, I'm pestering people (who said they had it working) for hints.

More reading required on my part, I guess.

Friday, November 5, 2010

Xen again?

Having run up against the restrictions in the free version of ESXi, and the pending removal of paravirtualization support (I like that my VMs boot in about 2 seconds), I'm considering starting up a side project to search for a future replacement for ESXi.

On the candidate list is Citrix's free XenServer and Xen's Xen Cloud Platform. Having previously run the build-your-own-Xen-kernel gauntlet and being reluctant to go through it again, this is probably going to be the entire range of choices. If anyone knows of other choices, other than KVM, VirtualBox, and VMware's lesser offerings, please yell out.

Wednesday, November 3, 2010

On getting rusty

Having spent the last two years transcoding the wiki, moving the blog, getting non-standard drivers working in ESXi, taking classes, switching jobs yet again, worrying about elderly parents, watching in-law drama, and generally not having a whole lot of free time, I haven't been writing much code. Many of my toys are stacked up in the corner, suffering from neglect.

The good news is that ESXi has minimized a large chunk of my usual rework (e.g., rebuilding the main system every 3-4 months and annoying Sparks to no end). This past weekend, I reached the point where I was attempting to install the new version of the LiquidSoap scripting language (see previous post) and then writing fixes for a Perl jukebox on top of that.

The bad part is that I've come to the realization that I'm so out-of-practice that I can't "see around the corner" while writing code. Embarrassingly, I had to drop back to methods learned a quarter century ago: composing flow charts, single-stepping through same, and tracking state on paper (bleh!). It's almost as bad as having to document someone else's code.

The good news is that I've taken good notes over the years and much of the coding can be done cookbook style (+1 for modules!). Hopefully it won't take too long to "blow the carbon out of the cylinders" and get back up to speed. I've got a couple weeks-worth of documentation to write and (hopefully) will have time to get back to coding in Perl and C.

Monday, November 1, 2010

Betas should compile

I really like the LiquidSoap scripting language. So much so that I spent a good-sized chunk of the weekend attempting to get the 1.0 Beta to compile properly. Even after fixing the faad issue (you need to alter the system's path (or move the file) so that the system can "find" mp4ff_int_types.h), the danged thing wouldn't work as it should.

The short version is that I dropped back to v0.9.3 and it compiled without an issue. I'm now tweaking the in-house jukebox (a web front end to a liq script) so that it runs, spread across multiple VMs. Next up is to incorporate text-to-speech and see if it will work with Cepstral in a Festival wrapper. If that works well, things will probably get weird very quickly.