Content Analysis of the Leaders’ English Debate

Le débat des chefs offre l’occasion de faire des analyses de contenus très intéressantes. En effet, les politiques des partis et les opinions des chefs sont condensées et distillés à l’extrême. Il est donc possible de brosser un tableau impressionniste des préoccupations canadiennes (ou du moins, celle des chefs). Malheureusement, la transcription du débat francophone n’est pas disponible; alors, l’analyse portera sur le débat anglophone.

The leaders’ debate is a golden opportunity to measure the Canadian political landscape as the primary talking points of the leaders and their parties are condensed into a manageable size. Using the transcript of the debate, I used a co-word analysis to try to extract the gist of the debate. I think the resulting maps are interesting and can shed light on current political trends.

Continue Reading

Legislative Explorer | Multidimensional Vote Explorer

Less visually striking than my last project, this visualization shows the voting patterns of Canadian Members of Parliament. It uses a Principal Component Analysis (or PCA) transformation to convert the multidimensional voting record of each MP to a 2D (or Cartesian) form.

Each point on the chart represents an MP. The color of every MP follows their party affiliation. They are tightly clustered because of party discipline :  in Canada, MPs normally vote in accordance to directions given by the Prime Minister.

 

Continue Reading

Map of scientific collaboration between researchers

I was very impressed by the friendship map made by Facebook intern, Paul Butler and I realized that I had access to a similar dataset at Science-Metrix (an old employer I left a while ago). Instead of a database of friendship data, I had access to a database of scientific collaborations. Bibliometric firms use this kind of data to get a (very) approximated view of science, but I thought that for a data visualization, it was good enough

Continue Reading

Incoming call popup under Ubuntu and Asterisk

When I worked in a survey firm, I was tasked with building a VOIP system to cut costs and to raise productivity. The biggest productivity drain in an outbound call center is the dialing time and getting someone on the line. By implementing an Asterisk server, we could control and expand the server to our needs. Furthermore, this meant we could have remote workers. We saved a bundle of money in long distance and in fixed costs. The hosted server and the bandwidth itself cost about 80$ a month, while the connectivity to the phone network was negligible and, more importantly, flexible. In other words, if it was a slow month, the cost was low, and conversely, if it was a very busy month, the costs were higher but the money was coming in.

Incoming call popup

Incoming call popup

Since it was my server and I was billing the company for it, I figured I could use the same server for my personal phones. So I decided to connect my PSTN numbers to this system. I could now use the server as my private VOIP server.

After configuring the VOIP server to my liking, I started to explore the Asterisk API and related Java and Python bindings. My first module was an interactive IVR system to manage callbacks from the survey outbound number. The callers could know who called them and remove their number from our calling lists.

Update (2012): Modified code for asterisk 1.6

Continue Reading

Using Crystal Reports with Limesurvey

While Limesurvey is a very nice tool to create and manage web surveys, it’s a bit lacking in the reporting area. The functions are a limited and even if you want a quick and dirty, but presentable report, you must export the data and use other tools to format and present the answers to the survey.

Limesurvey results imported in Crystal Reports

Limesurvey results imported in Crystal Reports

The problem is the way how Limesurvey stores its data, more specifically the recorded answers. Every column in the table contains theanswer for the question identified by the column and each line (or record) contains a respondent. It seems like a very sensible way to store the respondent’s answers, but the trouble is that it’s very difficult to construct a generic report template in reporting tools with this kind of table schema. To be of any use, the table data have to be converted in a usable form. Furthermore, the schema used by Limesurvey is less than optimal and doesn’t use foreign keys to link tables. This complicates everything.

To convert the answer table data, I’ve written a little python script. It should be pretty plug-and-play. To use it, you have to change the database access variables. The script only takes one argument, the survey id. You can get the survey id in Limesurvey’s administration panel. It should follow the survey title when you select a survey in the administration panel. Continue Reading

Hi there

This blog is where I will share my small discoveries and realizations while practicing my English. Who knows, I might even help someone save a couple hours of head scratching by publishing the results of my own head scratching.