Category archives: Tuxedo

Discussions about Linux, Unix and related technologies RSS

Listener is Crawling Forward

I spent the day working on Listener. The bulk of the work was just cleanup, getting TODO items set up, fixing the setup script, etc. The actual task of voice dictation didn't get moved very far (I got a trivial "correct that") event working, but it doesn't actually make anything happen.

I also started thinking about how to integrate with other applications (and the desktop). That will likely be done via DBUS services, one for the "send keys" virtual-keyboard service and another for the per-session voice-dictation context.

Continue reading

Create your own virtual keyboard with Python

So at some point I need the voice dictation client to be able to do basic interactions with applications on the desktop (think typing text and the like). So how do I go about doing that? I want to be compatible with Wayland when it shows up, but still work on X (since that's where I'm working now). That would seem to preclude using X event sending. What about making a "virtual keyboard" that actually sends the events through the Linux kernel event subsystem?

The resulting spike-test is checked into the listener project. It seems to work. Yay ...

Continue reading

GStreamer Level Plugin Monitoring

So you have an audio stream where you'd like to get a human-friendly readout of the current audio level. You add a level component, but how do you actually get the level messages it generates?

            bus.connect( 'message', self.on_level )

It really seems that you *should* be able to use element.connect(), but there doesn't seem to be an available event to which to connect on the level. So, you wind up having to process all of the events and look for your level event...

    def on_level( self, bus, message ):
        """Level message was received"""
        if message ...

Continue reading

Nginx Reverse Proxy with Authentication

So you have an internal device the web-gui of which you want authenticated users to be able to access.  You've got nginx running on the front-end server. You're willing to open up a port on the outside firewall, but all access on that port needs to go through your main web-app's permissions. You setup an nginx proxy like so:

upstream internal_gui {
    server fail_timeout=0;

That sets up your upstream proxy. Here we're connecting to ssl. We then setup a server to listen on a high port (using ssl). It has two ...

Continue reading

Found the source of SegFaults on AMD + FreeGLUT

So the source of the segfaults that I'm seeing on fglrx and FreeGLUT on Kubuntu 14.04 has come to light. It's a known issue with the registration of FreeGLUT and fglrx at-exit handers (at the C level). You can work around it in your own code with PyOpenGL 3.1.0b3+ (which is still pending release) using:

            if fgDeinitialize: fgDeinitialize(False)
        except NameError as err:
            pass # Older PyOpenGL, you may see a seg-fault here...
        import sys
        sys.exit( 0 )

Where fgDeinitialize is available in the GLUT namespace.

Continue reading

Ubuntu Configuration for Inspiron 15r Running Hot

So you have a Dell Ubuntu 14.04 Laptop and it is running way too hot. You can configure it to run at a reasonable level using i8kmon. As with anything heat related, be careful. If you miss-configure the machine you are likely to wind up with a fried machine!

You create a file called /etc/i8kmon.conf and put the following in it:

set config(daemon)      0

# Automatic fan control, override with --auto option
set config(auto)        1

# Report status on stdout, override with --verbose option
set config(verbose) 1

# Status check timeout (seconds), override with --timeout option
set ...

Continue reading

FGLRX fail again, now on 12.04

So I've pretty much given up on the laptop having fglrx running properly, current Ubuntu just doesn't get fglrx, sucks, but okay, I should have stayed on LTS if I wanted a working machine.  But now LTS Kubuntu fglrx is hosed after some system update.  Every attempt to run any OpenGL program just segfaults (not just PyOpenGL ones, mind you, anything that uses fglrx). So no way to tell if I've fixed the PyPy bugs and can release PyOpenGL 3.1.0b1, because I can't actually run *any* tests. Meh.

[Update] Plus side: reboot fixed it ...

Continue reading

Is fglrx dead for Ubuntu-current

So the AMD Proprietary driver (fglrx) for Linux supports "Ubuntu 12.04 and 13.04" (Note: not the current Ubuntu 13.10), and so far every attempt I've made to use them on 13.10 has supported the "not supported" hypothesis (kernel module compilation failures in the latest iteration).  But drat-it-all my machine meets the declared software requirements (kernel, xorg, etc), and it would make testing PyOpenGL releases so much easier if I could use the laptop for testing.

So does anyone in-the-know know if there is some grand plan in the works? They seem to still release drivers ...

Continue reading

Voice Dictation Privilege

Apparently I'm blessed with a Voice Dictation friendly accent and tone. I can pretty much use most Voice Dictation systems, including the ones on Android, Dragon Naturally Speaking, and PocketSphinx. The results aren't mind-blowing-ly good, but if it's quiet and I speak clearly and train anything that gets missed, I get reasonable results.

Watching a child play with both the Android and PocketSphinx recognizers this weekend made me realize just how much I'm privileged.  His accent is pretty much identical to mine, but the recognizers just don't seem to pick up his (much higher) voice ...

Continue reading

Nexus 5 Phone Contacts WTF

I needed to phone my mother at one point this weekend.

Pulled up the Nexus phone dialer for one of the first times (I don't actually use my phone as a phone all that much). Said my mother's (full) name, saw a brief flash of her details, and they were promptly replaced with a bunch of we results for her name (lawyers in the UK and the like). Of course that's what I was looking for when I explicitly opened the contacts app and searched for someone in my contact list by name... of course.

Same thing ...

Continue reading