More About the M-DEX, and a Cool Blog: Hack and Hear [en]

[fr] J'ai trouvé comment faire marcher le M-DEX correctement! C'est pas si mal!

I have just listened to the really interesting talk on audiology, hearing aids, and hacking them embedded below. Helga (@helgarhelgar), the speaker, is a friend-of-a-friend, fellow geek (probably geekier than me!) with hearing aids. And she has a few years’ headstart on me exploring the tech. I’ve just started going through her blog, hack and hear.

Midway through her talk, I was inspired to give the disappointing M-DEX another chance (I wrote about it in my previous article about hearing aids).

Lo and behold, I figured it out, and it doesn’t work too badly!

M-DEX

Here’s the trick:

  • first of all, it increases the general volume of the hearing aids, so the horrible crackling sound I heard when I tried to use it with the phone is actually (mainly, as far as I can tell) outside sound: muting the “room” (with the mute button) takes care of that
  • second, music sounds like crap, even on the music programme (the M-DEX music programe — as far as I’m aware my aids don’t have one yet); this is maybe because of my hearing aid settings or programme, and understanding better how compression works and feedback loops are countered, I’m also understanding why my hearing aids behave badly during my singing rehearsals => so I’m sticking to voice for the moment
  • third, the M-DEX user interface is pretty crap, it’s hard to figure out which button to press when to obtain a desired result: what I do now is first mute, then press the middle button to get to the bluetooth menu, then enter that; however, if bluetooth is on and the device is selected (on my computer for example), it “switches on” when I start playing sound. Pressing the red button when listening to sound from the phone/computer and when on mute goes back to the main programme and un-mutes (if you’re just on normal mute it doesn’t do that). Very confusing. It’s probably going to take me some time to learn when not to press on which button.
  • fourth, it’s possible to pair the M-DEX with more than one device (I mistakenly thought it wasn’t) — to prevent the M-DEX from kicking into gear unexpectedly, I turn off bluetooth on the devices if I’m not using them, or turn off the M-DEX
  • fifth, the M-DEX needs to be pretty close to the hearing aids (which is why they provide a lovely strap so you can hang it around your neck like a necklace), or at least somewhere that is at a stable distance — if you move it around it crackles really annoyingly, and if an ear gets out of range the sound in it dies.

So, I might end up keeping the expensive toy after all if I settle on the Widex hearing aids! Still need to test it with a real phone call though, which I’m not going to do while in Spain.

Update: looks like I’m not alone in thinking the M-DEX is suboptimally designed!

After the glowing review of my hearing aids and my audiologist, it is unfortunate that I have to be so negative about the other component in question. The M-DEX is a piece of shit — I am a software engineer and architect, and I have never seen such poor interface quality or assumptions about the listener.

Lift09 — Melanie Rieback — RFID and Security [en]

Whitehat hacker.

RFID uses radio waves to identify things. Shows much of a promise for breaking (?) into things. Next low-end of computing.

You have to bring virtual attacks into the physical domain, when it comes to RFID.

Some security problems:

– Unauthorized tag reading
– eavesdropping
– tracking
– tag cloning
– denial of service

Wardriving for passports. Skimming credit cards from a distance.

Low-level misuse of improperly formatted RFID tag data.

Three main kinds of RFID Malware:

– RFID exploits
– RFID worms
– RFID viruses

“Is your cat infected with a computer virus?” (pet tagging *steph-note: Bagha has one!*)

Google trends for RFID: biggest peak just after Melanie published her paper.

2 bio public transportation system was hacked in and 8-week project by students. Amsterdam.

Issues: same company designing and auditing the back-end security of the system. *steph-booth: gosh, what do people imagine?*

People in charge don’t listen about these issues until they’re demonstrated.

Melanie has worked on a device that does penetration tests and acts as a firewall for RFID.

Can spoof and jam RFID tags.

Listens to the first part of the query trying to figure out what it wants to do, and if it’s something not allowed, it sends out random noise (selective jamming). Filter inbound and outbound queries.

Security: RFID fuzzing.

All the hard work for cloning public transport passes has been done. Just needs to be put together.

The RFID Guardian is being commercialised now (so it’s not just students who are dangerous now).

Companies and governments assume that these attacks are going to stay in labs. They need to wake up. Why put the tools into the hands of the bad guys? The bad guys are going to have the tools any way, it’s time for the good guys to have access (full disclosure). If computer scientists have the right tools they might be able to prevent lots of these attacks. We need an RFID security industry.

The whole project is open source. Hardware and software.

Ridding WordPress Plugins of Template Tags [en]

[fr] Cet article décrit une méthode permettant de se défaire des "template tags" qu'utilisent certains plugins. Plutôt que de copier le fameux template tag à 3 endroits différents dans son thème (comme c'était le cas auparavant pour Basic Bilingual), il est possible de modifier à peu de frais un plugin pour qu'il injecte automatiquement son contenu dans le blog.

If you’re like me and use a bunch of plugins to liven up your WordPress blog, you’ve probably noticed that adding template tags in your favourite (or favourite-of-the-week) theme files can quickly become a royal pain in the neck.

One of the things I wanted to do with Basic Bilingual, and which I did with the last release, was make the plugin inject the text for the “other excerpt” (the French text you can see at the top of this post) automatically into the templates and feeds.

Once I’d figured out how to do that, I realised I could modify other plugins, too. And I’m going to tell you how you can do it, too. This method should work for any plugin which generates a template tag, as long as you want the content generated by the plugin to go immediately after or before the post content. (I’m still working on advanced rules for cases where you want to make modifications elsewhere in the template.)

Christine‘s Inline Tag Thing put me on the track (thanks!), as it does just that. Here’s the trick:

  1. create a function which concatenates (= “adds”) the plugin output to the content
  2. add an action hook to the plugin to apply that function to “the_content”.

Fear not, I’ll explain all. You don’t need to really know much PHP to do this, as long as you’re comfortable wading through a bit of code and copy-pasting stuff and making a few small modifications.

Let’s take an example: the Similar Posts plugin, which I’m now using to point out posts related to the current one (normally, in a box at the top of the post if you’re on the website, and as a list at the end of the post if you’re reading the feed).

Similar Posts provides a template tag, <?php similar_posts(); ?>, which you can paste in your template where you like the related posts to appear. Personally, I want them to appear on the main blog page, on the individual archive pages, and on the monthly, category, and taggy archive pages. This means I need to paste the tag into at least 3-4 different template files. And if I decide that I want the tag at the top of the post rather than the bottom, or I decide to remove it, there I go again. Not optimal.

So, here’s how I made it “better” (for me):

A. First, I looked at the plugin code to figure out where the template tag function was; in this case, quite easy, it’s the function called similar_posts(), logically. Here are the last two lines of this function, which do the actual data output:

print $result;
if (defined('POC_CACHE')) print $cache_time;

I changed them to:

return $result;
if (defined('POC_CACHE')) return $cache_time;

So that they didn’t print directly (ie, output text), but just return the value of the data we want to insert.

Then, I created the following function:

function sp_embed_similar_posts($content) {
    $content = similar_posts() . $content;
    return $content;
}

This function takes one parameter ($content), and sticks the output of similar_posts() in front of it. Now you see why we needed to change the other function so that it didn’t print. We’re just modifying the value of the $content string. This new function returns the modified value for the content (in our case, imagine it as being the content of your post with the code for the similar posts listing stuck in front.

Now all that is left to do is to tell WordPress to actually use that function at some point (plugins are usually a collection of functions, followed by a series of “hooks” which actually execute the functions at certain chosen moments). Here’s the action we’ll use:

add_action('the_content', 'sp_embed_similar_posts');

Try it!

This will also add the list of similar posts to the feed.

So, in summary, here is what we have done:

  • modified the template tag function so that it returns a value instead of printing it (in some plugins, you’ll find a function that already does that!)
  • created a function to stick that value on the beginning or end of a parameter, $content
  • add an action hook on the_content to execute the function.

Happy hacking!