Category Archives: Software

Facebook chat on your phone

There has been a lot of talk recently about the enormous liberties Facebook Messenger takes with your privacy and whatnot, and frankly, what’s new? What the hell are we even using this crummy Facebook service for anyway? In the meantime, if you want to continue to chat with your Facebook friends on your phone, install any of the dozens of apps available for iPhone or Android that can do XMPP (Jabber) protocol chat, and set up the account with your Facebook username (which looks something like fred.flinstone.1234) and your password. On an Android, I suggest you use Conversations (free if you install it with F-Droid). Oh but you can’t send pictures or video of your cat, or do video calls, sorry. But for the rest of the time you can have text conversations with your Facebook contacts without it hoovering up your contacts database, call log, SMS message history, and location and sending it to Facebook, every time you call someone, send a message, or use Google Hangouts. (I wonder if Google know about that?)

The reason I know Facebook Messanger does this is because I used a second option the more technologically enlightened among you could consider, which is to use the Privacy Guard built into CyanogenMod Android, and possibly other ROMs, to restrict all its app permissions to “Always Ask”. By doing this, I was able to see what Facebook Messenger was up to. Any time the phone rang, or I made a call, up would pop a message asking whether I would like to permit Facebook Messenger to read my contacts database and call log. Same thing when I use Google Hangouts to talk to people on Google Plus. So I just made all the permissions “Denied” instead. But now that I have Conversations installed, I think I’ll just uninstall it. For more information on Privacy Guard, head over to Julian Evans’ blog post “How to use Android Privacy Guard on CyanogenMod 11″.

 

Fez repository plugin for Moodle

I have been writing a plugin for the Moodle Repository API that can now browse and search records in a Fez digital repository. Here’s the simple configuration, using the RMIT Research Bank as an example public access Fez repository:

Fez repository settings
To set up the Fez repository plugin in Moodle, simply give it the URL of your Fez repository, and how many records per page you want.

And here you can see that the plugin can browse communities, collections and records just like any other repository plugin:

Fez repository collections
The collections available in this Fez repository.
Fez repository search results
Fez repository search results and the record listing of a collection are displayed with the same interface.
Fez repository record
Selecting a record works as expected - including the title, author, date created and date modified metadata.

So far, it only supports using external files, and the resulting links are links to the Fez record view, not the attached files. This also means that you still have to add the title and description manually, even though that metadata is present in the metadata of the files presented by the repository plugin! I hope to somehow fix this with work on MDL-32130 on the Moodle bug tracker.

Citing Fez repository documents in Moodle

Today I wrote a text filter for Moodle 2.2 which will help Moodle teachers and admins cite documents from a Fez digital repository. Fez is a digital repository written by University of Queensland library staff for the university’s digital assets and for use as an open access research repository.

The best fit in Moodle for a digital repository such as Fez would be through a repository plugin, but the Moodle repository API assumes that you only want either a file, or a URL. I think there’s room for the API to be able to return a snippet of HTML as well – of an appropriately formatted link to the document in question. For instance, it would not be enough to simply present a URL, such as

Link to a document

it would instead be really nice to be able to have the repository plugin return a <div> element, with a formatted citation, such as:

Taylor, William (2005) (FAB_15_2_095) Lest We Forget: the Shrine of Remembrance, its redevelopment and the heritage of dissent. Fabrications : The Journal of the Society of Architectural Historians, Australia and New Zealand, 15 2: 95-112.

This would also apply to other repositories – it would be nice if the Flickr, Picasa and YouTube repository plugins could return a thumbnail of the image or video instead of just the URL. Until that happy day arrives however, we can use a filter instead. After installing the filter, we tell it which Moodle content formats we would like it to parse, and the base URL for our Fez repository:

Fez text filter settings in Moodle
Fez text filter settings in Moodle

Then, in our content, we insert a search term or a Fez document PID into a placeholder using double curlies, e.g.

Inserting a Fez document into Moodle content
Inserting a Fez document into Moodle content using a placeholder.

Which when we save, and have the Fez filter enabled, will produce a nicely presented citation:

Fez document citation in Moodle
A Fez document citation displayed in Moodle.

It would not be very difficult to convert this into a repository plugin that simply returns the URL to the document, or to extend or clone this filter to talk to other digital repositories, such as EPrints, DSpace or Fedora.

TODO: add a setting to control how many search results you want to display.

Compiling Javascript?

Okay Joel, interesting argument, and I sort of agree, but please don’t make silly stuff up to support your argument: http://www.joelonsoftware.com/items/2007/09/18.html

“You can follow the p-code/Java model and build a little sandbox on top of the underlying system. But sandboxes are penalty boxes; they’re slow and they suck, which is why Java Applets are dead, dead, dead.”

Well that’s not really true. Java Applets died because when Microsoft swamped out the Sun JVM with its own crippled 1.1 VM, nobody could realistically write to the much better Applet APIs that came out after version 1.1, so we either wrote crap AWT applets or ActiveX controls instead (a whole other world of pain and silliness). Also, the JVM is hardly “slow” these days, and is certainly faster than your average JavaScript engine.

“What’s going to happen? The winners are going to do what worked at Bell Labs in 1978: build a programming language, like C, that’s portable and efficient. It should compile down to “native” code (native code being JavaScript and DOMs) with different backends for different target platforms”

What, so JavaScript/DOM in a browser isn’t a frickin’ sandbox? Hello?! It seems ludicrous to add another language compiler layer on top of JavaScript/DOM, when you may as well write it in Java and “compile” it into an applet, which will have the same access to browser capabilities, require the same security restrictions and functionality sandbox, run a lot faster, and not require learning a new round of language, compilers and APIs.

Advice to Vodafone NZ

This is a letter I wrote to Vodafone. I am SO incredibly fed-up with their BOLLOCKS voice menus, so I thought I’d be pro-active about it…


I want to talk to whomever developed the voice menus for 777, because I want to offer some free constructive criticism. I guess it is because I develop software for a living and dislike using poorly thought-out solutions.

The only time I (and probably loads of other people) ring 777 is when I (we) want to top up, probably at least half the time by credit card. If you check your logs, I’ll bet topping up is what people are doing at least 75% of the time.

Let us say that I want to top up my mobile using my credit card. Please refer to attached diagram. Here’s how it goes:

  1. Blah Blah Blah random announcement that I can’t skip by pressing a button. Too bad if I’m low on battery life.
  2. “…to top up your mobile, press 2″ I press 2.
  3. “…to top up using a credit card, press 2″ I press 2 again. So far so good.
  4. “To top up, press 1. For customer services, press 2.”This menu is completely redundant and should be removed. At this point, I am about to indicate (for the second time), that I want to top up my mobile with a credit card. Why would anyone with an IQ greater than a cabbage want customer services at this point? Customer Services is available by pressing 9 at the first menu.

    Customer Services should be globally available from any menu by pressing the same key, (for example 0), and help should similarly be available (for example the * key)

  5. By pressing 1, I finally get put through to something useful, where it asks me to enter my mobile and PIN. Fair enough, but wait! What’s this:
  6. “To register a credit card, press 1, to top up, press 2.” Fair enough I suppose, but I have already indicated (twice) that I want to top up my mobile using a credit card. Pressing 2 gives me yet another menu:
  7. “To top up your mobile, press 1. To top up another mobile, press 2.” This is now the fourth time I have had to tell the system that I want to top up my mobile with my credit card. For a use case that probably occurs more often than most of your other use cases (check your logs), That is three times too many. These last two menus should be merged:
  8. 1. Register a credit card
    2. Top up your mobile
    3. Top up another mobile

Cheers