Plantronics Savi 7XX-M and Linux

Leaving this here for the inevitable computer change someday.  Getting a Plantronics Savi 7xx-M working with Linux.

Section "InputClass"
        Identifier  "Plantronics"
        MatchVendor "Plantronics"
        Option      "Ignore" "true"
Posted in Code at April 28th, 2016. Comments Off on Plantronics Savi 7XX-M and Linux.

Forty Years

This video makes me smile and think of the things that Elise will know. Things that we have no idea about now.

Posted in Code, Parenting at March 15th, 2016. Comments Off on Forty Years.

Android ActionBar initially selected tab

Ok, this just cost me a few hours.  It’s not as described, the only way that works for me is:

actionBar.addTab(tab0, false);
actionBar.addTab(tab1, false);
actionBar.addTab(tab2, true);

The index thing is a lie, it’s order that seems to matter. I’m not sure if it’s a bug, outdated documentation, or something I’m doing wrong, but this works for me.

Posted in Code at November 27th, 2013. Comments Off on Android ActionBar initially selected tab.

Atrix inaccurate battery reading

Given that I use a lot of knock-off Chinese batteries and have tweaked a lot of things, I thought the wildly inaccurate battery readings I was getting on my Atrix probably wouldn’t get fixed.  Rebooting was a temporary fix, and I’d often get back 60-80% battery by restarting after going down to 15% in just a few hours, only to have to reboot again.  xda-developers, as always, to the rescue.  Completely fixed my problem, all hail open source and the community.  Motorola Atrix battery level fix.

Posted in Code at December 2nd, 2011. Comments Off on Atrix inaccurate battery reading.

X, Nvidia & Ubuntu

Thomas Jefferson thought that every law and every constitution should be torn down and rewritten from scratch every nineteen years--which means X is overdue.Six gigs later I find that 32bit ubuntu has no himem support and have to upgrade.

I run the antique nvidia-173 driver because one of the two video cards is a 5200.  My problem after install was a string of errors (EE) No devices detected errors which, as it does, drove me to xorg.conf.  What I realised was that the nvidia-settings thingy had left out the Bus IDs for the cards inserting instead lines like BusID “?@?:?:?”.

lspci to the rescue, and after I inserted the proper IDs (make sure to replace the XX:XX.X format returned by lspci with the XX:XX:X format needed by X), everything’s fine.

Just some keywords in case someone else runs into the same thing.  And it made today’s XKCD that much more enjoyable, finding it as I did after everything was fixed.  I think he has the slope inverted, because I definitely felt pretty good immediately after I got it working.  It’s all downhill from here: every moment brings me closer to the next time I’ll have to muck about with it.

Posted in Code at October 12th, 2011. Comments Off on X, Nvidia & Ubuntu.

Thank you MicroSoft

Thank you for protecting innovation with your lawyer army and Scrooge-McDuck-sized vault of gold.

I shudder to think of the world we might live in: a world where we mortals have discovered a way to highlight text on a page but haven’t taken the unobvious next step of adjusting that selection.  Thank you, Geniuses of Redmond, for discovering this strange and nearly mystical technology.

I’ll include your other innovations below for posterity, although my puny mind struggles to understand the nonobvious, substantial, and significant nature of these inventions.  In fact, I may go mad from the sudden expansion of my perspective.

Whatever you do, gentle reader, look away before reading about the way they’ve completely redefined the way we ‘annotate’ things:

The Microsoft-created features protected by the patents infringed by the Nook and Nook Color tablet are core to the user experience. For example, the patents we asserted today protect innovations that:

• Give people easy ways to navigate through information provided by their device apps via a separate control window with tabs;

• Enable display of a webpage’s content before the background image is received, allowing users to interact with the page faster;

• Allow apps to superimpose download status on top of the downloading content;

• Permit users to easily select text in a document and adjust that selection; and

• Provide users the ability to annotate text without changing the underlying document.


Posted in Code, Politics at March 23rd, 2011. Comments Off on Thank you MicroSoft.

Archos Gen 8 70i

I hope to have more about this later, but this took me a while to get around to researching so I thought I’d leave here for anyone else having the same problem:

Media files w/ ‘#’ in the name appear to stop the Archos Media Scanner dead in its tracks.  Not just skipping the files, skipping all files that would have been scanned after that file.

Arcade Fire, Elliott Smith, even the Minutemen…

Posted in Code, Music at January 25th, 2011. Comments Off on Archos Gen 8 70i.

OnMerge RT CF Merging

Looking around on how to merge CF with multiple entries in RT, I couldn’t find anything and this was only useful as a starting point.  I have to admit I couldn’t figure out how to add a section to the RT Wiki, so I’m leaving the code here for future reference.

Here’s what replaces the Custom Action Cleanup Code:

#Define the Custom Field Name Were Going to Play with.
my $CFName = 'Auction';

#Transaction Association
my $txnObj = $self->TransactionObj;

#Ticket Association
#The New Ticket your Merging into
my $ticketObj  = $self->TicketObj;
my $queueObj   = $self->TicketObj->QueueObj;
my $CFObj      = RT::CustomField->new($RT::SystemUser);
$CFObj->LoadByNameAndQueue(Name => $CFName, Queue => $queueObj->id);
unless($CFObj->id) {
 $CFObj->LoadByNameAndQueue(Name => $CFName, Queue=>0);
 $RT::Logger->warning("Custom Field: $CFName not for this Queue");
 return undef;

#The old Ticket you're merging From
my $oldTicket = RT::Ticket->new($RT::SystemUser);

my $field = $ticketObj->CustomFieldValues($CFObj->id);
my @currentvals;
while (my $value = $field->Next) {
 push @currentvals, $value->Content;

my $oldfield = $oldTicket->CustomFieldValues($CFObj->id);
unless ($oldfield) {
 $RT::Logger->warning("No entries for $CFName to merge");
 return undef;
while (my $value = $oldfield->Next) {
 my $content = $value->Content;
 if (grep {/^$content$/} @currentvals) {
 $RT::Logger->warning("Already found $content in $CFName");
 my ($st, $msg) = $ticketObj->AddCustomFieldValue(
 Field => $CFObj->id,
 Value => $content,
 RecordTransaction => 1

 if ($st){
 $RT::Logger->warning("Added $content to $CFName");
 } else {
 $RT::Logger->warning("Odd we couldn't set $CFName to $content");

 return 1;
Posted in Code at December 29th, 2010. Comments Off on OnMerge RT CF Merging.

WP-Quotes Admin

It appears that the authors of my quote generator plugin (wp-quotes) are gone, and the last WP upgrade (or maybe earlier, possible I didn’t notice) broke the admin interface to the quote management tool.

Nothing serious, it looks like the call to generate the link in the admin has changed. There are other quote tools out there, but changing would require much more attention than a blog with zero readers deserves. So for anyone else that might be interested, the very simple fix (in plugins/wp-quotes.php) is:

< global $submenu; < $submenu['edit.php'][40] = array(__('Quotes'), 8, 'edit-quotes.php'); --- > add_submenu_page('options-general.php', 'Random Quotes', 'Random Quotes', 8, 'edit-quotes.php', '');

You can find an updated archive if you want here.

On a slightly related note, I’ve now collected enough quotes that I’ll change the font color to something other than the background color.

Posted in Code, Meta at March 19th, 2010. Comments Off on WP-Quotes Admin.