Our music recommender site, inDiscover, is now a Bell Sympatico/MSN web site. The MSN part does stand for Microsoft so we did sell our soul a bit, but it is not any worse than sending Word documents by email.

It is also now fully bilingual (French/English).

The site is simple, you download (free) songs, rate them and the system will recommend new songs you are likely to like. There are a few twists to the site and you better go there yourself if you want to see how it works.

I was at the SCTIC-CREPUQ Meeting held at McGill University. CREPUQ is an organization representing all universities in Québec (Université de Montréal, Université du Québec, McGill University, Concordia University, Université Laval, and so on). SCTCI is the subcomittee on IT (in universities).

The meeting was about how people used IT in universities. There were many interesting discussions. Many discussions about Learning Objects to help professors (or students?), Pedagogical Engineering (I hate this term!!!) so that people get to “design” courses instead of simply teaching, WebCT as Prisonware, Standard bodies efforts against Open Source efforts, and so on.

Among the people present were Steven Downes, Griff Richards (who still doesn’t have a web site of his own), Gilles Gauthier, Marc Couture, and so on.

  • I learned about an initiative called RSS_LOM. I really like Stephen‘s differentiation: he is interested in online learning as opposed to eLearning. This being said, I think that anyone who does eLearning these days without doing online learning, is probably a bit out, so to speak. I was able to talk a bit more with Stephen later and I asked him how he could reconcile his fascination with RSS (which is meant to display only recent content) and the use of Learning Objects (which are meant to be long lasting). He said that with RSS, other people can capture the knowledge and store it in local databases, but that also, because we consider Web-based Learning Objects, they could not be long lasting because nothing is really permanent on the Web. Good points! Stephen also argues for a model with university professors doing research and not worrying about “teaching”. In effect, course content would not be rigid and would be aggregated in part by the students. You basically set the students free. Maybe that’s going to be possible on the day where pretty much all course content is available easily on the web. I suppose that university professors would still act as mentors, but also as reviewers to authenticate student learning.
  • There was a lot of talk about http://www.flickr.com/ as the new emerging model for meta-data: that is, meta-data entries and fields entirely defined by the users.
    There seems to be some confusion as to what the open source model is. People insist on a cathedral model where everything is careful designed in a top down approach, yet they claim to be inspired and supported by open source. I think it is a case of people using the open source term because it is fashionable, but I don’t think they are actually open source people.
  • Gilles Gauthier talked about his work in standard bodies and the problem they faced when translating IEEE LOM in French. I think this is very valuable work.

Update: Stephen Downes says my link should be http://www.flickr.com/ instead http://www.flicker.com/. While I know superficially both web sites, I’m not sure which one we were talking about at that conference. To make the matter worse, Lucas Gonze says we should actually attribute credit for the invention of Flcker to Josh Schacter.

Update: see Fast argmax in Python for the final word.

Python doesn’t come with an argmax function built-in. That is, a function that tells you where a maximum is in an array. And I keep needing to write my own argmax function so I’m getting better and better at it. Here’s the best I could come up with so far:

from itertools import izip
argmax = lambda array: max(izip(array, xrange(len(array))))[1]

The really nice thing about izip and xrange is that they don’t actually output arrays, but only lazy iterators. You also have plenty of similar functions such as imap or ifilter. Very neat.

Here’s a challenge to you: can you do better? That is, can you write a faster, less memory hungry function? If not, did I find the optimal solution? If so, do I get some kind of prize?

Next, suppose you want to find argmax, but excluding some set of bad indexes, you can do it this way…

from itertools import izip
argmaxbad = lambda array,badindexes: max(ifilter(lambda t: t[1] not in badindexes,izip(array, xrange(len(array)))))[1]

Python is amazingly easy.

As a side-note, you can also do intersections and union of sets in Python in a similar (functional) spirit:
def intersection(set1,set2): return filter(lambda s:s in set2,set1)
def union(set1, set2): return set1 + filter(lambda s:s not in set1, set2)

Update: you can do the same things with hash tables:
max(izip(hashtable[max].itervalues(), hashtable[max].iterkeys()))[1]

One of the most interesting talk we had at SWIG’04 was “Design Issues and Technical Challenges Making the Eatdrinkfeelgood Markup Language RDF” where Aaron showed why it was hard to use RDF in a XML project. I think it all boils down to the fact that we have no good widespread way of serializing RDF to XML. In any case, Aaron finally sent me a link to his NYTimes Widgets.

It lacks sufficient documentation for me to grok it quickly, but from what I understand, Aaron tried to create a useful and innovative RDF application. Here’s what he says about his widgets:

The New York Times includes a large amount of topical metadata with each article it publishes. These are widgets that, having harvested the data, try to do something interesting with it.

Paul Graham describes what good software developers do:

In software, paradoxical as it sounds, good craftsmanship means working fast. If you work slowly and meticulously, you merely end up with a very fine implementation of your initial, mistaken idea. Working slowly and meticulously is premature optimization. Better to get a prototype done fast, and see what new ideas it gives you.

« Previous PageNext Page »

Powered by WordPress