<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet CLAM</title>
	<link>http://clam-project.org</link>
	<language>en</language>
	<description>Planet CLAM - http://clam-project.org</description>

<item>
	<title>Xavier Amatriain: Beyond the 5 Stars Round up</title>
	<guid>tag:blogger.com,1999:blog-17171206.post-7217278741931754154</guid>
	<link>http://technocalifornia.blogspot.com/2012/04/beyond-5-stars-round-up.html</link>
	<description>Last week, I published a post on the Netflix tech blog. The post, entitled &quot;&lt;a href=&quot;http://techblog.netflix.com/2012/04/netflix-recommendations-beyond-5-stars.html&quot;&gt;Netflix Recommendations: Beyond the 5 stars&lt;/a&gt;&quot; describes how recommendations have evolved at Netflix since the Netflix Prize. If you haven't read the post, do so now.&lt;br /&gt;&lt;br /&gt;The post stirred quite some interesting reactions and many comments. Here is a list of some of the ones I picked up, grouped by &quot;category&quot;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Our post got picked up by the usual content aggregators:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Hacker News posted a link to the post, and as always attracted &lt;a href=&quot;http://news.ycombinator.com/item?id=3810058&quot;&gt;a great number of comments&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Likewise, &lt;a href=&quot;http://www.reddit.com/r/programming/comments/rxp2e/netflix_recommendations_beyond_the_5_stars_part_1/&quot;&gt;Reddit &lt;/a&gt;also attracted some interesting comments.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Some online media gave a summary of our post:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Engadget was the first one to have a brief piece with several interesting comments: &lt;a href=&quot;http://www.engadget.com/2012/04/08/netflix-explains-its-recommendation-system-cant-find-a-reason/#disqus_thread&quot;&gt;Netflix explains its recommendation system, can't find a reason for Adam Sandler's last movie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The CNN also had a longer article, with a detailed summary of our post: &lt;a href=&quot;http://whatsnext.blogs.cnn.com/2012/04/09/inside-netflixs-popular-recommendation-algorithm/&quot;&gt;Inside Netflix's popular 'recommendation' algorithm &lt;/a&gt;&lt;/li&gt;&lt;li&gt;Econsultancy reflects on our post by calling us &lt;a href=&quot;http://econsultancy.com/us/blog/9554-netflix-the-algorithm-company&quot;&gt;Netflix: the algorithm company&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Others focused on the figure we gave on the post related to the percentage of views coming from recommendations.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The Verge picked up on this for their piece: &lt;a href=&quot;http://www.theverge.com/2012/4/8/2934375/netflix-recommendation-system-explained&quot;&gt;Netflix offers details on its recommendation engine, says it guides 75 percent of viewership&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Also PC Magazine focused on this issue, but gave a more detailed summary of the post: &lt;a href=&quot;http://www.pcmag.com/article2/0,2817,2402739,00.asp&quot;&gt;75 Percent of Netflix Viewing Based on Recommendations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Finally, Business Insider, also focused on this issue in their &lt;a href=&quot;http://www.businessinsider.com/netflixs-recommendation-engine-drives-75-of-viewership-2012-4&quot;&gt;Netflix's Recommendation Engine Drives 75% Of Viewership&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The last few reactions I picked up, focused on the reasons why we are not using the winning entry to the Netflix Prize .&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The Next Web, entitled their piece &lt;a href=&quot;http://thenextweb.com/media/2012/04/13/remember-netflixs-1m-algorithm-contest-well-heres-why-it-didnt-use-the-winning-entry/?awesm=tnw.to_1E23j&quot;&gt;Remember Netflix’s $1m algorithm contest? Well, here’s why it didn’t use the winning entry&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Techdirt focused only exclusively on this issue in their &lt;a href=&quot;http://www.techdirt.com/blog/innovation/articles/20120409/03412518422/why-netflix-never-implemented-algorithm-that-won-netflix-1-million-challenge.shtml&quot;&gt;Why Netflix Never Implemented The Algorithm That Won The Netflix $1 Million Challenge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Both the previous articles are ok, but a bit misleading in that they seem to imply that not implementing the final solution to the prize might have been a loss for Netflix. But, the prize to the worst uninformed and ill-intentioned reaction to our post has to go to Forbes' &lt;a href=&quot;http://www.forbes.com/sites/ryanholiday/2012/04/16/what-the-failed-1m-netflix-prize-tells-us-about-business-advice/&quot;&gt;What The Failed 1m Netflix Prize Tells Us About Business Advice&lt;/a&gt;. It should be clear to anyone that the Netflix Prize was a huge success in all metrics. And, Netflix had already recovered the $1m long before the competition ended.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/17171206-7217278741931754154?l=technocalifornia.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 17 Apr 2012 16:33:56 +0000</pubDate>
	<author>noreply@blogger.com (Xavier Amatriain)</author>
</item>
<item>
	<title>David Garcia: deansi: ANSI colors to html in Python</title>
	<guid>tag:blogger.com,1999:blog-36421488.post-8950006620698920787</guid>
	<link>http://vokicodder.blogspot.com/2012/03/deansi-ansi-colors-to-html-in-python.html</link>
	<description>&lt;a href=&quot;http://1.bp.blogspot.com/-J3qMbE9VXT0/T1qThdbDTSI/AAAAAAAAACg/Mr4RbqIdcwE/s1600/deansi.gif&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5718044879943322914&quot; src=&quot;http://1.bp.blogspot.com/-J3qMbE9VXT0/T1qThdbDTSI/AAAAAAAAACg/Mr4RbqIdcwE/s320/deansi.gif&quot; style=&quot;float: right; margin: 0 0 10px 10px; cursor: pointer; cursor: hand; width: 320px; height: 255px;&quot; /&gt;&lt;/a&gt;Let me introduce you &lt;tt&gt;deansi&lt;/tt&gt;, a python module to convert &lt;a href=&quot;http://en.wikipedia.org/wiki/ANSI_escape_code&quot;&gt;ansi terminal codes&lt;/a&gt; to html.&lt;br /&gt;&lt;br /&gt;Lately, I am doing some refactorings, enhancements and fixes on &lt;a href=&quot;http://sourceforge.net/projects/testfarm/&quot;&gt;TestFarm&lt;/a&gt; which lacked of care from us, regardless we use it for &lt;a href=&quot;http://clam-project.org/&quot;&gt;CLAM&lt;/a&gt;, for our daily work at &lt;a href=&quot;http://barcelonamedia.org/&quot;&gt;Barcelona Media&lt;/a&gt;, and even to control the status of the unit tests of our students assignments. The testing framework we use for our tests, &lt;a href=&quot;http://sourceforge.net/projects/minicppunit/&quot;&gt;MiniCppUnit&lt;/a&gt;, relies on &lt;a href=&quot;http://en.wikipedia.org/wiki/ANSI_escape_code&quot;&gt;ANSI colors&lt;/a&gt; to highlight the important bits at the terminal output. Sadly, ANSI codes have the opposite effect when you look at that output from the Testfarm summary pages, it gets all quite screwed up.&lt;br /&gt;&lt;br /&gt;I gave from granted that there were a common python library or recipe to convert ANSI color codes to html i could use. But i just found &lt;a href=&quot;http://code.activestate.com/recipes/577349-convert-a-transcript-with-ansi-escape-sequences-to/&quot;&gt;this recipe&lt;/a&gt; and, in fact, I modified Testfarm to use it, but it seems it is not that reliable and the code had to be extended to do quite basic things. So I decided to spike a test driven developed converter.&lt;br /&gt;&lt;br /&gt;I made the module available at &lt;a href=&quot;https://github.com/vokimon/python-service/blob/master/deansi.py&quot;&gt;GitHub&lt;/a&gt;. Its features are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Supports most 'm' codes (&lt;span style=&quot;font-weight: bold;&quot;&gt;colors and attributes&lt;/span&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Fully stylable&lt;/span&gt;. It generates a default stylesheet but you can redefine the rules in many ways. For example you can make the colors be different in different containers within the same page (a case i need for TestFarm) or setting style properties for combination of active attributes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is &lt;span style=&quot;font-weight: bold;&quot;&gt;test driven developed&lt;/span&gt; and &lt;span style=&quot;font-weight: bold;&quot;&gt;back2back tested&lt;/span&gt;, so it is quite reliable, and in the long term features can be extended being quite sure we are not breaking existing functionality.&lt;/li&gt;&lt;li&gt;Unlike the recipe i found, it does not expect a given pair of starting and closing codes. It is implemented as an &lt;span style=&quot;font-weight: bold;&quot;&gt;state machine&lt;/span&gt;, a new span tag is created at every attribute set change having as many html classes as attributes are active at that moment.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can use it as &lt;span style=&quot;font-weight: bold;&quot;&gt;module&lt;/span&gt; or as a &lt;span style=&quot;font-weight: bold;&quot;&gt;command line tool&lt;/span&gt; although command line usage is quite minimal (pipe or single input file parameter)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;How it works? If you use it as a python module, you can use it that way:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;import deansi&lt;br /&gt;&lt;br /&gt;html_template = &quot;&quot;&quot;\&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;.ansi_terminal {{ background-color: #222; color: #cfc; }}&lt;br /&gt;{defaultStyle}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;div class=&quot;ansi_terminal&quot;&amp;gt;{ansiText}&amp;lt;/div&amp;gt;&lt;br /&gt;&quot;&quot;&quot;&lt;br /&gt;ansiInput = &quot;\033[31mHello World!!\033[m&quot;&lt;br /&gt;&lt;br /&gt;print html_template.format(&lt;br /&gt;      defaultStyle = deansi.styleSheet(),&lt;br /&gt;      ansiText = deansi.deansi(ansiInput),&lt;br /&gt;      )&lt;br /&gt;&lt;/pre&gt;You can change the colors displayed adding style rules after the default ones, for example if you want to change the yellow color when the ansi bright attribute apply, and not to apply bold font (the default) you can say:&lt;br /&gt;&lt;pre&gt;.ansi_yellow.ansi_bright { color: #FF7; font-weight: inherit; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you want several behaviours in the same html you can use css magic like that:&lt;br /&gt;&lt;pre&gt;.my_own_ansi_enviroment .ansi_inverse { font-style: italic; border: none; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I look forward applying it to TestFarm soon so all the miss-conversions are fixed.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Update:&lt;/span&gt; During my first search i didn't notice &lt;a href=&quot;https://github.com/ralphbean/ansi2html/blob/master/ansi2html/ansi2html.py&quot;&gt;ansi2html&lt;/a&gt;. It is quite similar to deansi.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Update 2:&lt;/span&gt; Now its applied to testfarm, take a look at the &lt;a href=&quot;http://clam-project.org/testfarm/&quot;&gt;output&lt;/a&gt; by clicking on one of the red executions (which should not exist but shit happens).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36421488-8950006620698920787?l=vokicodder.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 13 Mar 2012 04:39:17 +0000</pubDate>
	<author>noreply@blogger.com (Vokimon)</author>
</item>
<item>
	<title>Xavier Amatriain: The Recommender Problem &amp; the Presentation Context</title>
	<guid>tag:blogger.com,1999:blog-17171206.post-2675018638164046997</guid>
	<link>http://technocalifornia.blogspot.com/2011/09/recommender-problem-presentation.html</link>
	<description>&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 12pt; line-height: normal; font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;In the traditional formulation of the &quot;Recommender Problem&quot;, we have pairs of items and users and user feedback values for very few of those dyads. The problem is formulated as the finding of a utility function or model to estimate the missing values.&lt;br /&gt;&lt;br /&gt;In many real-world situations, feedback will be implicit&lt;span style=&quot;font-weight: bold;&quot;&gt;**&lt;/span&gt; and binary in nature. For instance, in a web page you will have users visiting a url, or clicking on an add as a positive feedback. In a music service, a user will decide to listen to a song. Or in a movie service, like Netflix, you will have users deciding to watch a title as an indication that the user liked the movie. In these cases, the recommendation problem becomes the prediction of the probability a user will interact with a given item. There is a big shortcoming in using the standard recommendation formulation in such a setting: we don't have negative feedback. All the data we have is either positive or missing. And the missing data includes both items that the user explicitly chose to ignore because they were not appealing and items that would have been perfect recommendations but were never presented to the user.&lt;br /&gt;&lt;br /&gt;A similar issue has been dealt with in traditional data mining research, where classifiers need to be trained only using positive examples. In the &quot;&lt;/span&gt;&lt;a href=&quot;http://www.cse.ucsd.edu/users/elkan/posonly.pdf&quot;&gt;&lt;span style=&quot;font-size: 12pt; color: blue;&quot;&gt;Learning Classifiers from Only Positive and Unlabeled Examples&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&quot; SIGKDD 08 paper, the authors present a method to convert unlabeled examples into both a positive and a negative example, each with a different weight related to the probability that a random exemplar is positive or negative. Another solutions to this issue is presented in the &quot;&lt;/span&gt;&lt;a href=&quot;http://research.yahoo.com/files/HuKorenVolinsky-ICDM08.pdf&quot;&gt;&lt;span style=&quot;font-size: 12pt; color: blue;&quot;&gt;Collaborative Filtering for Implicit Feedback Datasets&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&quot; paper by Hu, Koren and Volinsky. In this work, the authors binarize the implicit feedback values: any feedback value greater than zero means positive preference, while any value equal to zero is converted to no preference. A greater value in the implicit feedback value is used to measure the &quot;confidence&quot; in the fact the user liked the item, but not in measuring &quot;how much&quot; the user liked it. Yet another approach to inferring positive and negative feedback from implicit data is presented in the paper I co-authored with Dennis Parra, and I presented in a &lt;/span&gt;&lt;a href=&quot;http://technocalifornia.blogspot.com/2011/07/walk-talk-on-combination-of-implicit.html&quot;&gt;&lt;span style=&quot;font-size: 12pt; color: blue;&quot;&gt;previous post&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;. There, we argue that implicit data can be transformed to positive and negative feedback if aggregated at the right level. For example, the fact that somebody listened only once to a single track in an album can be interpreted as the user not liking that album.&lt;br /&gt;&lt;br /&gt;In many practical situations, though, we have more information than the simple binary implicit feedback from the user. For unlabeled examples that the user did not directly interact with, we can expect to have other information. In particular, we might be able to know whether they were shown to the user or not. This adds very valuable information, but slightly complicates the formulation of our recommendation problem. We now have three different kinds of values for items: positive, presented but not chosen, and not presented. And this is only if we simplify the model. In reality, information related to the presentation can be much richer than this and we might be able to derive data like the probability the user actually saw the item or weigh in different interaction events such as mouse overs, scrolls...&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center; font-family: arial;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-VSfb2LZ66y8/TovvlN5sIrI/AAAAAAAAANk/Zou3UMqH4gw/s1600/NetflixInterface.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5659880779386987186&quot; src=&quot;http://2.bp.blogspot.com/-VSfb2LZ66y8/TovvlN5sIrI/AAAAAAAAANk/Zou3UMqH4gw/s200/NetflixInterface.jpg&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 335px; height: 177px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;  &lt;/span&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;In Netflix, we are working on different ways to add this rich information related to presentations and user interaction to the recommender problem. That is why I was especially interested in finding out that this year's SIGIR best student paper award has been awarded to a paper that addresses this issue. In the paper &quot;&lt;/span&gt;&lt;a href=&quot;http://www.cc.gatech.edu/%7Esyang46/papers/SIGIR11CCF.pdf&quot;&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;Collaborative Competitive Filtering: Learning&lt;br /&gt;Recommender Using Context of User Choice&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;&quot;, the authors present an extension to traditional Collaborative Filtering by encoding into the model not only the &lt;b&gt;collaboration &lt;/b&gt;between similar users and items, but also the &lt;b&gt;competition &lt;/b&gt;of items for user attention. They derive the model as an extension to standard latent factor models by taking into account the context in which the user makes the decision. That is, the probability I decide to select a given item depends on which are the other items I have as an alternative. Results are preliminary but promising. And, this work is definitely an interesting and appealing starting point for an area with many practical applications.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;  &lt;/span&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;However, there are many possible improvements to the model. One of them, mentioned by the authors, is the need to take into account the so-called &lt;b&gt;position bias&lt;/b&gt;. An item that is presented in the first position of a list has many more possibilities to be chosen than one that is farther down. This effect is well-known in the search community and has been studied from several angles. I would recommend, for instance to read some of the very interesting papers on this topic by Thorsten Joachims and his students. In the paper “&lt;/span&gt;&lt;a href=&quot;http://www.cs.cornell.edu/People/tj/publications/radlinski_etal_08b.pdf&quot;&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;How Does Clickthrough Data Reflect Retrieval Quality?&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;”, for instance, they show how arbitrarily swapping items in a search result list has almost no effect. This proves that the positioning of the element can be a most important factor than how relevant the item is.&lt;br /&gt;&lt;br /&gt;I would love to hear of other ideas or approaches to deal with this new version of the recommender problem that includes, and would encourage researchers in the area to address an issue of huge potential impact.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;  &lt;/span&gt;&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12pt; line-height: 115%;&quot;&gt;**&lt;b&gt;Note&lt;/b&gt;: I am using the word implicit here in the traditional sense in the recommendation literature. The truth is that a user selecting an item is in fact &lt;b&gt;explicit&lt;/b&gt; information. However, it can be considered implicit in that the user is informing about the preferences indirectly by comparing the item to others in a context.&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/17171206-2675018638164046997?l=technocalifornia.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 23 Dec 2011 19:01:38 +0000</pubDate>
	<author>noreply@blogger.com (Xavier Amatriain)</author>
</item>
<item>
	<title>Natanael Olaiz: Trailer de MIS AHORROS SU BOTIN</title>
	<guid>http://nael.info/asociaciones_libres/?p=306</guid>
	<link>http://nael.info/asociaciones_libres/2011/12/04/trailer-de-mis-ahorros-su-botin/</link>
	<description>&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 04 Dec 2011 19:50:05 +0000</pubDate>
</item>
<item>
	<title>Xavier Amatriain: Recsys 2011 - Notes and Pointers</title>
	<guid>tag:blogger.com,1999:blog-17171206.post-8599625116147452790</guid>
	<link>http://technocalifornia.blogspot.com/2011/11/recsys-2011-notes-and-pointers.html</link>
	<description>&lt;a href=&quot;http://recsys.acm.org/2011/images/Chicago_night1.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://recsys.acm.org/2011/images/Chicago_night1.jpg&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 518px; height: 201px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I found &lt;a href=&quot;http://recsys.acm.org/2011/index.shtml&quot;&gt;Recsys&lt;/a&gt; this year of very high quality in general. There were many good papers and presentations. The &lt;a href=&quot;http://recsys.acm.org/2011/industry_track.shtml&quot;&gt;Industry track&lt;/a&gt; was also very high-quality, with very interesting talks from companies such as Twitter, Facebook, or eBay. Jon Sanders and I also gave two presentations explaining how recommendations have evolved since the Netflix Prize (more on this soon).&lt;br /&gt;&lt;br /&gt;Here are my rough notes with pointers to some papers I considered especially interesting. I have grouped them in 5 categories that I think summarize the main topics in the conference: (1) Transparency and explanations, (2) Implicit Feedback, (3) Context, (4) Metrics and evaluation, and (5) Others. Note that the selection is completely biased towards my personal interests.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;(1) TRANSPARENCY &amp;amp; EXPLANATIONS.&lt;/span&gt; One of the recurring themes was the fact that user trust and perceived quality of the recommendations was very much influence not by accuracy alone, but by how transparent the system was, and the amount of &quot;explanations&quot; that were added.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Daniel Tunkelang(LinkedIn) did a very interesting tutorial on &quot;Recommendations as a Conversation with the User&quot;, where he focused on these kinds of issues. See his slides in &lt;a href=&quot;http://thenoisychannel.com/2011/10/31/recsys-2011-tutorial-recommendations-as-a-conversation-with-the-user/&quot;&gt;his blog&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Neel Sundaresan (eBay) also stressed in his keynote that adding explanations can sometimes be more important than getting the recommendation right.&lt;/li&gt;&lt;li&gt;In the paper &quot;&lt;a href=&quot;http://www.usabart.nl/portfolio/KnijnenburgReijmerWillemsen-recsys2011.pdf&quot;&gt;Each to His Own: How Different Users Call for Different Interaction Methods in Recommender Systems&lt;/a&gt;&quot;, the authors found that depending on how experts are users in the domain, they prefer different kind of recommendations and interaction models. For example, in one of the extremes, novices, prefer top-10 non-personalized to their personalized recommendations. In general a hybrid model of interaction is better than either implicit or explicit-only.&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;(2) IMPLICIT FEEDBACK.&lt;/span&gt; A lot of papers this years on using implicit consumption data instead of (or in combination with) ratings.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The best paper, by Yehuda Koren and Joe Sill, addressed the issue of non-linearity in ratings. &quot;&lt;a href=&quot;http://labs.yahoo.com/node/640&quot;&gt;OrdRec: An Ordinal Model for Predicting Personalized Item Rating Distributions&lt;/a&gt;&quot; modifies the standard Matrix Factorization approach to adapt to the fact that user ratings are ordinal, but not numerical. The way they model ratings, with a set of thresholds, can be used in combination with any model, not only SVD-like approaches. This paper effectively addresses most of the issues I raised in my previous post &quot;&lt;a href=&quot;http://technocalifornia.blogspot.com/2011/04/recommender-systems-were-doing-it-all.html&quot;&gt;We are doing everything wrong...&lt;/a&gt;&quot;&lt;/li&gt;&lt;li&gt;In &quot;&lt;a href=&quot;http://unical.academia.edu/NicolaBarbieri/Papers/803078/Modeling_Item_Selection_and_Relevance_for_Accurate_Recommendations&quot;&gt;Modeling Item Selection and Relevance for Accurate Recommendations: A Bayesian Approach&lt;/a&gt;&quot; they define the concept of a &quot;Free probabilstic model&quot; where they try to predict independently the probabilty of play and rating. &lt;/li&gt;&lt;li&gt;In &quot;Multi-Value Probabilistic Matrix Factorization for IP-TV Recommendations&quot;, the authors present a Matrix Factorization model that allows for multiple observations of the same item. In particular, it is applied for IPTV recommendations where the fact that the user watched part of an episode is interpreted as negative feedback.&lt;/li&gt;&lt;li&gt;&quot;&lt;a href=&quot;http://www.cs.purdue.edu/homes/fangy/hetrec11-fang.pdf&quot;&gt;Matrix Co-factorization for Recommendation with Rich Side Information and Implicit Feedback&lt;/a&gt;&quot; presents a combined Matrix Factorization model that includes ratings, content features, and implicit feedback. They use cosine item similarity for weighing negative examples.&lt;/li&gt;&lt;li&gt;In &quot;&lt;a href=&quot;http://www.slideshare.net/alansaid/personalizing-tags-a-folksonomylike-approach-for-recommending-movies/download&quot;&gt;Personalizing Tags: A Folksonomy-like Approach for Recommending Movies&lt;/a&gt;&quot;, they use tags (or categories) as a very simple method of recommending movies: for each user compute average rating given to movies with a certain tag.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;(3) CONTEXT.&lt;/span&gt; There were 2 workshops (&lt;a href=&quot;http://cars-workshop.org/&quot;&gt;CARS&lt;/a&gt; and &lt;a href=&quot;http://2011.camrachallenge.com/&quot;&gt;CAMRA&lt;/a&gt;), and several papers in the main conference, talking about how to add contextual information for the recommendations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&quot;The Effect of Context-Aware Recommendations on Customer Purchasing Behavior and Trust&quot; is an interesting paper, focusing on the evaluation side. They include an A/B test for measuring the effect of context-aware recommendations. Using context increased overall sales in $ but not in number. Therefore, users tend to spend more $ per item.&lt;/li&gt;&lt;li&gt;In the &lt;a href=&quot;http://2011.camrachallenge.com/&quot;&gt;CAMRA&lt;/a&gt; workshop, many papers (such as &quot;Temporal Rating Habits: A Valuable Tool for Rater Differentiation&quot; or &quot;Identifying Users From Their Rating Patterns&quot;) were related to how to identify who the author of a rating in a household was, since this was one of the tasks for the contest.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Also related to group recommendations, &quot;Group Recommendation using Feature Space Representing Behavioral Tendency and Power Balance among Members&quot;, tries to model what is a good recommendation for a group where each of the individuals does not have the same influence.&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;(4) METRICS and EVALUATIONS: &lt;/span&gt;There were several papers that offered different ways to measure accuracy for top-N ranked recommendations.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&quot;&lt;a href=&quot;http://www.slideshare.net/pcastells/acm-recsys-2011-rank-and-relevance-in-novelty-and-diversity-metrics-for-recommender-systems&quot;&gt;Rank and Relevance in Novelty and Diversity Metrics for Recommender Systems&lt;/a&gt;&quot; presents an interesting framework that includes metric for measuring not only accuracy, but also novelty, diversity....&lt;/li&gt;&lt;li&gt;&quot;Item Popularity and Recommendation Accuracy&quot; is an interesting work on how to remove popularity bias from accuracy metrics. A user study validates the fact that recall measure is correlated with user perceived quality of recommendation. Besides proposing a recall metric that removes popularity bias, he also proposes a popularity stratified training method that weights negative examples according to how popular they are.&lt;/li&gt;&lt;li&gt;&quot;&lt;a href=&quot;http://ucersti.ieis.tue.nl/files/papers/3.pdf&quot;&gt;Evaluating Rank Accuracy based on Incomplete Pairwise Preferences&lt;/a&gt;&quot; proposes a measure called expected discounted rank correlation for the specific case of implicit feedback.&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;(5) OTHERS&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;eBay and UCSC presented &quot;&lt;a href=&quot;http://users.soe.ucsc.edu/%7Ejwang30/index.files/recsys175-wang.pdf&quot;&gt;Utilizing Related Products for Post-Purchase Recommendation in E-commerce&lt;/a&gt;&quot;. The paper won the best poster award&lt;/li&gt;&lt;li&gt;There were many papers on Social Recommendations. Just to name one, in &quot;Power to the People: Exploring Neighbourhood Formations in Social Recommender Systems&quot;, they did a user study to figure out how much users would like and trust recommendations coming from different user groups (those they decided, friends, everyone...). Interestingly, the method of choice did not make much difference... until you told the users what it was.&lt;/li&gt;&lt;li&gt;In &quot;Wisdom of the Better Few: Cold Start Recommendation via Representative based Rating Elicitation&quot; they discussed how to select most imformative users and items for cold start. I was surprised to see that our &quot;Wisdom of the Few&quot; approach got paraphrased in a paper title.&lt;/li&gt;&lt;li&gt;There were a couple of very interesting workshops on &lt;a href=&quot;http://womrad.org/2011/&quot;&gt;Music Recommendations&lt;/a&gt; and &lt;a href=&quot;http://pema2011.cs.ucl.ac.uk/&quot;&gt;Mobile Recommendations&lt;/a&gt; that I had to miss since I was attending others. But, they are definitely worth looking into if you are into music or mobile.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/17171206-8599625116147452790?l=technocalifornia.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 03 Nov 2011 05:31:45 +0000</pubDate>
	<author>noreply@blogger.com (Xavier Amatriain)</author>
</item>
<item>
	<title>David Garcia: CLAM binders, ipyclam and PyQt</title>
	<guid>tag:blogger.com,1999:blog-36421488.post-5088901163739097107</guid>
	<link>http://vokicodder.blogspot.com/2011/09/clam-binders-ipyclam-and-pyqt.html</link>
	<description>I just finished a pair programming session with Xavier Serra. He is going to defend his Final Career Project on Friday and we are preparing some cool demos involving binding &lt;a href=&quot;http://vokicodder.blogspot.com/2011/02/ipyclam-interactive-python-console-for.html&quot;&gt;ipyclam&lt;/a&gt; and &lt;a href=&quot;http://www.riverbankcomputing.co.uk/software/pyqt&quot;&gt;pyqt&lt;/a&gt;. It has been an exciting session because as we debunked one by one the show stoppers that we were finding, we realized that the potential of the tool mix is wider than we thought. &lt;br /&gt;&lt;br /&gt;What we can do now is to build a network with ipyclam, building an interface by combining pyqt and ui files and binding them to that network, all that either in live by using the interactive shell or using a written script. This formula adds the flexibility of scripting to &lt;a href=&quot;http://clam-project.org/wiki/Network_Editor_tutorial&quot;&gt;CLAM prototyping system&lt;/a&gt;, raising the ceiling of what you can do without raising too much the learning threshold.&lt;br /&gt;&lt;br /&gt;For example, let's play a file in a loop with ipyclam:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;import ipyclam&lt;br /&gt;n=ipyclam.Network(ipyclam.Clam_NetworkProxy())&lt;br /&gt;n.file = n.types.MonoAudioFileReader&lt;br /&gt;n.out = n.types.AudioSink&lt;br /&gt;n.file.Loop = 1&lt;br /&gt;n.file.SourceFile = &quot;jaume-voice.mp3&quot;&lt;br /&gt;n.file &amp;gt; n.out&lt;br /&gt;&lt;br /&gt;n.backend=&quot;PortAudio&quot;&lt;br /&gt;n.play()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then you can instantiate an Oscilloscope, bind it and play: &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;from PyQt4 import QtCore, QtGui&lt;br /&gt;a=QtGui.QApplication([])&lt;br /&gt;&lt;br /&gt;w=n.createWidget(&quot;Oscilloscope&quot;)&lt;br /&gt;w.show()&lt;br /&gt;w.setProperty(&quot;clamOutPort&quot;, &quot;file.Samples Read&quot;)&lt;br /&gt;&lt;br /&gt;n.stop()&lt;br /&gt;n.bindUi(w)&lt;br /&gt;n.play()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can also load an UI file and bind it simultaneously.. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;w2 = n.loadUi(&quot;myui.ui&quot;)&lt;br /&gt;w2.show()&lt;br /&gt;n.stop()&lt;br /&gt;n.bindUi(w2)&lt;br /&gt;n.play()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Adding a tonal analysis and some related views&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;n.stop()&lt;br /&gt;n.tonal = n.types.TonalAnalysis&lt;br /&gt;n.file &amp;gt; n.tonal&lt;br /&gt;w3 = n.createWidget(&quot;CLAM::VM::KeySpace&quot;)&lt;br /&gt;w3.setProperty(&quot;clamOutPort&quot;, &quot;tonal.Chord Correlation&quot;)&lt;br /&gt;n.bindUi(w3)&lt;br /&gt;w3.show()&lt;br /&gt;n.play()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The enabler of the mix has been the new binder architecture in CLAM. Until 1.4, the Prototyper used what we call 'binders' to relate processing elements with user interface elements. Each binder concentrates in a given kind of binding: oscilloscopes, control sliders, transport buttons...&lt;br /&gt;&lt;br /&gt;For the upcomming CLAM 1.5 the binder interface (CLAM::QtBinder) has been redefined and moved out from the Prototyper to the qtmonitors module. So now you can use them in any CLAM application. The bindings are now based on &lt;a href=&quot;http://doc.qt.nokia.com/latest/properties.html#dynamic-properties&quot;&gt;Qt dynamic properties&lt;/a&gt; which provide more flexibility than former QObject name mangling.&lt;br /&gt;&lt;br /&gt;Currently there are several binders implemented:&lt;br /&gt;* Action/Button -&amp;gt; launch a configurator dialog on some processing&lt;br /&gt;* Action/Button -&amp;gt; launch a open dialog for a MonoFileReader&lt;br /&gt;* Checkable -&amp;gt; Send a bool, or a bistable float control&lt;br /&gt;* Slider -&amp;gt; maped float/int control&lt;br /&gt;* Any Monitor -&amp;gt; outPort to monitor&lt;br /&gt;* ControlSurface -&amp;gt; Send pair of controls&lt;br /&gt;* Slider -&amp;gt; ProgressControl or a MonoFileReader or similar to control&lt;br /&gt;&lt;br /&gt;Now you can extend those binder by means of plugins as we extended processings. You can use Qt dynamic properties in the interface elements to specify how the binding is done. &lt;br /&gt;&lt;br /&gt;The abstract interface provides the static method QtBinder::bindAllBinders() which is the one called by python bindUi. This looks for every ui element in the QObject hierarchy, looks for every registered binder and if they match it is applied.  &lt;br /&gt;&lt;br /&gt;To implement your own handle you just have to rewrite the &lt;tt&gt;bool handles(QObject*)&lt;/tt&gt; method that returns true if the object managed by the binder (type, name, presence of properties...) and the &lt;tt&gt;bool bind(QObject * uiElement, Network &amp;amp;amp; network, QStringList &amp;amp;amp; errors)&lt;/tt&gt; which does the actual binding. To register the binder, you just have to instanciate one as static variable of a cxx file in your library.&lt;br /&gt;&lt;br /&gt;All that is still being building up but its potential seems clear, so i hope that this new way of claming will be useful to you all.&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36421488-5088901163739097107?l=vokicodder.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 06 Sep 2011 23:57:49 +0000</pubDate>
	<author>noreply@blogger.com (Vokimon)</author>
</item>
<item>
	<title>David Garcia: ipyclam: interactive python console for CLAM networks manipulation</title>
	<guid>tag:blogger.com,1999:blog-36421488.post-7823498031507560482</guid>
	<link>http://vokicodder.blogspot.com/2011/02/ipyclam-interactive-python-console-for.html</link>
	<description>Xavier Serra (not the &lt;a href=&quot;http://www.mtg.upf.edu/&quot;&gt;MTG&lt;/a&gt; &lt;a href=&quot;http://www.dtic.upf.edu/%7Exserra/&quot;&gt;head&lt;/a&gt;, but an homonym student at the &lt;a href=&quot;http://www.upf.edu/&quot;&gt;UPF&lt;/a&gt;) is about to reach an interesting milestone on his Final Career Project related to &lt;a href=&quot;http://clam-project.org/&quot;&gt;CLAM&lt;/a&gt;.  He is developing an  &lt;a href=&quot;http://clam-project.org/clam/trunk/ipyclam&quot;&gt;interactive Python console for CLAM&lt;/a&gt; named &lt;tt&gt;ipyclam&lt;/tt&gt;.  It is a text based interface to explore and manipulate CLAM networks.  Hopefully this will end being a dock widget within the &lt;a href=&quot;http://clam-project.org/wiki/Network_Editor_tutorial&quot;&gt;Network Editor&lt;/a&gt; but it is also useful as interactive text console tool and as programming interface, which are the first useful outputs Xavi is about to get.  &lt;tt&gt;ipyclam&lt;/tt&gt; comes to cover the need of manipulating complex networks in cases when point and click is just tedious and also that of generating parametrized networks.&lt;br /&gt;&lt;br /&gt;Let's make clear that it is not a full wrapper for the CLAM API like Hernan's &lt;a href=&quot;http://clam-project.org/clam/trunk/pyclam&quot;&gt;&lt;tt&gt;pyclam&lt;/tt&gt;&lt;/a&gt;, &lt;tt&gt;ipyclam&lt;/tt&gt; just enables high level operations you usually do with Network Editor: instantiating, connecting, configuring and playing modules.  Moreover we have intentionally decoupled &lt;tt&gt;ipyclam&lt;/tt&gt; API to any existing CLAM API in order to define the most pythonic, convenient, and clean API we could think.  For example the code to build an stereo cable would be:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;net = Network()&lt;br /&gt;net.processing1 = net.types.AudioSource&lt;br /&gt;net.processing1.NOuputs = 2&lt;br /&gt;net.processing2 = net.types.AudioSink&lt;br /&gt;net.processing2.NInputs = 2&lt;br /&gt;&lt;br /&gt;net.processing1.Output1 &amp;gt; net.processing2.Input1&lt;br /&gt;net.processing1.Output2 &amp;gt; net.processing2.Input2&lt;br /&gt;&lt;br /&gt;net.play()&lt;/pre&gt;&lt;br /&gt;An interesting feature, is that &lt;tt&gt;network.code()&lt;/tt&gt; just returns an string with similar python code, so a network knows how to regenerate itself.  This opens the door to &lt;b&gt;python based format for CLAM networks&lt;/b&gt;. Bye bye XML!.&lt;br /&gt;&lt;br /&gt;Convenience? Yes, please. Connections can be done in batch, broadcasting connections from all the connectors in one processing to all or to a single connection of another:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;net.processing1 &amp;gt; net.processing2 # all to all&lt;br /&gt;net.processing1.Output1 &amp;gt; net.processing2 # one to all&lt;br /&gt;net.processing1 &amp;gt; net.processing2.Input1 # all to one&lt;/pre&gt;&lt;br /&gt;Convenience is good but all things should be doable.  Often most convenient solution is not the best suited for all the cases.  Accessing configuration parameters and connectors of any kind directly from proccessing is quite convenient but names can collide, to solve that some special attributes are provided to restrict the name scope.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;network.processing1._config.NOutputs&lt;br /&gt;network.processing1._inports.InPort1&lt;br /&gt;network.processing1._outports.OutPort1&lt;br /&gt;network.processing1._incontrols.InControl1&lt;br /&gt;network.processing1._outcontrols.OutControl1&lt;/pre&gt;&lt;br /&gt;Connection names can have spaces, and attributes cannot, so we also provide an alternative subscript syntax.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;net.processing1['Output 1']&lt;/pre&gt;&lt;br /&gt;One of the features I like the more is &lt;b&gt;tab key exploration&lt;/b&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;network.[tab]&lt;/tt&gt; and you get the list of processings&lt;/li&gt;&lt;li&gt;&lt;tt&gt;network.processing._inports[tab]&lt;/tt&gt; and you get the list of input ports&lt;/li&gt;&lt;li&gt;&lt;tt&gt;network.processing._config[tab]&lt;/tt&gt; and you get the list of configuration parameters&lt;/li&gt;&lt;li&gt;&lt;tt&gt;network.processing.[tab]&lt;/tt&gt; and you get connectors and cofiguration parameters&lt;/li&gt;&lt;li&gt;&lt;tt&gt;network.types.[tab]&lt;/tt&gt; and you get the list of available processing types&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It works for interactive console with tab completion like &lt;a href=&quot;http://ipython.scipy.org/moin/&quot;&gt;ipython&lt;/a&gt;. We also provide &lt;tt&gt;ipyclam_console&lt;/tt&gt;, an ipython based shell conveniently importing modules and adding a network to start playing with.&lt;br /&gt;&lt;br /&gt;For more details on the API just check &lt;a href=&quot;http://clam-project.org/clam/trunk/ipyclam/API.txt&quot;&gt;this document&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The implementation&lt;/h3&gt;&lt;br /&gt;&lt;tt&gt;ipyclam&lt;/tt&gt; is defined in two layers.  The &lt;b&gt;front-end layer&lt;/b&gt;, purely written in python, makes the convenient API happen: Exploration, dynamic object attributes, many interfaces to similar operations...  This upper layer, relies on the lower, less pythonic and more purpose oriented one, the &lt;b&gt;network proxy layer&lt;/b&gt;, which provides access to the state and operations of the actual network with quite fewer entry points.&lt;br /&gt;&lt;br /&gt;Xavi defined the front-end layer while evolving, in parallel, a dummy proxy layer simulating network status with basic python structures.  That gave us the flexibility to explore and evolve both the frond-end and the proxy interface without bothering about the actual CLAM implementation that would have made such exploration quite rigid.&lt;br /&gt;&lt;br /&gt;Two layers approach is also convenient because by defining the ops in the network proxy layer, we are able to reuse the front-end API with any other patching like environment.  I am thinking on &lt;a href=&quot;http://jackaudio.org/&quot;&gt;JACK&lt;/a&gt; or environments like &lt;a href=&quot;http://drobilla.net/software/ingen/&quot;&gt;ingen&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Status and road map&lt;/h3&gt;&lt;br /&gt;Xavi just finished most important bits of the API: Inspection, module creation, module type enumeration and module inter-connection.  Currently we still rely on a dummy network proxy, but a CLAM based proxy will arrive during next week.  Configuration API seems to be controversial and we are holding it until we have something implemented with CLAM.&lt;br /&gt;&lt;br /&gt;Once we have a full CLAM based proxy the next big goal is to integrate the console in NetworkEditor.  We need a console widget for Qt which is able to execute a python interpret.  We found some candidates:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://qconsole.sourceforge.net/&quot;&gt;qconsole&lt;/a&gt; which already has a python wrapper&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qtermwidget.sourceforge.net/&quot;&gt;qtermwidget&lt;/a&gt; a more robust console (based on KDE Konsole) but without direct support for python, and&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://ipython.scipy.org/doc/manual/html/development/ipython_qt.html&quot;&gt;ipython qt frontend&lt;/a&gt; quite experimental and using a weird threading model, but still interesting as ipyclam_console already uses ipython and it is awesome&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So either candidate seems to require some work on our side.&lt;br /&gt;&lt;br /&gt;Well, I hope you will find this new CLAM feature as amusing as I do. Xavier is really doing quite a good job, congrats and keep it that high.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36421488-7823498031507560482?l=vokicodder.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 06 Sep 2011 22:50:46 +0000</pubDate>
	<author>noreply@blogger.com (Vokimon)</author>
</item>
<item>
	<title>Xavier Amatriain: Joining Netflix</title>
	<guid>tag:blogger.com,1999:blog-17171206.post-211881762342667900</guid>
	<link>http://technocalifornia.blogspot.com/2011/07/joining-netflix.html</link>
	<description>Three weeks ago, I started to work for Netflix. Everything has moved so fast with so many things to do and learn that it seems like I have already been here for a much longer time!&lt;br /&gt;&lt;br /&gt;I am now working as the manager of a small team working on recommendations &amp;amp; personalization in the company that promoted recommender systems research to major headlines thanks to the &lt;a href=&quot;http://www.netflixprize.com/&quot;&gt;Netflix Prize&lt;/a&gt;. It also feels great to come to the company in an exciting time when it has just reached its 25th million customer and is starting its international expansion to &lt;a href=&quot;http://blog.netflix.com/2011/07/netflix-is-coming-to-latin-america.html&quot;&gt;Latin America&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All the fuzz created around the Netflix Prize &lt;a href=&quot;http://news.cnet.com/8301-17852_3-20078504-71/mit-prof-netflix-has-its-recommendations-wrong/&quot;&gt;might lead some&lt;/a&gt; to believe that rating prediction is all there is to Netflix suggesting a given movie. However, I was happy to find out that rating prediction is only one of the many signals that my team uses in creating the final suggestions.&lt;br /&gt;&lt;br /&gt;Awesome place, awesome people, and awesome time to be around. And, btw, &lt;a href=&quot;http://www.netflix.com/Jobs?id=7563&quot;&gt;we are hiring&lt;/a&gt;, so let me know if you are interested in joining. (&lt;span style=&quot;font-weight: bold;&quot;&gt;Update&lt;/span&gt;: it seems that the jobs link is currently not active outside US/CA... I'm working on getting this fixed)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-EU1JNoF8ZXI/TjI9TqhAlmI/AAAAAAAAANQ/WKPl4DaPcds/s1600/2011-07-20%2B08.19.53.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5634633491833460322&quot; src=&quot;http://3.bp.blogspot.com/-EU1JNoF8ZXI/TjI9TqhAlmI/AAAAAAAAANQ/WKPl4DaPcds/s320/2011-07-20%2B08.19.53.jpg&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 189px; height: 252px;&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/17171206-211881762342667900?l=technocalifornia.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 31 Jul 2011 17:36:02 +0000</pubDate>
	<author>noreply@blogger.com (Xavier Amatriain)</author>
</item>
<item>
	<title>Natanael Olaiz: Comunicado Indignados hechos Parlament Catalunya - Más sobre lo ocurrido el 15</title>
	<guid>http://nael.info/asociaciones_libres/?p=291</guid>
	<link>http://nael.info/asociaciones_libres/2011/06/17/comunicado-indignados-hechos-parlament-catalunya/</link>
	<description>&lt;p&gt;&lt;br /&gt;
…&lt;br /&gt;
Más videos sobre lo ocurrido el 15:&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Fri, 17 Jun 2011 22:09:28 +0000</pubDate>
</item>
<item>
	<title>Natanael Olaiz: Vista aérea del 27M</title>
	<guid>http://nael.info/asociaciones_libres/?p=287</guid>
	<link>http://nael.info/asociaciones_libres/2011/06/16/vista-aerea-del-27m/</link>
	<description>&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 15 Jun 2011 23:41:07 +0000</pubDate>
</item>
<item>
	<title>Natanael Olaiz: Como se hizo…</title>
	<guid>http://nael.info/asociaciones_libres/?p=283</guid>
	<link>http://nael.info/asociaciones_libres/2011/06/16/como-se-hizo/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.planetatortuga.com/noticias.item.3875/los-violentos-en-#parlamentcamp-son-policias-infiltrados.-ver-fotos-rt-plz.html&quot;&gt;http://www.planetatortuga.com/noticias.item.3875/los-violentos-en-#parlamentcamp-son-policias-infiltrados.-ver-fotos-rt-plz.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;De ahí:&lt;br /&gt;
(&lt;strong&gt;aquí había un video en alta calidad, que tenía cientos de miles de visitas y cientos de comentarios… y fue borrado&lt;/strong&gt;: http://www.youtube.com/embed/YcmvzRvsf8g…. va otra copia en menor calidad)&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Actualización: otro link hablando de lo mismo: &lt;a href=&quot;http://jmgoig.wordpress.com/2011/06/15/estrategias-del-poder-para-desprestigiar-movimientos-sociales-el-caso-parlamentcamp/&quot;&gt;http://jmgoig.wordpress.com/2011/06/15/estrategias-del-poder-para-desprestigiar-movimientos-sociales-el-caso-parlamentcamp/&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 15 Jun 2011 23:16:35 +0000</pubDate>
</item>
<item>
	<title>CLAM News: CLAM at Debian!</title>
	<guid>http://clamnews.wordpress.com/?p=114</guid>
	<link>http://clamnews.wordpress.com/2011/04/04/clam-at-debian/</link>
	<description>&lt;p&gt;CLAM finally made its way into the official Debian repositories. Many thanks to the maintainer, Taniguchi Takaki.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://packages.debian.org/source/sid/clam&quot;&gt;http://packages.debian.org/source/sid/clam&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://packages.debian.org/source/sid/clam-networkeditor&quot;&gt;http://packages.debian.org/source/sid/clam-networkeditor&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://packages.debian.org/source/sid/clam-chordata&quot;&gt;http://packages.debian.org/source/sid/clam-chordata&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/clamnews.wordpress.com/114/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/clamnews.wordpress.com/114/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/clamnews.wordpress.com/114/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/clamnews.wordpress.com/114/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/clamnews.wordpress.com/114/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/clamnews.wordpress.com/114/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/clamnews.wordpress.com/114/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/clamnews.wordpress.com/114/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/clamnews.wordpress.com/114/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/clamnews.wordpress.com/114/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/clamnews.wordpress.com/114/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/clamnews.wordpress.com/114/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/clamnews.wordpress.com/114/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/clamnews.wordpress.com/114/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=clamnews.wordpress.com&amp;amp;blog=761839&amp;amp;post=114&amp;amp;subd=clamnews&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 04 Apr 2011 23:13:20 +0000</pubDate>
</item>
<item>
	<title>CLAM News: Ubuntu PPA for CLAM</title>
	<guid>http://clamnews.wordpress.com/?p=106</guid>
	<link>http://clamnews.wordpress.com/2011/04/04/ubuntu-ppas-for-clam/</link>
	<description>&lt;p&gt;For the convenience of Ubuntu users, we deployed a personal package archive (PPA) in launchpad.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://launchpad.net/%7Edgarcia-ubuntu/+archive/ppa&quot; rel=&quot;nofollow&quot;&gt;https://launchpad.net/~dgarcia-ubuntu/+archive/ppa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Instructions available at the same page. It currently contains libraries, extension plugins, NetworkEditor and Chordata packages for maverick, and platforms i386 and amd64.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/clamnews.wordpress.com/106/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/clamnews.wordpress.com/106/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/clamnews.wordpress.com/106/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/clamnews.wordpress.com/106/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/clamnews.wordpress.com/106/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/clamnews.wordpress.com/106/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/clamnews.wordpress.com/106/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/clamnews.wordpress.com/106/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/clamnews.wordpress.com/106/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/clamnews.wordpress.com/106/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/clamnews.wordpress.com/106/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/clamnews.wordpress.com/106/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/clamnews.wordpress.com/106/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/clamnews.wordpress.com/106/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=clamnews.wordpress.com&amp;amp;blog=761839&amp;amp;post=106&amp;amp;subd=clamnews&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 04 Apr 2011 23:03:43 +0000</pubDate>
</item>
<item>
	<title>David Garcia: Numpy arrays to video</title>
	<guid>tag:blogger.com,1999:blog-36421488.post-244088033454694142</guid>
	<link>http://vokicodder.blogspot.com/2011/02/numpy-arrays-to-video.html</link>
	<description>I found &lt;a href=&quot;http://stackoverflow.com/questions/4092927/generating-movie-from-python-without-saving-individual-frames-to-files&quot;&gt;some examples&lt;/a&gt; on how to generate video with python by piping frames to external programs like ffmpeg or mencoder. All those snippets encode each frame as a given image format (png, jpg...) by using PIL, matplotlib.. to get them. Besides the dependency, building figures or encoding images can be quite slow. I finally found a way of piping raw numpy buffers as frames to mencoder. You can use the following code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import subprocess&lt;br /&gt;import numpy as np&lt;br /&gt;&lt;br /&gt;class VideoSink(object) :&lt;br /&gt;        def __init__( self, size, filename=&quot;output&quot;, rate=10, byteorder=&quot;bgra&quot; ) :&lt;br /&gt;                self.size = size&lt;br /&gt;                cmdstring  = ('mencoder',&lt;br /&gt;                        '/dev/stdin',&lt;br /&gt;                        '-demuxer', 'rawvideo',&lt;br /&gt;                        '-rawvideo', 'w=%i:h=%i'%size[::-1]+&quot;:fps=%i:format=%s&quot;%(rate,byteorder),&lt;br /&gt;                        '-o', filename+'.avi',&lt;br /&gt;                        '-ovc', 'lavc',&lt;br /&gt;                        )&lt;br /&gt;                self.p = subprocess.Popen(cmdstring, stdin=subprocess.PIPE, shell=False)&lt;br /&gt;&lt;br /&gt;        def run(self, image) :&lt;br /&gt;                assert image.shape == self.size&lt;br /&gt;#               image.tofile(self.p.stdin) # should be faster but it is indeed slower&lt;br /&gt;                self.p.stdin.write(image.tostring())&lt;br /&gt;        def close(self) :&lt;br /&gt;                self.p.stdin.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It is a tenth faster than the PIL based one. And there is no fair comparison to the matplotlib one. I got it working with mencoder but I could not figure out how to make it with ffmpeg.&lt;br /&gt;&lt;br /&gt;You can find that code with an usage example &lt;a href=&quot;https://github.com/vokimon/freenect_python_processing/blob/master/src/videosink.py&quot;&gt;there&lt;/a&gt;. Being based on other public domain snippets consider it also public domain.&lt;br /&gt;&lt;br /&gt;I am using that class to save the output of my &lt;a href=&quot;http://openkinect.org&quot;&gt;Freenect&lt;/a&gt; based &lt;a href=&quot;https://github.com/vokimon/freenect_python_processing&quot;&gt;project&lt;/a&gt;. More on that on next entries.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/36421488-244088033454694142?l=vokicodder.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 16 Feb 2011 15:52:21 +0000</pubDate>
	<author>noreply@blogger.com (Vokimon)</author>
</item>
<item>
	<title>Hernán Ordiales: High abstraction level audio plugins specification (and code generation)</title>
	<guid>http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/</guid>
	<link>http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/</link>
	<description>If you ever wrote at least 2 audio plugins in your life, for sure you have noticed you had to write a lot of duplicated code. In other words, most of the times, writing a plugin there is very little … &lt;a href=&quot;http://audiores.uint8.com.ar/blog/2010/05/17/high-abstraction-level-audio-plugins-specification-and-code-generation/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Mon, 20 Sep 2010 00:35:52 +0000</pubDate>
</item>
<item>
	<title>Hernán Ordiales: Some experience with CLAM inside an audio club at FIUBA, Argentina</title>
	<guid>http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/</guid>
	<link>http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/</link>
	<description>(Note: I wrote this as something to tell to the clam-devel mailing list about some of my source-code commits) About eight months ago, there was a foundation of something like an “audio club” in my university [1]. As soon i … &lt;a href=&quot;http://audiores.uint8.com.ar/blog/2010/03/11/some-experience-with-clam-inside-an-audio-club-at-fiuba-argentina/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Mon, 20 Sep 2010 00:35:52 +0000</pubDate>
</item>
<item>
	<title>CLAM News: CLAM Chordata 1.0</title>
	<guid>http://clamnews.wordpress.com/?p=99</guid>
	<link>http://clamnews.wordpress.com/2010/03/08/clam-chordata-1-0/</link>
	<description>&lt;div style=&quot;float: right; margin: 3px;&quot;&gt;&lt;a href=&quot;http://clam-project.org/w/images/6/6c/TurnAround-colorSegments.png&quot;&gt;&lt;img alt=&quot;screenshot&quot; src=&quot;http://clam-project.org/w/images/6/6c/TurnAround-colorSegments.png&quot; width=&quot;220px&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The CLAM project is pleased to announce the first stable release of Chordata, which is released in parallel to the 1.4.0 release of the CLAM framework.&lt;/p&gt;
&lt;p&gt;Chordata is a simple but powerful application that analyses the chords of any music file in your computer. You can use it to travel back and forward the song while watching insightful visualizations of the tonal features of the song. Key bindings and mouse interactions for song navigation are designed thinking in a musician with an instrument at hands.&lt;/p&gt;
&lt;p&gt;Chordata in live: &lt;a href=&quot;http://www.youtube.com/watch?v=xVmkIznjUPE&quot;&gt;http://www.youtube.com/watch?v=xVmkIznjUPE&lt;/a&gt;&lt;br /&gt;
The tutorial: &lt;a href=&quot;http://clam-project.org/wiki/Chordata_tutorial&quot;&gt;http://clam-project.org/wiki/Chordata_tutorial&lt;/a&gt;&lt;br /&gt;
Downloat it at &lt;a href=&quot;http://clam-project.org&quot;&gt;http://clam-project.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This application was developed by Pawel Bartkiewicz as his GSoC 2008 project,  by using existing CLAM technologies under a more suited interface which is now Chordata. Please, enjoy it.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/clamnews.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/clamnews.wordpress.com/99/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/clamnews.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/clamnews.wordpress.com/99/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/clamnews.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/clamnews.wordpress.com/99/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/clamnews.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/clamnews.wordpress.com/99/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/clamnews.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/clamnews.wordpress.com/99/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/clamnews.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/clamnews.wordpress.com/99/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/clamnews.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/clamnews.wordpress.com/99/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=clamnews.wordpress.com&amp;amp;blog=761839&amp;amp;post=99&amp;amp;subd=clamnews&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 08 Mar 2010 21:13:09 +0000</pubDate>
</item>
<item>
	<title>CLAM News: CLAM 1.4.0, 3D molluscs in the space</title>
	<guid>http://clamnews.wordpress.com/?p=94</guid>
	<link>http://clamnews.wordpress.com/2010/03/08/1-4-0-3d-molluscs-in-the-space/</link>
	<description>&lt;p&gt;&lt;a class=&quot;image&quot; href=&quot;http://clam-project.org/wiki/Image:CLAM-1.4.0.png&quot; style=&quot;float: right; margin: 3pt;&quot; title=&quot;CLAM-1.4.0.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; class=&quot;thumbimage&quot; height=&quot;134&quot; src=&quot;http://clam-project.org/w/images/thumb/5/53/CLAM-1.4.0.png/180px-CLAM-1.4.0.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
The CLAM project is delighted to announce the long awaited 1.4.0 release of &lt;a class=&quot;external text&quot; href=&quot;http://clam-project.org&quot; rel=&quot;nofollow&quot; title=&quot;http://clam-project.org&quot;&gt;CLAM, the C++ framework for audio and music&lt;/a&gt;, code name &lt;em&gt;3D molluscs in the space&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In summary, this long term release includes a lot of new spacialization modules for &lt;strong&gt;3D audio&lt;/strong&gt;; &lt;strong&gt;MIDI&lt;/strong&gt;, &lt;strong&gt;OSC&lt;/strong&gt; and &lt;strong&gt;guitar effects&lt;/strong&gt; modules; architectural enhancements such as &lt;strong&gt;typed controls&lt;/strong&gt;; nice &lt;strong&gt;usability&lt;/strong&gt; features for the NetworkEditor interface; convenience tools and scripts to make CLAM experience better; enhanced building of LADSPA plugins and new support for &lt;strong&gt;LV2 and VST&lt;/strong&gt; plugin building; a new easy to use application to explore songs chords called &lt;strong&gt;Chordata&lt;/strong&gt;; many optimizations, bug fixing and code clean ups.&lt;/p&gt;
&lt;p&gt;Many thanks to the people who contributed to this release, including but not limited to the GSoC 2008 students and all the crew at Barcelona Media’s Audio Group.&lt;/p&gt;
&lt;p&gt;Some details follow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Chordata&lt;/strong&gt; is a new CLAM application which offers a user friendly way to explore the chords of your favourite songs, using already existing technology in the CLAM framework but with a much simpler interface.  &lt;a class=&quot;external text&quot; href=&quot;http://www.youtube.com/watch?v=xVmkIznjUPE&quot; rel=&quot;nofollow&quot; title=&quot;http://www.youtube.com/watch?v=xVmkIznjUPE&quot;&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; The &lt;strong&gt;spacialization module&lt;/strong&gt; and helper tools, contributed by &lt;a class=&quot;external text&quot; href=&quot;http://barcelonamedia.org&quot; rel=&quot;nofollow&quot; title=&quot;http://barcelonamedia.org&quot;&gt;Barcelona Media&lt;/a&gt; audio group, turn CLAM in tandem with Blender and Ardour, into a powerful 3D audio authoring and exhibition platform. Here you can see some related &lt;a class=&quot;external text&quot; href=&quot;http://www.youtube.com/watch?v=KSfqJUIAiXk&quot; rel=&quot;nofollow&quot; title=&quot;http://www.youtube.com/watch?v=KSfqJUIAiXk&quot;&gt;Videos&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Typed controls&lt;/strong&gt; extend CLAM with the ability to use whichever C++ type as the message for a control. So, not just floats, but also bools, enums, integers, or envelopes can be sent as asynchronous controls. Examples on boolean and MIDI controls are provided.&lt;/li&gt;
&lt;li&gt; NetworkEditor has been ported to the &lt;a class=&quot;external text&quot; href=&quot;http://doc.trolltech.com/latest/qgraphicsview.html&quot; rel=&quot;nofollow&quot; title=&quot;http://doc.trolltech.com/latest/qgraphicsview.html&quot;&gt;QGraphicsView&lt;/a&gt; framework. Dealing with heavy networks such the big ones used in Barcelona Media have pushed many usability enhancements into its interface: multi-wire dragging, wire highlighting, default port and control actions, network and in-canvas documentation… &lt;a class=&quot;external text&quot; href=&quot;http://www.youtube.com/watch?v=0kt0WDmvMwo&quot; rel=&quot;nofollow&quot; title=&quot;http://www.youtube.com/watch?v=0kt0WDmvMwo&quot;&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; It also made necessary to provide a tool such clamrefactor.py to perform batch high level changes to clam network XML files such as renaming processing types, ports, or configuration parameters, changing configuration values, duplicating sets of processings, connecting them…&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Music Annotator&lt;/strong&gt; application now is designed to aggregate several sources of descriptors and update them after edit. Descriptors are mapped to a work description schema that can be graphically defined. Also semantic web descriptor sources to access webservices such as MusicBrainz have been implemented.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can download them from the &lt;a class=&quot;external text&quot; href=&quot;http://clam-project.org/download/&quot; rel=&quot;nofollow&quot; title=&quot;http://clam-project.org/download/&quot;&gt;download page&lt;/a&gt;. Source, windows, debian and ubuntu packages are available. Contributed binaries for other platforms are welcome.&lt;/p&gt;
&lt;p&gt;See also: &lt;a class=&quot;external text&quot; href=&quot;http://clam-project.org/wiki/Development_screenshots&quot; rel=&quot;nofollow&quot; title=&quot;http://clam-project.org/wiki/Development_screenshots&quot;&gt;development screenshots&lt;/a&gt;, the &lt;a class=&quot;external text&quot; href=&quot;http://clam-project.org/clam/trunk/CLAM/CHANGES&quot; rel=&quot;nofollow&quot; title=&quot;http://clam-project.org/clam/trunk/CLAM/CHANGES&quot;&gt;CHANGELOG&lt;/a&gt;, the &lt;a class=&quot;external text&quot; href=&quot;http://clam-project.org/wiki/Version_Migration_Guide&quot; rel=&quot;nofollow&quot; title=&quot;http://clam-project.org/wiki/Version_Migration_Guide&quot;&gt;version migration guide&lt;/a&gt; and the new &lt;a class=&quot;external text&quot; href=&quot;http://www.youtube.com/group/clamproject&quot; rel=&quot;nofollow&quot; title=&quot;http://www.youtube.com/group/clamproject#&quot;&gt;CLAM group on youtube&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/clamnews.wordpress.com/94/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/clamnews.wordpress.com/94/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/clamnews.wordpress.com/94/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/clamnews.wordpress.com/94/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gofacebook/clamnews.wordpress.com/94/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/clamnews.wordpress.com/94/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gotwitter/clamnews.wordpress.com/94/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/clamnews.wordpress.com/94/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/clamnews.wordpress.com/94/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/clamnews.wordpress.com/94/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/clamnews.wordpress.com/94/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/clamnews.wordpress.com/94/&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/clamnews.wordpress.com/94/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/clamnews.wordpress.com/94/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=clamnews.wordpress.com&amp;amp;blog=761839&amp;amp;post=94&amp;amp;subd=clamnews&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 08 Mar 2010 19:08:58 +0000</pubDate>
</item>
<item>
	<title>Greg Kellum: wired magazine</title>
	<guid>http://gregkellum.com/blog/29@http://gregkellum.com/blog///</guid>
	<link>http://gregkellum.com/blog///index.php/2009/04/03/wired-magazine?blog=5</link>
	<description>&lt;p&gt;I was in Wired magazine last week: &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.wired.com/gadgets/mods/multimedia/2009/03/gallery_instruments?slide=22&amp;amp;slideView=3&quot;&gt;http://www.wired.com/gadgets/mods/multimedia/2009/03/gallery_instruments?slide=22&amp;amp;slideView=3&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://gregkellum.com/blog///index.php/2009/04/03/wired-magazine?blog=5&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 03 Apr 2009 15:04:53 +0000</pubDate>
</item>
<item>
	<title>Roman Goj: Chord Segmentation: first results are here!</title>
	<guid>tag:blogger.com,1999:blog-6230855389015998097.post-4729883697362646743</guid>
	<link>http://ro-baczek.blogspot.com/2007/08/chord-segmentation-first-results-are.html</link>
	<description>Hullo Planet!&lt;br /&gt;Three months after starting this blog, finally the first post...&lt;br /&gt;...because finally I have something nice to show off.&lt;br /&gt;&lt;br /&gt;My &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Google Summer Of Code&lt;/a&gt; task is enhancing realtime chord extraction in &lt;a href=&quot;http://clam.iua.upf.edu/&quot;&gt;CLAM&lt;/a&gt;. So far I've been working on small changes, refactorings, etc. But now I took a small break from that to check whether I can really improve the chord segmentation.&lt;br /&gt;&lt;br /&gt;The chord extraction algorithm in CLAM is really good but has a very &quot;raw&quot; output - not exactly something one could use to learn the chords of a favourite song. A big part of my GSoC task was changing this. And the first results are here:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_7Q2rGqIQOAk/RrxP3IVnn3I/AAAAAAAAAAw/fLsmwKNwapg/s1600-h/screenshot.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5097036686826119026&quot; src=&quot;http://2.bp.blogspot.com/_7Q2rGqIQOAk/RrxP3IVnn3I/AAAAAAAAAAw/fLsmwKNwapg/s400/screenshot.png&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 392px; height: 167px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The screenshot shows ChordExtractor output as viewed with the Annotator. The song being analysed is Debaser-WoodenHouse.mp3. The upper half of the screenshot shows the old output (to be exact the ChordExtractor from current svn, as extracted with my computer using fftw3). The lower half shows the new improved segmentation (notice the chord segments are much bigger, not that, well - segmented).&lt;br /&gt;&lt;br /&gt;Problem is - this code exists only in my sandbox for now... I unfortunately reverted to my old pre-svn methods of programming - more or less just jabbing at the code as long as the number of segfaults stays manageable (just one with this code, shows how simple the changes are!). The next few days will hopefully see it cleaned and committed to the svn.&lt;br /&gt;&lt;br /&gt;What this new improved segmentation actually does ...&lt;br /&gt;&lt;br /&gt;Some chords are very similar to others i.e. C# Minor differs from A Major by just one note (G# exchanged for A). When you play just the two common notes for the first 5 seconds and then a full chord for the next 5, you'll know that you're not really changing the chords... but the old algorithm would probably show you a mix of both chords during the first 5 seconds.&lt;br /&gt;&lt;br /&gt;The new algorithms calulates a chord similarity matrix and takes this similarity into account when deciding whether a new segment really needs to be inserted. This is enough to produce the results above. I still hope this simplicity will allow some nice improvements... but this is still to be seen (hopefully before the GSoC deadline, *gulp*).&lt;br /&gt;&lt;br /&gt;For anyone wishing to see the results, links to the new and old ChordExtractor .pool files for the songs that come as examples with Annotator:&lt;br /&gt;&lt;a href=&quot;http://www.box.net/shared/ihh2gdfono&quot;&gt;Debaser, Wooden House, old&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.box.net/shared/vmvqdcy15t&quot;&gt;Debaser, Wooden House, new&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.box.net/shared/vmvqdcy15t&quot;&gt;Debaser, Coffee Smell, old&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.box.net/shared/vmvqdcy15t&quot;&gt;Debaser, Coffee Smell, new&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6230855389015998097-4729883697362646743?l=ro-baczek.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 10 Dec 2008 22:19:41 +0000</pubDate>
	<author>noreply@blogger.com (Roman)</author>
</item>

</channel>
</rss>

