5/5/2007: 10:21 pm: Software

After reading an article about Charles Wang and the “culture of fear” he allegedly instituted at Computer Associates, I fondly remembered a day over ten years ago when I overheard an amusing story about him. At least it was amusing to me. I didn’t have to work for him. I was working for ViewStar in Alameda in the building next to the one where I now work for Voxify.

On the day that CA had apparently announced the acquisition, two employees of the ASK Group (the ASK Group had acquired Ingres in Alameda a few years before) were waiting with me at a bus stop by our respective buildings. Charles Wang didn’t show up on site, but he had sent a video presentation. One of the ASKers said to the other “I think he was okay, although I was a little bothered when he said, ‘The important thing to remember is that now you work for me.'”

4/25/2007: 12:53 am: Linux, Software

I had been reading about Democracy Player as a cool new platform for Internet TV, so I thought I should check it out. I eventually got it working, but installing software shouldn’t be this hard. The problem is that as software packages get more and more complicated, developers need to rely on a lot of other libraries if they ever want to ship their own product. This is especially true if you are building an application that needs to read a lot of different file formats. Dependency management can be a killer.

In this case, the rpm for Fedora Core 6 has a hard coded dependency on Firefox So, the first step was to download the source RPM, patch the spec file, and build a new binary. After downloading and installing the source rpm, edit the file /usr/src/redhat/SPECS/Democracy.spec to change the lines

BuildRequires:  firefox-devel = %{mozversion}
Requires:       firefox = %{mozversion}
BuildRequires:  firefox-devel >= %{mozversion}
Requires:       firefox >= %{mozversion}

This is better than just changing the version number from to, since you can then reinstall the Democracy Player rpm even if you later update Firefox.

Before going further, you need to install Pyrex and qt-devel. You should be able to use yum to install these from the standard Fedora repositories. If you don’t install qt-devel, you will get the message:

Package qt-mt was not found in the pkg-config search path.
Perhaps you should add the directory containing `qt-mt.pc'
to the PKG_CONFIG_PATH environment variable
Package 'qt-mt', required by 'avahi-qt3', not found

Then, you need to build a binary rpm. The following command should do the trick:

rpmbuild -bb /usr/src/redhat/SPECS/Democracy.spec

Near the end of the output you should find a line like the following which will tell you where to find your brand spanking new home made binary rpm:

Wrote: /usr/src/redhat/RPMS/i386/Democracy-0.9.5-1.i386.rpm

Then, install the rpm as usual:

rpm -Uvh /usr/src/redhat/RPMS/i386/Democracy-0.9.5-1.i386.rpm

It’s worth all the effort, though. Democracy Player is an awesome app.

4/11/2007: 11:56 pm: Soccer, SoccerPhone, Software, Speech, VoiceXML

SoccerPhone is a speech application I wrote about five years ago so I could get live updates on Major League Soccer scores whenever I was away from an Internet connection. I wrote the application in VoiceXML, JavaScript, and Python. Since SoccerPhone gathers the live data by scraping information from the HTML scoreboard page on the MLS website, I often have to update my code when the MLS website changes each year. Fortunately, this year’s change was fairly minor.

  1. Call 1-877-33-VOCAL (877-338-6225)
  2. When asked for your PIN, enter or say 5425 (5425 = KICK)
  3. When asked for your userid, enter or say 6575425 (6575425 = MLSKICK)
  4. After you hear me say “Welcome to SoccerPhone”, you can say an MLS team name, such as “Houston Dynamo”, or say “all teams”.

Since SoccerPhone lets you request this week’s match results for a team by saying the team’s name, I also have to update the GRXML grammars when new teams are added. While I could dynamically generate grammars from the team names that the app extracts from the MLS website, it’s not that big of a deal to manually maintain the grammars. Also, manually coding them allows me to tune the gramars for better recognition rates.

If you’ve call the app before, you’ll be disappointed to hear that I am using the same lame voice talent, i.e., me. On the good side, though, I re-recorded a bunch of the prompts using Audacity. I also eliminated a little more of the TTS by adding additional recordings. I really should take advantage of the great recording studio we have at Voxify, but then I would feel obligated to use a real voice talent.

I haven’t updated the code at the SoccerPhone SourceForge project site, yet. But I will get to that soon. I got sidetracked by looking into converting the CVS repository to Subversion.

11/11/2006: 10:25 pm: Software

Microsoft supposedly spent 18 months working on the 45 built-in system sounds for Vista. This may seem like a long time (and I guess it is), but I have yet to use an OS where I enabled the system sounds for any significant amount of time. It may not seem like a difficult task to come up with 45 short sounds, but they need to appeal to a lot of people, produce a cognitive association with a specific type of event, sound good on a wide array of sound production devices, etc.

OS X has probably been the closest to acceptable to me. With previous Windows versions, I’ve usually turned off the system sounds within just a few days of turning them on. I’ve been trying out the standard set of system sounds with Fedora Core, but I’m not too enamored with them, either.

I was pretty surprised to learn that Robert Fripp was hired by the Vista team to produce a lot of recordings, some of which were used to develop the four-second startup sound. It turns out that Brian Eno actually did some recordings from Windows 95. I don’t remember any Windows 95 sounds being particularly Enoesque, but then I don’t remember Windows 95 very well at all, either.

3/21/2006: 12:20 am: Mac, Software

Two engineers (Eric, a.k.a., Narf, and Jesús, a.k.a., Blanka) with whom I work at Voxify won a prize of nearly $14,000 from contributors at for being the first people to publicly get Windows XP running on an Intel-based Macintosh. I was kind of surprised when the Mac showed up in Jesus’s office a few weeks ago, and I certainly didn’t guess that this was what he was working on. It doesn’t surprise me, though, that he and Eric would have been the ones to figure this out first. More proof that Voxify engineers rock.

Update 4/5: On top of all the many other mentions in the press, Eric and Jesús got mentioned in an article by David Pogue in the New York Times.

11/30/2005: 12:43 am: Software

I couldn’t resist upgrading to Firefox 1.5, even though I expected that some of the extensions I had installed would not be compatible. The extensions that are still enabled (or were added during the upgrade) include DOM Inspector, Talkback, Nuke Anything, AdBlock, FoxyTunes, Web Developer, Piggy Bank, View Rendered Source Chart,, Customize Google, ASCIItoUnicode, AJAX Yahoo Mail, Tab X, and Disable Target for Downloads. Extensions that didn’t make it, or at least not yet, include Nuke Anything Enhanced, Foxylicious, LiveHTTPHeaders, SessionSaver, and Bookmarks Synchronizer. GreaseMonkey, Open Java Console, Tamper Data, and Venkman also need to be updated.

One new feature I’m glad to see built into Firefox is drag and drop tabs. I used to have to install an extension on all my machines to get that feature. I use FireFox regularly on five different machines (with a mix of Linux, Windows, and OS X), so that was a lot of extra installs.

Another feature that I don’t need much myself, but would find desirable on a public machine with Firefox installed, is the new Clear Private Data option in the Tools menu. It gives you the ability to clear any or all of the following – browsing history, saved form information, saved passwords, download history, cookies, cache, and authenticated sessions.

The Blazer browser on my Treo allows me to navigate through the links on a page using a keypad button rather than using the stylus. This feature turned out to be far more valuable than I expected. Firefox now lets you do the same thing by pressing the tab key. As long as there aren’t too many links on a page, this is a very convenient way to navigate a website without having to reach for the mouse.

Firefox 1.5 also includes, at least on Windows, integration with a mail program via options in the Tools menu. When I selected Read Mail, Outlook Express was automatically launched. No sense in suffering further with Outlook Express, so I finally was inspired enough to install Mozilla Thunderbird. It automatically imported all my settings from Outlook Express, which I had rarely used anyway. Now, that will be never. I’m already much happier with Thunderbird.

11/6/2005: 8:51 pm: Blogging and RSS, PhoneBlogger, Software, Speech, VoiceXML

I haven’t posted about PhoneBlogger in quite a while, but I’m thinking about updating and enhancing some of the code. A lot has happened in the audio/phone blogging world since I announced PhoneBlogger January 9, 2003, and posted the PhoneBlogger source code on SourceForge.

One new buzzword is mobcasting. The Wikipedia page on mobcasting quotes Andy Carvin as writing:

A quick example: imagine a large protest at a political convention. During the protest, police overstep their authority and begin abusing protesters, sometimes brutally. A few journalists are covering the event, but not live. For the protestors and civil rights activists caught in the mêlée, the police abuses clearly need to be documented and publicized as quickly as possible.

This is quite similar to the scenario I was thinking of nearly three years ago when I announced PhoneBlogger:

A journalist could use it from a payphone (good luck finding one, though) or with a basic cellphone to immediately publish to the web from the scene of an unexpected event in progress. It’s moblogging for the people, man.

Note the quaint reference to a payphone. My point was that you wouldn’t need a fancy phone. Of course, mobile phones have come a long way since I wrote that. Carvin’s example also includes the use of camera/videophones, rather then just audio.

My favorite part of the Wikipedia article, though, is near the end where it says:

Carvin is now exploring the creation of an open-source mobcasting tool that could be installed on a server to allow for community mobcasts via a local telephone call.

I’ve been thinking about the same thing, too. While it makes life simpler for me to host the application with a VoiceXML hosting provider like BeVocal, I do like the idea of having a more self-contained app. It’s going to be pretty complicated, though, to sort out everything I need with a free PBX like Asterisk or sipX, a free VoiceXML browser like OpenVXI, a free ASR engine like Sphinx, and a free TTS engine like Festival. Dealing with PSTN calls will also be a hassle. If I implemented this, I would probably just deal with SIP. That led me down the path of looking into building or finding a SIP softphone that could run on a mobile phone. There is a Java API, JAIN-SIP, for building a Java SIP user agent. The phone would ned only a J2ME runtime. What with all these acronyms and integration efforts, I think you can guess why I haven’t taken all of this on by myself, yet.

I’m glad to see that people like Andy are doing really interesting things with audio blogging. I built PhoneBlogger solely because I thought it would be fun to build. I never really ended up using it.

10/16/2005: 9:22 pm: Software

Via Boing Boing I found this NYT article on Life Hackers and interruptions. It’s an excellent update on efforts to reduce the deleterious impacts of interruptions on people who spend lots of time on computers trying to accomplish many things in a short period of time. Well, at least it’s an excellent update on what Microsoft Research is working on.

Interruptions aren’t necessarily bad. As the article points out, an interruption may be someone trying to tell you something that solves the problem you’re working on. Instead of continuing to work on a solved problem, you can take advantage of the new data and move on to your next task.

While it is often stated that people take a long time to return to the task that was interrupted, a recent study more precisely calculates this time period to be about 25 minutes. Many times you return immediately to what you were doing, but sometimes the interruption is so distracting that you forget your previous task and don’t return to it for hours. I find this happens especially when the interruption itself spawns multiple tasks, sort of like being attacked by a MIRV in the old video game Missile Command.

This reminds me of a previous post on multitasking. After I posted about the Task Tracer project at Oregon State, I ended being interviewed by a professor there as part of their research. One aspect of their research is, in fact, assisting users in quickly returning to a previous task.

10/7/2005: 10:10 pm: Intellectual Property, Software

If you’re not heavily involved in the development or use of free and open source software, I imagine it can be very hard to understand the subtleties and the importance of free (as in liberty and speech) software versus open software that you can use for free (as in gratis and beer). For most software users, it’s probably not the most important distinction in their lives for them to grasp. But for many users, and especially for developers, it is very, very important.

Karl Fogel wrote a very nice article at O’Reilly that does an excellent job of explaining the difference between the two, and why both are very important. If you ever wanted to know more about these software movements, I highly recommend that you read this three page article. Karl did a great job of explaining the history, intellectual property concerns, and impacts on users and developers.

5/7/2005: 7:21 pm: Linux, Software

After much gnashing of teeth, I got CVS running as a service on my laptop and am able to access it using the CVS client Eclipse plug-in. The key was finding this page posted, at least in part, by Glenn Robitaille. Without it, I suspect I would still be poring over the CVS and xinetd documentation. One change I had to make that I didn’t see listed on the page was to change the owner of /usr/bin/cvs to the cvs user.

I was surprised how difficult it was to setup CVS. I think I’m already beginning to learn why people dislike CVS so much. With this rite of passage complete, next up on my source code control system investigation is Subversion with Subclipse.

« Previous PageNext Page »

Fork me on GitHub