Archive for the ‘Ruminations’ Category

Get a file from your home box via a microblog or IM

Here’s the story: I’m stuck behind a corporate firewall and I’m not allowed to SSH to my home box. It sucks, but that’s the situation. The problem is that I want to get a file from home, and currently I can only really do that via SSH. I need a way to get files off my home box that doesn’t involve opening it up to unwanted (possibly malicious) traffic.

One idea is a response bot sitting on either IM or a microblogging site (e.g. Twitter, Identi.ca), or even possibly email. It gets a message containing a file path (which of course I would know by heart… possible pitfall there), and either sends me the file in reply in the case of email or IM, or for a microblog, it uploads the file to an FTP site or box.net or something, and posts me a link. It’s kinda half baked cos I only thought of it 5 minutes ago, but at least now it’s written down somewhere.

Why a wiki would make a terrible address book

This is a companion post to the one I wrote yesterday. If you haven’t read that yet, it might be worth a look.

So I thought a bit more about wikis and how wonderful they are, and thought, this sounds too good to be true. What are some of the things that are going to piss me off if I use a wiki for my address book?

Come on, there’s got to be something!

Aha!

There are no standard formats. Because everything in a wiki is plain text or HTML, it’s up to the user (i.e. me) to make sure that each phone number has the required number of digits. It’s impossible to validate stuff like that, because the data you enter really has no idea what it’s supposed to be. This is very different from normal address books, where every piece of data you enter knows exactly what it’s meant to be, by virtue of where you entered it.

Useful semantic features are staggeringly difficult to implement. Following on from the point above: if we can’t identify a phone number, how are we supposed to make it actionable (e.g. “click to call”)? Conventional address book software has it easy here – it knows each and every time it encounters a phone number. Our wiki doesn’t have that luxury – it’s got to be smart instead.

The usability problems with programatically recognising particular patterns are as follows:

  • False positives annoy our user.
  • False negatives annoy our user.
  • Asking for confirmation annoys our user.

In summary: unless it’s perfect, it’s annoying. Possibly far less annoying than not having it, but annoying all the same.

I can hear some of you out there crying, “what about if I specify where the phone numbers are?” Well, here’s my answer: unless you’re a Semantic Markup NutTM, specifying stuff like that manually is more annoying than all the above points combined. Obviously, this is a really long way from being a solved problem.

You have to define your own structure. One of the easy things about a run-of-the-mill address book is that it gieves you structure for free. You don’t have to think about how to put in a phone number. You just whack it in the “Phone no.” box, and Hey Presto! Your program knows it’s a phone number.

If you want your wiki to recognise phone numbers, you’re going to have to tell it where they are. And that ain’t easy with free-form text.

A useful wiki’s lack of predefined structure must be balanced out by cleverness. Your cleverness. You can do this in two ways: you can make your wiki clever, which is Really Hard, or you can give it a structure that you define, which is easy, and then maintiain it, which is Very Hard. Unless you find an easily maintainable structure, which is also Very Hard. Besides which, enforcing lots of structure is one of the things from which a wiki tries to free you.

But hey, very few things are both easy and worthwhile.

So my title for this post is a bit of a misnomer. Sorry for misleading you. You really could use a wiki to make a really great address book. But it would be Really Hard, and it would also suck a lot until you got it right. Which, incidentally, might never happen.

But it could be done. You’d just need to be very patient and very clever.

Why a wiki would make an awesome address book

I’ve been thinking a bit about wikis recently, from how I’d use one for a particular project, right through to how I’d implement one. Something hit me recently which may have been obvious to everyone else, but came to me in a flash of light: wikis are so flexible, you can use them for anything. Really. Absolutely anything.

I’m going to assume you already know what a wiki is. If you don’t, take a look at this explanation by CommonCraft, then come back. I’ll wait here.

So. Just to prove how great wikis are, I’m going to show you why you could use a wiki to make a truly awesome address book. In fact, I reckon this address book would be better than some examples of dedicated address book software.

What does a wiki have over a normal, database-backed address book?

It’s free-form. A wiki can contain any information you want to store (and are able to encode). It’s not restricted by strict formats or sets of fields, meaning you make your own structure. Why is this useful? Well, I have a mate named Jamie, who has 11 email addresses. That’s right. Eleven. Most address books will only let me put in 2 or 3. See my problem? Well, because wiki pages are free-form text documents, I can put in as many email addresses as I want, in whatever way I want to lay them out.

It’s freely editable. Normally only one user can see any given address book. If not, it’s probably run by a business or organisation, and that will mean that only an admin can edit it. Either way, changes go through one person, and one person only. Because that person has much better things to do with his/her time, we get problems with out-of-date information, typos, etc, that take forever to get fixed (better things, remember?). Wikifying my address book does not allieviate these problems on its own, but it does provide an opportunity to fix it, which a normal address book does not.

It’s extensible. I’ve got several groups of friends, and all my friends have many interests and things in common with each other. They’re human, so this is inherent in their nature. But a normal address book doesn’t let me document these associations usefully. I can apply some pretty broad category-type groupings, but mostly it’s very hard to identify relationships between people. The closest I’ve seen is the “Spouse” field in the Windows Mobile 5 Contacts app, and even that is just a text field – I can’t even link to another person!

With a wiki, not only can I link to (or from!) other people within my address book, I can also link to outside resources, for example a group or association website, or just my Christmas card list, or other (as yet unimagined) parts of my wiki.

It’s searchable. When you search your address book in Windows Mobile, you’d better be searching for a name or a phone number. If you’re searching for anything else, forget it. Email? Nope. Category or group? Better off eyeballing the list (and that’s assuming you’ve maintained your categories diligently, and who has time for that?).

Wiki? It’ll index everything, from the mystery phone number to the birthday present ideas (regifts, anyone?). That’s what I want.

It’s version controlled. Everyone makes mistakes, so you’d be foolish not to allow for them. Most apps have an “undo” button, but address books don’t, in the main. Not once you’ve saved your update, anyway. So say I overwrite an important phone number with another important phone number. A wiki (a good one, anyway) will let me go back to the old version. I don’t know of any address book that does that.

Its functionality is limited only by your imagination (and programming skills). Most wikis have some kind of plugin/macro architecture. At least the self-hosted ones do. That means that if I have the programming nous, I can make it do whatever the hell I want. Ain’t no address book in the world that will do that (except maybe Thunderbird, and possibly Gmail with Greasemonkey).

UPDATE: I’ve written a “devil’s advocate” to this piece: Why a wiki would make a terrible address book

Doing text searches on print music

I’ve been playing around with Tracker (the Linux text search tool) this morning, because I’ve just received a bunch of sheet music in PDF form, and I wanted to be able to search for songs. And the file naming system used by the providers of these PDFs sucks major arse. So using Tracker to index the songs so I can search for them by title (and, incidentally, lyrics) seemed like a pretty logical thing to do.

But I want more. I want to be able to do this for my hard-copy music as well.

My singing teacher does something like this. He has a dirty great spreadsheet with all the names and composers of all the sheet music he owns (as of the last time it was updated), to which he refers when he wants to find something. This seems very kludgy to me, mostly because he refers to the hard copy. And that takes up nearly a ream of A4 paper.

So how can I get all that metadata into my PC without having to type it all in? Excessive scanning is also out because I’m too lazy.

The solution in my mind at the moment is scanning just the metadata: the title of the song, the composer and show/opera if they’re there, and the book and page on which it appears. In short, the contents page of any given music book. If I scan and OCR those to a sufficient degree of accuracy, I should be able to find what I’m looking for (assuming I have it). Especially if I can scan it into PDF format with the OCR text included. That way, the original image is still there for me to read, even if the computer can’t. So if I’m looking for the song Piano Man, but the OCR hasn’t recognised it, I can search for something like Billy Joel and eyeball the results. Less efficient, to be sure, but it’s only a backup option.

Now obviously this approach doesn’t work so well for searching on lyrics. For that to work, I’d need to scan every page of music I own, and that just doesn’t scale. The only alternative would be to get access to an existing repository of song lyrics, and get the title from there. Now, where would I find such a repository?

Wait a minute… the Internet!

Here’s a brief, half-baked outline:

  1. Search Google (or a more music-specific resource) for the lyrics in question
  2. Grab the song title from the results. How, I don’t know just yet, but <title> tags seem like a likely option.
  3. Search on my PC using Tracker for the title I’ve found.
  4. ???
  5. Profit!

One more idea for the pile.

Putting links in non-text media

I just watched a couple of concept videos by Aza Raskin of Mozilla Labs, and they left me curious, wanting to know more. There were a couple of links at the end of each video that I wanted to visit, but I didn’t. Why not? Too damn hard. So hard, in fact, that writing about it is easier. I would’ve had to cue each video back to the frames with the URLs, then type them! Typing! Frickin’ URLs! I thought the web was past that.

So this experience got me thinking: how can this be made easier? How can I make links in video?

One thought comes immediately to mind: Let’s have some clickable “hot spots” in video, that link to somewhere. If I put a URL in my video, I can put a hot spot over it which, when clicked, takes me to the URL being displayed. The thing I like about this idea is that anything can be clickable, whether it’s a text URL, that awesome car the video is advertising, a company logo, or Rick Astley’s crazy dance moves.

This is cool as far as it goes, but it’d be a complete bitch to generate. It means substantial extra work for the video creator, and let’s face it: most YouTubers are not dedicated (obsessed?) enough to do much more than a little editing to remove obvious mistakes. We really want this function to be accessible to everyone.

Next idea: OCR on video. I actually like this idea less, but it does have the advantage of requiring zero human intervention to work properly. That said, it would make things a touch slower, given that our software would have to analyse every frame for characters, and then see if they make a valid URL. Of course, if it doesn’t, we can still do things, like google the text, but that actually makes the problem worse, because we have to process all text, not just URLs.

The biggest problem with this one is that it’s really still text-only, and if our algorithm doesn’t recognise the text, well, we’re screwed (or at least marginally frustrated). Also, you only look at Evernote to see that OCR really hasn’t gotten as reliable as it needs to be for this kind of thing to work.

Another alternative is to insert Quick Response (QR) codes into videos. These have the advantage of being instantly recognisable (indeed, unmistakable) for what they are, they require change to existing video formats (they’re made of pixels, after all), and anybody with an appropriate capture device can use them. Appropriate capture devices include any camera phone (with the right software), or any video player that would be used to view the video (including some of the aforementioned camera phones). So in terms of compatibility, big plus to this one, especially for non-computer media. That’s right. You could put these things on TV, and they could still be used.

The problem is that QR codes require dedicated screen space. Unless you’re really creative (and somewhat heavy-handed), you can’t work one into your video and still have the video flow, especially because in order to be usable, it’s really got to stay in one place for a good couple of seconds. Also, QR codes are made to be machine-readable, not human-readable. You can’t tell what a QR code will do by looking at it. There is an etiquette developing about displaying the action a QR code will take, but it’d be very easy to rick-roll somebody (or worse – think phishing) using a QR code. These two shortcomings mean that QR codes are a step in the right direction, but definitely not the final solution.

In short, this really isn’t a solved problem, or anywhere near it. Links are still only really at home in text-only media (i.e. HTML code), and it will probably stay that way for quite a while. But thought is required to make this stuff happen. I’m sure somebody has had all these ideas already, and is quietly working on putting them into practice. I hope it happens soon.

Next question: How do you get links into audio?

Death, zombification or humanity? Social interaction, our kids and the Internet

My darling’s mother is a Luddite. I don’t mean this as a criticism, I only mean that she and I have a significant difference in points of view. Last night we got onto the subject of computers, which meant I was regaled with complaints about how they don’t work and they’re far too expensive for something that does so little.

Unfortunately, I can’t put together a convincing argument on my feet. I just can’t think fast enough and talk at the same time. As such, my attempts to bring her around were spectacularly unsuccessful. What was more interesting, though, was the discourse that followed between my sweetie and I.

She raised some concerns about the Internet distancing people from one another. This was completely contrary to my viewpoint, in which the Internet connects people and brings them closer together. The difference came from the fact that I was thinking of shallow connections, the kind of people that you converse and have fun with, and occasionally enjoy a bit of more serious conversation. My sweetheart was thinking of the deeper relationships that (in my experience) you only really get from “face time”.

Time for a little aside. There are obviously certain kinds of person who can develop meaningful relationships with people on the Internet. There are also those that can’t. For example, an acquaintance of mine went to the UK a few years ago, and while she was there she spent 6 weeks staying with people she’d only ever met online. So there was a degree of trust there that others (e.g. me) wouldn’t even think of giving to somebody you’d never met in the flesh. It really really depends on what kind of person you are, and what kind of situation you’re in.

Another similar (but different) concern raised by my lady love was that the online world has (or will soon develop) the ability to completely replace the superficial face-to-face connections that people used to make every day. For example, the person behind the counter at the supermarket could be replaced by a grocery delivery, and the person at the post office where you pay your bills is superseded by the online payment system that I use.

The idea underlying my darling’s fears is that of ubuntu. Ubuntu is the idea that we only recognise our humanity because we see it in others. The Internet’s potential for distancing people from each other, she said, presents a danger to us as a society. We may choose to replace our deep, meaningful relationships with a plethora of shallow connections to people we barely know.

I share my love’s concerns. Really. I, the computer geek who spends 6-8 hours a day connected to the Internet, am worried about what the Internet might do to humanity. I’m worried about it in the same way that I’m worried about humanity having the use of nuclear power. I acknowledge that it might do great things for us, but I also fear that it may destroy us. And I believe the same is true of all disruptive technologies. With every truly new thing that we invent, we create a risk that we will kill ourselves (or at very least change ourselves beyond recognition) before we learn to use it responsibly. It’s just part of being an intelligent and creative culture.

There is hope. We need only look at today’s children diving into the online world, grokking it so well that their parents can only look on in wonder. I know a couple who marvel at their six-year-old’s ability to pick up computer skills in minutes that it took them hours, days or weeks to acquire. The old joke about getting your nine-year-old to fix your computer for you is amazingly close to being the norm, because kids’ natural ability to learn means that they just soak this stuff up.

But there is also danger in that world, as exemplified by aggrandised reports of the predators we see online. Predators like paedophiles, scammers, haters and bullies exist just as much in the online world as in the physical world. What we need to realise is that they are just the same online as in “real life”; they simply use different (and sometimes more effective) tools and methods. These predators are inevitable in any system humanity creates: it’s a niche that exists in all environments, be they ecological, economic or electronic. So instead of acting to eliminate them, we need to teach our children to notice and avoid them, as we do in the physical world by teaching our kids about principles like “stranger danger”.

The point where we run into trouble is that our kids are going to know more about the online world than we do. This shakes our confidence and makes us doubt our ability to teach the principles that our kids need to know. So we make the mistake of teaching them nothing. We rely on childcare centres and schools to teach their children the social skills and etiquette they will need to get on in life. As IRL, so online. Educational facilities are not equipped to teach them that, at least not all on their own. It’s the responsibility of family, in conjunction with the whole community. The old saw “it takes a village to raise a child” is what I’m talking about here. But that’s a rant for another time. I think the essence of the point I’m trying to make is that we need education of the whole community, by the whole community, with a body of common knowledge and wisdom that grows over time. As IRL, so online.

Follow

Get every new post delivered to your Inbox.