Archive for January 2009

Eric Blue’s personal memex and Personal Learning Environments

Just a quick pointer to an interesting post by Eric Blue on his personal knowledge management system (or Personal Learning Environment). It’s always great to see how others approach the general problem of organizing their knowledge, what they use for the different subproblems, how it reaches a “coherent whole” level.

I’ve been wanting to write here about Personal Learning Environments (PLEs) for some time. A few definitions are floating around, but my understanding is that they’re these set of digital tools we use to organize what/how we learn, considered as a whole, centered around the individual learner instead of a group (vs. Learning Management Systems, like WebCT or Moodle). A few other people have written about their own systems:

You’ve seen bits and pieces of mine through the posts, even though I learned of the term as I was creating the blog and doing the initial research, so until that point I didn’t see it in this light. Very interesting topic to explore, for the curious.

CUSEC 2009

Last 3 days (January 22-23-24) were the days of CUSEC 2009, the Canadian Universities Software Engineering Conference. I graduated last year, but the event makes for loads of geek fun, so I went anyway. Quick highlights of the non-technical talks I went to:

  • Leah Culver, cofounder of Pownce, now at Six Apart, opened the conference by speaking of pursuing passions, which is a recurrent theme at CUSEC. To her, that should involve lots of creativity, say being imaginative in repurposing her tiny apartment in California for parties. In fact, it turns out that a big part of her strategy revolves around partying, as she met Kevin Rose (founder at Digg and Pownce), Jimmy Wales (founder of Wikipedia) and other big names in such contexts. (Not to downplay her technical ability, though, as she has also contributed to the Django framework and wrote an OAuth library for Python.)
  • Avi Bryant, founder of Dabble DB, suggested we (in his terms) steal ideas from the academic world to bring them to market by actually making them usable. He showed a demo of his recent (quite magical indeed) Magic/Replace web app, which he said was based on research done at MIT.
  • Giles Bowkett had this wild presentation about his unusual career, showing over 400 slides in about an hour. The slides weren’t exactly packed with precise information, but it’s certainly the most entertaining use of PowerPoint/Keynote/whatever I’ve ever witnessed (though Avi Bryant live editing of Venn diagrams deserves mention too). To illustrate, let’s say it involved quite a few FAIL pictures. He demoed very quickly his Archaeopteryx random music generator program, a Lisp-inspired piece of Ruby that generates MIDI notes later sent to a sound synthesizer/program (he used Reason, IIRC, in his presentation). The result was a pretty good beat, even if didn’t get to hear much of it.
  • Joey deVilla, “the accordion guy”, gave this talk on the job of a tech evangelist, since that’s what he’s now doing for Microsoft. Curiously enough, he barely mentionned Microsoft, but he did play Nine Inch Nails “Head like a hole” on his accordion (entirely justified by earlier stories, btw), which resulted in one of those precious WTF moments that punctuate one’s life.
  • Francis Hwang made a presentation on the nature of software engineering, comparing it to other spheres of human activity. It was a very balanced talk, very interesting, if only for the fact that it departs from the way these comparisons are usually made. For example, it’s often said that software engineering is similar to art, and to him the link is pretty weak, whereas closer fields, intellectually, would be politics, law or economics (ex: politics is close due to the balance of interests involved in the design of systems, intra and inter-organization).
  • Last but clearly not least, Richard Stallman exposed his ideas on copyright and, of course, on Free Software, ideas which are available on the FSF site btw. Another local maximum of LOLs in the conference happened when he decided to auction a cute doll of a Gnu. Seeing him auction the thing was fun enough, but seeing it go to Joey deVilla, who paid it with his Microsoft credit card at the suggestion of the heckling crowd, was, err, priceless. deVilla inviting Stallman to join him in bringing order to the galaxy in a Darth Vader-esque voice was just icing on the cake.

Of course there was also a more technical side to the conference. I won’t elaborate too much on this, but I’ll mention the IBM programming challenge which was a bit weird for a competition: we were asked to make a spell checker / spelling suggestions engine. In 3 hours. No restrictions, be creative. So a few teams ended up writing a wrapper around Google spelling suggestions, as a joke. I didn’t submit anything, but a friend’s quick exploration did bring up the page on Peter Norvig’s explanation of the basic principle behind Google suggestions. The algorithm is interesting, if only for being so short and sweet.

Blog meta: change of format

Note: this applied to my old “programming blog”, which at the time was distinct from this one.

*  *  *

This blog seems to follow a very irregular pattern of activity, with lone posts here and there through time.

I think I’ll be changing the post format as I did for my personal knowledge management blog, gradually: more “here’s something interesting” posts, and perhaps even revisions to old posts with a changelog.

The idea behind this is to lower the amount of time required to post something, obviously, which makes my subconscious less prone to “repressing” the blog’s existence due to the otherwise huge blocks of contiguous time needed to keep it afloat.

* * *

On another note, I also just changed the landing page for, to point to the different websites on the domain. Having 3 blogs might seem a little bit overkill when you’re only posting once in a while, but they are of very distinct nature, so merging them wouldn’t make much sense from a readership perspective. I’ll probably make a merged RSS feed at some point, though.

Bookmark tags and ambiguity

I was recently talking with someone about bookmarking and he mentionned it’d be great if we could simply click the star button in Firefox 3 and have it automagically add machine-selected tags to the new bookmark. I thought I had heard about similar services, but had never tried any yet. Now, I did say I now “bookmark” in a personal wiki, but I still use a few social bookmarking services for links I want to share, so this would be helpful for me in that perspective.

Searching quickly, the software that approaches this idea the most closely seems to be HandyTag, a plugin for Firefox. I haven’t tried it yet but it looks for tags in the page title and metadata, tries to see what tags users on delicious are using and, lastly, uses another Firefox extension called KGen to use word frequencies on the page as yet another source for the suggestions.

The web applications I had heard about were Zigtag and Faviki, which were mentionned in previous months on ReadWriteWeb. I haven’t yet found a way to add a 1-click bookmark with any of these, though. Both Faviki and Zigtag come as bookmarklets. Zigtag also has a Firefox extension. They both present a series of automatically generated suggestions in a box similar to Google search suggestions. For niche pages, based on 4-5 ad hoc tests, Faviki seems to have more suggestions. For popular pages, they’re competing with delicious‘ suggestions drawn from the pool of user-added tags for a given URL, which in my experience are usually adequate.

Another web app which seems promising is Favo, which its homepage says will offer automatic cataloging, but it’s still in private beta so I’m not quite sure how that’ll end up in practice.

Ambiguity in tagging systems

Both services attack the problem of lack of semantics in tags, which is about ambiguity in tagging systems: if I tag a page “Apple”, is it the fruit or the company I’m referring to? Similarly, if I want to tag a page “computers”, do I use “computers”, “computer”, “personal_computer”.

So, basically, what these services do is provide suggestions for your tags, those suggestions having proper semantics. Faviki, for example, will have tags refer to Wikipedia entries, which have well-defined meaning (given Wikipedia has its own disambiguation process). In both cases you end up having suggestions like “Apple Inc.”, “Apple (fruit)”, etc. in a completion list.

Back to productivity

On the practical level, though, the suggestions can be quite numerous, and I’m not quite sure if, from a strictly personal perspective on the bookmark-retrieve process, they’d actually improve my productivity in the end: you have to go through the whole list of disambiguated suggestions until you find what you want, and I don’t have have that many bookmarks relating to apples as a fruit. Therefore it might actually make the process more tedious. But if I want my bookmarks to merge well in public lists, then it’d make much sense, and that’s why we’re using social bookmarking in the first place, right?

Yet, for the original purpose of 1-click bookmarking, I guess it’s not very appropriate. At least, if you feel lazy, they add some machine-extracted suggestions which you didn’t have in delicious, so it makes for more pages for which you don’t have to reach for the keyboard to bookmark.

As for Favo, we’ll have to wait and see.

Effective web search

(changelog for this post)

Searching the web is something I do dozens of times a day. Often, though, I’ll start searching and, not really aware of it, spend 5-10 minutes (or more) searching until I find the right combination of keywords to get to what I want. That a direct loss in the productivity department.

Here are a few tips I accumulated over the years to search more effectively. The list will grow as I discover new/better ones.

Search engine syntax

Fundamental, and best explained straight from the horse’s mouth. This best works by doing a quick brainstorming about relevant keywords that can be combined with operators (say synonyms combined with OR).

Terms likely to be in the page

Search for words likely to be found in the page, that characterize it, instead of terms in the title and main keywords (or in combination with them). That exploits the way search engines truly work, indexing the whole contents of pages.

The clearest example I can think of is when I’m searching for the full text of a classic book I know to be online somewhere, say some Shakespeare’s play. Instead of entering the title of the book and “full text” (ex: “Othello full text”), I’ll enter a few peculiar words I know to be in the book and not likely to be found together elsewhere, for example “thicklips kinsmen Brabantio grandsire” (ie. peculiar words found in the play Othello).

Of course in this case I need the text to be able to find it (say I rented the book at the library and want an electronic version). But in some cases I can predict the words I’ll find in a page, but not in the title. This happens all the time when I’m searching for programming questions. Instead of searching directly for the question that bugs me, I enter terms found in the “context” of the question.

Find the right, precise term first

A lot of my queries are for something I know must exist, I just don’t know how it’s called. For example, I long searched rather inefficiently for open source speed reading apps until I discovered they’re actually called “Rapid Visual Serial Presentation (RSVP)” apps.

Common to those situations, once you discover the right keyword, results abound by the dozen instead of dripping in accidentally once in a while. Therefore having the right technical term is often the key and, if you don’t have it, identifying it should be step number 1.

If you want to find the name for a concept/category and you have a few examples of elements of this concept/category, a good way to find it is by inputting these examples in Google.

Choose the right engine or directory

Google is the de facto engine to start queries, these days. But keep in mind specialized engines and directories exist. Say, for programming, there are open source code search engines (something I mentionned in an earlier post). For books, I refer to Amazon reviews, normally. For definitions, For encyclopedic content, Wikipedia. Etc. The key is in discovering sites with authority for a given topic or type of content.

Take advantage of your browser’s list of search engines (ex: you can easily add new search engines in Firefox menu) for those you use frequently.