Blog


Visual Friend Identification

Something that I've been tinkering around with the past couple of days is the concept of providing visual cues to associate a name with a face, so to speak. For example, I find it to be much easier, mentally, to make the connection between someones face and who they are then someone's cryptic username (which, in turn, is associated with someone's name, then associated to a face - a much, much slower process, for me, that results in a lot of dead ends). To combat this, I've been making a lot of changes to my personal data. The most notable of which is: Locating a headshot picture of all of your friends. In theory, I want to quickly and easily associate someone's online persona with their real life person. It's a challenge and I'm not yet sure how well it will go. However, in order to test it, the first step is to find as many friend headshots as possible. Here are a couple resources that I've used, thus far:

  • AIM Icons - Users of AOL Instant Messenger can easily associate an icon with their online persona, however most icons are nonsensical and are of little use.
  • Live Journal Buddy Icons - On LiveJournal, users have the ability to provide a few icons that they can, in turn, associate with certain comments/blog posts that they make. These can be quickly accessed by visited the URL:
    http://www.livejournal.com/allpics.bml?user=LJ_USERNAME
  • Gravatar - This site provides a hosting resource for associating a global image (avatar) with your email address, to be displayed on blog comments that you make. This is an excellent resource and as it comes with an API, very usuable too.
  • FOAF - If you use FOAF (or if you don't know what FOAF is, but use LiveJournal) then you may have access to a number of your friend's pictures FOAF provides a field for people to include a URL to their personal image, which can come in terribly handy.
  • Image Search - The final resource (unless, of course, you actually have a picture of your friend handy, then you can skip all the above steps) would be a thurough search of the Internet. Searching by name, nickname, username, and email address all help.

Now that you have a nice list of pictures for all of your friends, here is what you can do: Associate that picture with that person everywhere possible. The first thing that I did was to update the buddy icons for all of my AIM buddies. This gave me a highly usable visual buddy list to browse (also pictured above). The second step was to associate the images with all of my frequent email contacts. Thankfully, OSX makes this process terribly easy. I can take an email address/name from Mail.app, right-click, and add it to my address book. I can then edit the address book entry for that user and add their AIM buddy name. Now I've tackled two of my most frequently used forms of communication: Instant Messenger and Email, but that still leaves a large ocean uncharted: The web.

At this point in the game, I decided to go back to my old friend GreaseMonkey. Essentially, I wanted to write a script that would search through a page looking for certain names, nicknames, and usernames and insert an image to be associated with it. And so, that's what I did. Right now it's very rough around the edges and requires a lot of user customization.

  • name2face - This script requires a lot of configuration. Please modify the data structure within the program to change which users you would like to match and display for, otherwise you'll just see a few of my friends, currently.

Ideally I'd like this plug-in to pull from some sort of a dynamic XML repository (possibly in FOAF format?) that could be updated easily. The results are very interesting. Browsing social networking sites, Gmail, and other forms of communication have taken on a whole new feel. I really feel that a service like this has a lot of potential and should be explored more fully, which I hope to do soon.

Tags: friends, greasemonkey, network, social, visual

Modern Visual Programming

Today, the topic of Visual Programming happened to come up a couple times and I thought a discussion of the various (available) options would be interesting.

The one that I was immediately familiar with is Automator, which will be released with Tiger (OSX 10.4). Granted, this may not be a purely visual programming language, it does make the process of task automation painfully simple. My simply specifying a couple functions, matching up their input/output types (for example 'image', 'url', etc.) you can create a reusable script for your personal use. I'd imagine that something like this would play well with power-users/programmers who want to get the most of their data.

In anticipation for Automator (and Spotlight), I've begun the process of keeping my personal data in the Apple-sponsored applications (for example, Mail, iPhoto, etc.) and keeping a duplicate version always available online (Gmail, Flickr, Delicious, etc.) just in case. My hope is that by keeping all of my data centrally located, the process of task automation (even visually!) will become that much easier, but I digress.

Josh pointed out another visual programming language: RCX Code, the code behind Lego Mindstorms. Apparently there are two 'frontends' to developing for Mindstorms: 1) Targetted more at people who are not readily familiar with programming, a visual interface for developing an application (some example, and exciting, screenshots). 2) The raw code, obviously for the heavy-duty programmer.

What intrigues me about this particular interface is how Lego takes the complex processes of threading, synchronization, and looping (granted, not complex, but for a beginner, it could be daunting). Threading is represented by two columns of blocks, side-by-side, each one containing a process which needs to be completed. Once the code is compiled, the complex threading gets broken down and made such that even the basic controllers in the Mindstorms can handle it. Also, for looping, a large block is chosen, designed to repeat a number of times. Mini block processes are then dropped into the larger block, all of which will repeat those given number of times. I find this to be intriguing and I wonder how many young programmers are growing up with this as their foundation. As with the Apple computers and Logo of old, maybe these languages are leading the way for a whole new generation of developers.

Tags: automation, code, corp:apple, programming, rcx, task, visual

Current Projects

jQuery JavaScript Library

jQuery

Comprehensive DOM, Event, Animation, and Ajax JavaScript Library.

Recent Projects

Pro JavaScript Techniques

JavaScript Book

The best techniques for professional JavaScript. Published by Apress.