Archive for the ‘General’ Category.

Google CADIE and studies in machine learning

Given recent Google’s developments in artificial intelligence, it seems the field has reached a very exciting milestone! The first artificial soul humanity produced has developed a surprising personality, though.

This seems like a good context to announce that this September I’ll be starting a master in computer science, more specifically machine learning, at Université de Montréal. And that was decided before April 1st, if you’re wondering 🙂

This blog might therefore turn towards such topics as neuroscience, AI, cognitive science and Zen philosophy.

Just launched Clusterify.com — small project meetups site for programmers

Here’s the project I’ve been working on for the past 3 weeks with another programmer named Aneesh: Clusterify.com .



It’s a site on which you send project proposals, usually very short in time demand (2 hours is suggested), and through them you meet other programmers.

I can’t spend too much time writing a two-volume novel about it for the moment, as the launch is still ongoing, but here’s the launch thread on Hacker News.

Extension to jQuery autocomplete for multiple tag suggestion

The project I’m working on has fields that allow you to enter a series of tags. I wanted an autocomplete functionality for these, and looked at what’s already available using jQuery. I found the popular jq-autocomplete to be interesting, but it didn’t have the functionality out of the box. Yet it allowed for extension points in its options. I created custom functions to achieve the goal:

function lastWord (str) {
	var words = str.split(" ");
	return words[words.length - 1];
}

function customTemplate(str) {
	return "<li>" + lastWord(str) + "</li>";
}

function customTextInsert(str, original) {
	var firstWords = original.split(" ");
	firstWords[firstWords.length - 1] = str;
	var toReturn = firstWords.join(" ");
	return toReturn;
}

function customTextInsertBinder(input) {
	return function(str){ return customTextInsert(str, input.val()); }
}

function customTextMatch(typed) {
	return this.match(new RegExp(lastWord(typed)));
}

Now, when I want to have a field autocompleted, I load the list of tags in a JavaScript array (here called “site_tags”), and I call:

	$('#id_tags').autocomplete(
		{list: site_tags,
		match: customTextMatch,
		insertText: customTextInsertBinder($("#id_tags")),
		template: customTemplate});

AI, neurosciences, generative art and YouTube

In the two years preceding my entrance to university, I had spent some time learning about AI and neurosciences, but never delved really deep. In university, having even less free time, I focused more on software engineering. Ever since I’ve wanted to get back to the topic. Lately, pondering about how to fit that into my schedule, I thought this blog will be a perfect pretext: explore the topics and write about interesting things I stumble on along the way.

So I’m still thinking of how to approach this in a structured manner. Yet, sometimes idly browsing YouTube brings amazing results. I was looking for environments in which to test small neural networks “hello world”-equivalent programs and discovered all sorts of interesting videos, only tangentially related, but hey, that’s the whole point of “stumbling upon”, right?

First there was this generative art piece. This reminds me of fractals, though the principle is quite different (the artist says he’s trying to emulate the principle behind butterfly wings patterns ). If you like Winamp/WMP/iTunes visualizations, then try searching for “generative art” on YouTube. Further tangential wanderings led to these:

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 fsavard.com, 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.