<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Matthieu Brucher's blog</title> <link>http://matt.eifelle.com</link> <description /> <lastBuildDate>Tue, 27 Mar 2012 08:30:12 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/eifelle/CPPV" /><feedburner:info uri="eifelle/cppv" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Cover tree for nearest-neighbors</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/eN8ZuHOetUY/</link> <comments>http://matt.eifelle.com/2012/03/27/cover-tree-for-nearest-neighbors/#comments</comments> <pubDate>Tue, 27 Mar 2012 08:30:12 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[C++]]></category> <category><![CDATA[Profiler]]></category> <category><![CDATA[Open source]]></category> <category><![CDATA[Profiling]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=2042</guid> <description><![CDATA[I&#8217;ve looked on github for a good C++ implementation of Cover Trees for nearest-neighbors search, but I didn&#8217;t find one. I may have overlooked some repositories, but in the end, implementing it myself wasn&#8217;t that difficult. Implementation Contrary to kdtrees, the cover tree nodes always represent one point. So you have as many nodes as [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;ve looked on github for a good C++ implementation of Cover Trees for nearest-neighbors search, but I didn&#8217;t find one. I may have overlooked some repositories, but in the end, implementing it myself wasn&#8217;t that difficult.<br
/> <span
id="more-2042"></span></p><h4>Implementation</h4><p>Contrary to kdtrees, the cover tree nodes always represent one point. So you have as many nodes as you have data points. Each of them can have several children, sorted by &#8220;level&#8221;, or distance hierarchy. Each level halves the distance between the node and its children. When constructing the tree instance, the distance you use is given as parameters (and its type is a template parameter, as well as the point type and the data type used for comparisons).</p><p>Construction of the tree is done by searching in the tree for the closest node and the lowest hierarchy possible. In all time, the min and max levels are tracked in the tree. On insertion, the max level is tried, and if it fails, the max level is increased by one. The failure occurs if the new point is furthest of the root point that the maximum distance on the max level. At each level, the set of the nodes that are closer to the new point than the current maximum distance are kept (function <strong>populate_set_from_node</strong>). If the least distance is greater than the next level maximum level (function <strong>find_min_dist</strong>, the recursion stops and the new node is inserted in the first node in the set.</p><p>When doing a search, a list of distances and points (of type <strong>NearestNodesStructure</strong>) is created and its size is kept at the number of neighbors k. On entrance of a new level (<strong>level_traversal</strong>), all nodes that have children that could be close enough (current distance less than maximum level distance + distance to the current k-th neighbors found with <strong>find_k_dist</strong>) are added to the list. In order to speed search, a map is not used, but a partial sort is done at each iteration (which makes <strong>find_k_dist</strong> work without sorting the container again). Without this, the performance is worse than a linear knn search.</p><p>I didn&#8217;t implement other functions like removal or traversal. I don&#8217;t need them, but feel free to add them if you need. Sidenote: I will try to find time to refactor the code, because it is not very clean at the moment (especially the <strong>knn</strong> method).</p><h4>Results</h4><p>So some figures. I&#8217;ve populated a tree with 100k elements, and then made a 10-neighbors search with the cover tree, and with a standard linear search. Without the construction time, the search is about ten times faster than a linear one. Of course, it all depends on the cover tree balance. You could design a cover tree that has too many levels (but also the data would be unusual) and that would result in an almost linear time.</p><p>I&#8217;ve done a profile with <a
href="http://matt.eifelle.com/2009/04/07/profiling-with-valgrind/">callgrind</a>, but the majority of the time is in the tree construction. No point in checking the search and displaying it here as the following timings show:</p><pre>Build time 00:09:38.530397
Out time (linear) 00:00:00.238989
Out time (cover_tree) 00:00:00.012518
</pre><p>What must be optimized is clearly the build time.</p><p>The test code is in the main.cpp file on github.</p><p>Cover Tree code on Github is <a
href="https://github.com/mbrucher/CoverTree/">here</a> and the publication with detailed algorithms <a
href="http://hunch.net/~jl/projects/cover_tree/icml_final/final-icml.pdf">here</a>.</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/dwLpXWBbxI4TMmz5IHo2zvWEXS8/0/da"><img src="http://feedads.g.doubleclick.net/~a/dwLpXWBbxI4TMmz5IHo2zvWEXS8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dwLpXWBbxI4TMmz5IHo2zvWEXS8/1/da"><img src="http://feedads.g.doubleclick.net/~a/dwLpXWBbxI4TMmz5IHo2zvWEXS8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/eN8ZuHOetUY" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2012/03/27/cover-tree-for-nearest-neighbors/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2012/03/27/cover-tree-for-nearest-neighbors/</feedburner:origLink></item> <item><title>Registry and automatic plugin system</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/o65GvzRGWRI/</link> <comments>http://matt.eifelle.com/2012/03/06/registry-and-automatic-plugin-system/#comments</comments> <pubDate>Tue, 06 Mar 2012 08:27:19 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[C++]]></category> <category><![CDATA[Design Patterns]]></category> <category><![CDATA[Development process]]></category> <category><![CDATA[Design pattern]]></category> <category><![CDATA[Registry]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=2038</guid> <description><![CDATA[A few years ago, I mentioned that the registry pattern was my favorite pattern in Python. Well, it may also be my favorite C++ pattern. I&#8217;ve implemented this pattern in most of my production code, when different algorithms are needed for some computation. Some weeks ago, a colleague asked to use one of my production [...]]]></description> <content:encoded><![CDATA[<p>A few years ago, I mentioned that <a
href="http://matt.eifelle.com/2008/04/30/my-favorite-design-pattern-in-python/">the registry pattern was my favorite pattern in Python</a>. Well, it may also be my favorite C++ pattern.<br
/> <span
id="more-2038"></span></p><p>I&#8217;ve implemented this pattern in most of my production code, when different algorithms are needed for some computation. Some weeks ago, a colleague asked to use one of my production codes, because the parallel I/O were hidden inside a job scheduler. The only thing he had to do was deriving a base class, implement the algorithm, and he could use the massively distributed framework. Of course, the derived class builder was registered in a map, registry pattern inside.</p><p>The idea of the plugin emerged when he didn&#8217;t want to compile the whole distributed system. As his class was automatically registered on startup, the plugin system was quite easy to implement: just dlopen() the library, and the build would be registered. Usually, you have to extract some function from the library before being able to use it. With a registry pattern, this is no longer the case. So I did just that, and now all the complicated algorithms can now be exported as plugins, which eases the building process (through SCons) and of course the algorithm development (big time).</p><p>Now, I just need to optimize the distributed framework for I/O&#8230;</p> 
<p><a href="http://feedads.g.doubleclick.net/~a/reMdD9Z6I3rtxzs4ptexxZi8ifM/0/da"><img src="http://feedads.g.doubleclick.net/~a/reMdD9Z6I3rtxzs4ptexxZi8ifM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/reMdD9Z6I3rtxzs4ptexxZi8ifM/1/da"><img src="http://feedads.g.doubleclick.net/~a/reMdD9Z6I3rtxzs4ptexxZi8ifM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/o65GvzRGWRI" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2012/03/06/registry-and-automatic-plugin-system/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2012/03/06/registry-and-automatic-plugin-system/</feedburner:origLink></item> <item><title>Book review: SONAR X1 Power!: The Comprehensive Guide</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/updZgyeR39s/</link> <comments>http://matt.eifelle.com/2012/02/07/book-review-sonar-x1-power-the-comprehensive-guide/#comments</comments> <pubDate>Tue, 07 Feb 2012 08:48:18 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[Book review]]></category> <category><![CDATA[Course PTR]]></category> <category><![CDATA[Music]]></category> <category><![CDATA[Digital Audio Workstation]]></category> <category><![CDATA[digital filter]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=2015</guid> <description><![CDATA[I think I&#8217;ve said it already, I have a rock band. Currently, we are recording our first album, and while we used Traktion in the past, I&#8217;m considering moving to Sonar (it is continuously updated and has a great reputation, also I&#8217;ve played a few time in the past with its ancestor Cakewalk). So let&#8217;s [...]]]></description> <content:encoded><![CDATA[<p>I think I&#8217;ve said it already, I have a rock band. Currently, we are recording our first album, and while we used Traktion in the past, I&#8217;m considering moving to Sonar (it is continuously updated and has a great reputation, also I&#8217;ve played a few time in the past with its ancestor Cakewalk).</p><p>So let&#8217;s talk about the book&#8217;s comprehensive guide.</p><p><span
id="more-2015"></span></p><h4>Content and opinions</h4><p>Sonar has an internal programming language, CAL. One of the reasons I&#8217;ve chosen this book is that there is a chapter on CAL.</p><p>The first thing one wants to do when starting Sonar is usually playing something. The author does not and spends four chapters explaining the basics of Sonar: first what gravitates around Sonar (sound card, synthesizer&#8230;), then how to configure Sonar to one&#8217;s needs, handling projects and finally how to navigate in a project.</p><p>The next three chapters are about music and sound handling: how they are recorded (audio or MIDI), how it can be modified (piano roll view, step sequencer view, event list or also tempo list), and some advanced features like quantize and audio snap. In my opinion, these are not really advanced features, because I tend to use them with all my projects. Also, the Groove Quantize is something that may not always be intuitive, but it is well explained in one page.</p><p>I have more or less skipped the eighth chapter, as they cover VST instruments, and I&#8217;m used to other instruments from Native Instruments. Having them is great when you don&#8217;t have some, but not relying on them allows to change Sonar to another sequencer if needed. Before moving to the console part, the author covers some other views that are useful to create content, like the matrix view or groove clips.</p><p>After a chapter on the console view, the author tackles effects. This means explaining how they can work and the different kind of effects and their implementation in Sonar. As for the instruments, the effects offered in Sonar are thoroughly explained, although their interface is simple enough. The next chapter covers automation and control surfaces, as their use is precisely on mixing and mastering. My only regret is that the generic control surface support has some issues that were not explained (especially when you have a motorized control surface, the automation does not make the knobs move as for a Mackie Control).</p><p>The last chapters (except for CAL) cover some side-functions that I don&#8217;t use: the export to a CD is not something I usually do with my sequencer (in fact I don&#8217;t do it on my computer, I prefer using a professional CD burner), surround is not something I&#8217;m interesting in (although it seems to be correctly covered by the author), I don&#8217;t work with the staff view and I don&#8217;t care about Studioware. This being said, I cared about the last chapter.</p><p>I expected a lot from the CAL chapter, but I knew that it could not be a full CAL course. The basics are covered, as well as some examples. Sadly it stops there, as the author refers to online tutorials that I never found. Still, it is enough for an accomplished programmer to start and to dig inside CAL with the help of the several scripts.</p><p>A great aspect of the book is keyboard shortcuts. Some of the functions are even only accessible by shortcuts, and of course when mastered, shortcuts can greatly enhance productivity.</p><h4>Conclusion</h4><p>The book tries to cover all aspects of Sonar. Although CAL is not as addressed as I would like it to be, it is covered enough to be usable. The last word would be that this guide is a good companion to the application.</p><p><iframe
src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=masbl03-20&o=1&p=8&l=as1&m=amazon&f=ifr&asins=1435458508" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/alKTj__NrAY5JBhoNWv1Du0mEVg/0/da"><img src="http://feedads.g.doubleclick.net/~a/alKTj__NrAY5JBhoNWv1Du0mEVg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/alKTj__NrAY5JBhoNWv1Du0mEVg/1/da"><img src="http://feedads.g.doubleclick.net/~a/alKTj__NrAY5JBhoNWv1Du0mEVg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/updZgyeR39s" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2012/02/07/book-review-sonar-x1-power-the-comprehensive-guide/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2012/02/07/book-review-sonar-x1-power-the-comprehensive-guide/</feedburner:origLink></item> <item><title>Book review: Canon 7D: From Snapshots to Great Shots</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/qeNzfOV--fg/</link> <comments>http://matt.eifelle.com/2012/01/24/book-review-canon-7d-from-snapshots-to-great-shots/#comments</comments> <pubDate>Tue, 24 Jan 2012 08:08:29 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[Book review]]></category> <category><![CDATA[Peachpit Press]]></category> <category><![CDATA[Digital photography]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=1998</guid> <description><![CDATA[It&#8217;s been a while since I&#8217;ve started considering buying a real photo camera. And I&#8217;ve decided on a Canon 7D. As usual, the user guide covers the camera, but I thought it would be better to have a more complete guide to the 7D. Content and opinions You don&#8217;t have to read the book to [...]]]></description> <content:encoded><![CDATA[<p>It&#8217;s been a while since I&#8217;ve started considering buying a real photo camera. And I&#8217;ve decided on a Canon 7D. As usual, the user guide covers the camera, but I thought it would be better to have a more complete guide to the 7D.<br
/> <span
id="more-1998"></span></p><h4>Content and opinions</h4><p>You don&#8217;t have to read the book to know how to take a picture, but each chapter adds a new angle o the way one can use the 7D. The first chapter is a ten configuration tips list, and I think each one of them is relevant. They have already helped me enhance my pictures. The second chapter is a list of things to check and understand before shooting. I have to say I didn&#8217;t apply them all (updating the firmware for instance), and there is also an overview of the basic technical elements in a camera (shutter, iso&#8230;).</p><p>Then the serious work begins. The third chapter browses through the different capture modes. Each mode is explained with the associated available changes (exposure, ISO&#8230;). Then two chapters tackle what I would say are the most common styles: portrait and landscape. I learnt about a lot of things offered by the 7D in those chapters, like exposure metering or the electronic level. There are a lot of tips that are available in those two chapters. The sixth chapter is about moving targets, a subject that is hard, but it seems that the camera has some useful functions for that.</p><p>Then, two chapters tackle subjects that are common to all modes: light and composition. There are more advanced books on these topics, but the author manages to cover the most useful ground, from hints to warnings. The last chapter but one is on video, it is interesting, but I didn&#8217;t get my 7D for video. Still, there is a warning that I did find very interesting on this subject. I won&#8217;t tell it here, go and grab the book instead.</p><p>The ending chapter is about some &#8220;advanced&#8221; techniques, but it&#8217;s more about explaining some things you can do with the 7D, but there is 90% chance that you won&#8217;t ever use any of them.</p><p>Finally, it is worth mentioning that each chapter starts with one or two pictures and some associated comments. This is a great help when you don&#8217;t have much experience. After each chapter, a small list sums up all new information.</p><h4>Conclusion</h4><p>This book is a perfect complement to the user guide. The latter explains one button or setting after the other, whereas the former links everything together. When you don&#8217;t know about the different modes of the camera (aperture or shutter for instance), it is a must have to take great pictures.</p><p><iframe
src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=masbl03-20&o=1&p=8&l=as1&m=amazon&f=ifr&asins=0321624823" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/CFBo1cchfjw_EoRRvPVqgL6NUU8/0/da"><img src="http://feedads.g.doubleclick.net/~a/CFBo1cchfjw_EoRRvPVqgL6NUU8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/CFBo1cchfjw_EoRRvPVqgL6NUU8/1/da"><img src="http://feedads.g.doubleclick.net/~a/CFBo1cchfjw_EoRRvPVqgL6NUU8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/qeNzfOV--fg" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2012/01/24/book-review-canon-7d-from-snapshots-to-great-shots/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2012/01/24/book-review-canon-7d-from-snapshots-to-great-shots/</feedburner:origLink></item> <item><title>QtMosaic 0.2: faster mosaics</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/q8CSMu5MCFU/</link> <comments>http://matt.eifelle.com/2012/01/17/qtmosaic-0-2-faster-mosaics/#comments</comments> <pubDate>Tue, 17 Jan 2012 08:09:01 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[C++]]></category> <category><![CDATA[Qt]]></category> <category><![CDATA[QtMosaic]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=1992</guid> <description><![CDATA[Just after the 0.1 release, I&#8217;ve worked to add some few tricks and fix a few bugs (see QtMosaic on Github). The most important change is a better image search. The Antipole Tree An antipole tree is a binary search tree that is constructed on antipole pairs. An antipole pair is composed of the furthest [...]]]></description> <content:encoded><![CDATA[<p>Just after the <a
href="http://matt.eifelle.com/2011/10/11/qtmosaic-0-1-easy-photomosaics/">0.1 release</a>, I&#8217;ve worked to add some few tricks and fix a few bugs (see <a
href="https://github.com/mbrucher/QtMosaic/issues?sort=created&#038;direction=desc&#038;state=closed">QtMosaic on Github</a>). The most important change is  a better image search.<br
/> <span
id="more-1992"></span></p><h1>The Antipole Tree</h1><p>An antipole tree is a binary search tree that is constructed on antipole pairs. An antipole pair is composed of the furthest points in a set. When constructing the tree, one starts with the full set of images/thumbnails, then recursively, an antipole pair is chosen from the (sub)set (figure 1) and two new clusters are created, images are aggregated to the nearest image of the pair (figure 2). When the subset is small enough, the recursion stops.</p><p><center><div
id="attachment_2002" class="wp-caption aligncenter" style="width: 310px"><a
href="http://matt.eifelle.com/wp-content/uploads/2012/01/Antipole1.png"><img
src="http://matt.eifelle.com/wp-content/uploads/2012/01/Antipole1-300x225.png" alt="" title="Figure 1" width="300" height="225" class="size-medium wp-image-2002" /></a><p
class="wp-caption-text">Figure 1: Original set with the first antipole pair</p></div></center></p><p><center><br
/><div
id="attachment_2003" class="wp-caption aligncenter" style="width: 310px"><a
href="http://matt.eifelle.com/wp-content/uploads/2012/01/Antipole2.png"><img
src="http://matt.eifelle.com/wp-content/uploads/2012/01/Antipole2-300x225.png" alt="" title="Figure 2" width="300" height="225" class="size-medium wp-image-2003" /></a><p
class="wp-caption-text">Figure 2: Two subsets based on the antipole pair in the original set</p></div></center></p><p>The search uses a distance-sorted list. When a leaf node is visited, one looks for the nearest image and stores the result. When an internal node is visited, its children will be added to the sorted list, and the distance will be the distance to the center of the cluster minus the radius (figure 3). This way, if the current best is nearer to the reference than the nearest cluster, no nearest image will be found. It&#8217;s a usual distance search in a binary tree.</p><p><center><br
/><div
id="attachment_2004" class="wp-caption aligncenter" style="width: 310px"><a
href="http://matt.eifelle.com/wp-content/uploads/2012/01/Antipole3.png"><img
src="http://matt.eifelle.com/wp-content/uploads/2012/01/Antipole3-300x225.png" alt="" title="Figure 3" width="300" height="225" class="size-medium wp-image-2004" /></a><p
class="wp-caption-text">Figure 3: distance from a new image to the different subsets</p></div></center></p><h1>Result</h1><p>Of course, building the tree is costly. Although it can be parallelized, it is still slow. The upper side is that using a tree for the search is O(log(n)) instead of the usual O(n). It is actually more efficient for mosaic databases with several thousands of images or more. The result is of course exactly the same as with the linear search.</p><p>There are some differences between the original publication (see the reference) and the current code. In the reference, the antipole pair has a special status, as  the center of the clusters and they are not tested with the rest of the subset in a leaf node. So in the original code, each tested cluster tests at least one image with the reference, whereas only leaf nodes give the closest images search in my case. The difference is that the center of each cluster will be the real center of the cluster, meaning that the minimum distance will be more close to the reality, and I hope that this will translate into speed-up. The other addition is that the visiting code is also simpler, which is better for maintenance.</p><h1>Conclusion</h1><p>This tool has now a logarithmic image search. It should be faster than linear search for huge mosaic databases. Also, the final photomosaic was enhanced by changing the result mosaic mean to the original image mosaic.</p><p>Reference : <a
href="http://dx.doi.org/10.1109/TKDE.2005.53">Antipole Tree Indexing to Support Range Search and K-Nearest Neighbor Search in Metric Spaces</a></p><form
action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input
type="hidden" name="cmd" value="_xclick" /> <input
type="hidden" name="business" value="matthieu.brucher@gmail.com" /><input
type="hidden" name="item_name" value="Buy Me a Coffee!" /><input
type="hidden" name="currency_code" value="USD" /><span
style="font-size:10.0pt"><strong> Buy Me a Coffee!</strong></span><br
/><br
/><select
id="amount" name="amount" class=""><option
value="3">Capuccino - 3$</option><option
value="6">Frappuccino - 6$</option><option
value="10">Hot Chocolate - 10$</option><option
value="20">Expensive Coffee - 20$</option><option
value="50">Alien Coffee - 50$</option></select><br
/><br
/><strong>Other Amount:</strong><br
/><br
/><input
type="text" name="amount" size="10" title="Other donate" value="" /><br
/><br
/><strong> Your Email Address :</strong><input
type="hidden" name="on0" value="Reference" /><br
/><br
/><input
type="text" name="os0" maxlength="60" /> <br
/><br
/> <input
type="hidden" name="no_shipping" value="2" /> <input
type="hidden" name="no_note" value="1" /> <input
type="hidden" name="mrb" value="3FWGC6LFTMTUG" /> <input
type="hidden" name="bn" value="IC_Sample" /> <input
type="hidden" name="return" value="http://matt.eifelle.com" /><input
type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but11.gif" name="submit" alt="Make payments with payPal - it's fast, free and secure!" /></form> 
<p><a href="http://feedads.g.doubleclick.net/~a/-nhFIJevNxTYNSiwYw5ED28-Hgw/0/da"><img src="http://feedads.g.doubleclick.net/~a/-nhFIJevNxTYNSiwYw5ED28-Hgw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-nhFIJevNxTYNSiwYw5ED28-Hgw/1/da"><img src="http://feedads.g.doubleclick.net/~a/-nhFIJevNxTYNSiwYw5ED28-Hgw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/q8CSMu5MCFU" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2012/01/17/qtmosaic-0-2-faster-mosaics/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2012/01/17/qtmosaic-0-2-faster-mosaics/</feedburner:origLink></item> <item><title>Interactive Raytracer: Reboot?</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/N-IBLTOu_qE/</link> <comments>http://matt.eifelle.com/2011/12/14/interactive-raytracer-reboot/#comments</comments> <pubDate>Wed, 14 Dec 2011 08:53:00 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[C++]]></category> <category><![CDATA[Interactive RayTracer]]></category> <category><![CDATA[Raytracing]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=1987</guid> <description><![CDATA[During SuperComputing 2011, I stumbled across a paper on parallel random number generation. And it brought back some memories of a blog post I wanted to do here on oversampling in my Interactive Raytracer. Random numbers are important in a raytracer because one needs oversampling to have anti-aliasing, and to have a more realistic rendering, [...]]]></description> <content:encoded><![CDATA[<p>During SuperComputing 2011, I stumbled across a paper on parallel random number generation. And it brought back some memories of a blog post I wanted to do here on oversampling in my Interactive Raytracer.</p><p>Random numbers are important in a raytracer because one needs oversampling to have anti-aliasing, and to have a more realistic rendering, we need to add some jitter inside the oversampling. I won&#8217;t talk about this here, it is not my point (yet). So I&#8217;ve decided to resurrect IRT from the dead, at least long enough to test parallel random number generators. It is now on <a
href="https://github.com/mbrucher/Interactive-RayTracer">Github</a>, and I&#8217;ve also changed the matrix library to Eigen. Some optimizations later, it is slightly faster than before, although it is still very far from <a
href="http://igad.nhtv.nl/~bikker/">Bikker&#8217;s work</a>.</p><p>The Python wrappers are still working BTW.</p><p>Let&#8217;s hope I find some time to finish this before getting back at VSTs <img
src='http://matt.eifelle.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><form
action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input
type="hidden" name="cmd" value="_xclick" /> <input
type="hidden" name="business" value="matthieu.brucher@gmail.com" /><input
type="hidden" name="item_name" value="Buy Me a Coffee!" /><input
type="hidden" name="currency_code" value="USD" /><span
style="font-size:10.0pt"><strong> Buy Me a Coffee!</strong></span><br
/><br
/><select
id="amount" name="amount" class=""><option
value="3">Capuccino - 3$</option><option
value="6">Frappuccino - 6$</option><option
value="10">Hot Chocolate - 10$</option><option
value="20">Expensive Coffee - 20$</option><option
value="50">Alien Coffee - 50$</option></select><br
/><br
/><strong>Other Amount:</strong><br
/><br
/><input
type="text" name="amount" size="10" title="Other donate" value="" /><br
/><br
/><strong> Your Email Address :</strong><input
type="hidden" name="on0" value="Reference" /><br
/><br
/><input
type="text" name="os0" maxlength="60" /> <br
/><br
/> <input
type="hidden" name="no_shipping" value="2" /> <input
type="hidden" name="no_note" value="1" /> <input
type="hidden" name="mrb" value="3FWGC6LFTMTUG" /> <input
type="hidden" name="bn" value="IC_Sample" /> <input
type="hidden" name="return" value="http://matt.eifelle.com" /><input
type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but11.gif" name="submit" alt="Make payments with payPal - it's fast, free and secure!" /></form> 
<p><a href="http://feedads.g.doubleclick.net/~a/vgvVNmPJ15vOWRzukWBT0P6oyWg/0/da"><img src="http://feedads.g.doubleclick.net/~a/vgvVNmPJ15vOWRzukWBT0P6oyWg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/vgvVNmPJ15vOWRzukWBT0P6oyWg/1/da"><img src="http://feedads.g.doubleclick.net/~a/vgvVNmPJ15vOWRzukWBT0P6oyWg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/N-IBLTOu_qE" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2011/12/14/interactive-raytracer-reboot/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2011/12/14/interactive-raytracer-reboot/</feedburner:origLink></item> <item><title>Book review: Version Control by Example</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/KMH0J-j3o88/</link> <comments>http://matt.eifelle.com/2011/10/25/book-review-version-control-by-example/#comments</comments> <pubDate>Tue, 25 Oct 2011 07:23:22 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[Book review]]></category> <category><![CDATA[Pyrenean Gold Press]]></category> <category><![CDATA[Tools]]></category> <category><![CDATA[DVCS]]></category> <category><![CDATA[Git]]></category> <category><![CDATA[Mercurial]]></category> <category><![CDATA[VCS]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=1975</guid> <description><![CDATA[A colleague of mine give me this book, as I use &#8220;third generation&#8221; VCSs. I decided to check on the author approach on Version Control and his opinion on the matter. The book explores the different approaches of the latest VCS tools, with their advantages and drawbacks. Also, it delves into some algorithmic designs of [...]]]></description> <content:encoded><![CDATA[<p>A colleague of mine give me this book, as I use &#8220;third generation&#8221; VCSs. I decided to check on the author approach on Version Control and his opinion on the matter. The book explores the different approaches of the latest VCS tools, with their advantages and drawbacks. Also, it delves into some algorithmic designs of Distributed VCSs. <a
href="http://matt.eifelle.com/2010/09/21/bazaar-git-or-mercurial-some-thoughts/">I&#8217;ve already discussed some of these tools</a>, but the book is not a flame war against one DVCS, but more an explanation of all of them.<br
/> <span
id="more-1975"></span></p><h4>Content and opinions</h4><p>The focus on the book is how to use a Version Control system, so several chapters are dedicated to how to use the most well-known one &#8211; and the one the author develops.</p><p>The book is split in three parts: &#8220;old&#8221; VCSs, new VCSs and finally how they work. The first chapter is a glossary of the special VCS words and their meaning. Once this is done, the first example chapter starts with Subversion. A small situation is depicted with two coders that are locally closed.</p><p>The third chapter starts the second part and it introduces new concepts for distributed VCSs. A complete chapter is dedicated to the advantages of DVCSs, and it doesn&#8217;t fall in the common pitfalls (those are in fact a reason to some humor from the author). The next chapter does exactly the opposite, <em>i.e.</em> explains the drawbacks of a DVCS. Although I disagree on GUI part (there are wonderful GUIs for both Mercurial and GIT on Windows, and on Linux they have a great integration in Eclipse for instance), I do agree with the author on the main topics here. The next four chapters are the practical application seen in the second chapter applied to Mercurial, Git and Veracity (two chapter for this one, one to explain the differences with Mercurial and Git, and one for the scenario), the tool the author develops.</p><p>The last part can be called &#8220;how to use them&#8221;. Even for the second generation tools like SVN, I was flabbergasted to see that a lot of coders didn&#8217;t even know how to use it, and even worse, that experienced managers didn&#8217;t know how to implement an appropriate workflow. So I think that the first chapter in this part should be something that everyone HAS to read if one wants to be called a coder. Seriously. Then, as I&#8217;ve said, the author explains how the distributed tools work and some of their internals. It&#8217;s not for the average coder, but it&#8217;s really interesting &#8211; for the culture. The last chapter is a set of golden rules, and like the first chapter, it&#8217;s something mandatory to read and use.</p><h4>Conclusion</h4><p>One of the most easy-to-read introductory books and a book on a sensible subject, this book should be read by everyone searching for a robust tool to support one&#8217;s development. It is also a very good argumentation on why you should use one.</p><p><iframe
src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=masbl03-20&o=1&p=8&l=as1&m=amazon&f=ifr&asins=0983507902" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p> 
<p><a href="http://feedads.g.doubleclick.net/~a/JKqRiEfkrxNDeXJwFXTxXd0wYO4/0/da"><img src="http://feedads.g.doubleclick.net/~a/JKqRiEfkrxNDeXJwFXTxXd0wYO4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JKqRiEfkrxNDeXJwFXTxXd0wYO4/1/da"><img src="http://feedads.g.doubleclick.net/~a/JKqRiEfkrxNDeXJwFXTxXd0wYO4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/KMH0J-j3o88" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2011/10/25/book-review-version-control-by-example/feed/</wfw:commentRss> <slash:comments>4</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2011/10/25/book-review-version-control-by-example/</feedburner:origLink></item> <item><title>Announcement: QtSimpleEQ 1.0 (QtVST)</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/xPVaBWhBZGw/</link> <comments>http://matt.eifelle.com/2011/10/19/announcement-qtsimpleoverdrive-1-2-qtvst-2/#comments</comments> <pubDate>Wed, 19 Oct 2011 13:00:41 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[C++]]></category> <category><![CDATA[Digital filters]]></category> <category><![CDATA[Music]]></category> <category><![CDATA[Digital Audio Workstation]]></category> <category><![CDATA[digital filter]]></category> <category><![CDATA[QtSimpleEQ]]></category> <category><![CDATA[QtVST]]></category> <category><![CDATA[VST]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=1950</guid> <description><![CDATA[I&#8217;m pleased to announce the 1.0 version of QtSimpleEQ, a plugin with one low-pass, two peak and one high pass second-order filters. Nothing fancy in the algorithms, it&#8217;s mainly another show case for Qt VST plugins. The code is available under the GPL2 on github and on Sourceforge. The plugin can be download on the [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;m pleased to announce the 1.0 version of QtSimpleEQ, a plugin with one low-pass, two peak and one high pass second-order filters. Nothing fancy in the algorithms, it&#8217;s mainly another show case for Qt VST plugins.</p><p>The code is available under the GPL2 on <a
href="https://github.com/mbrucher/QtVST/">github</a> and on <a
href="https://sourceforge.net/projects/qtvst/files/QtSimpleEQ/">Sourceforge</a>.</p><p>The plugin can be download on <a
href="https://sourceforge.net/projects/qtvst/files/QtSimpleEQ/">the Sourceforge project page</a>.</p><p>The plugin was tested with Tracktion 3 (Windows XP).</p><p>Snapshot:<center><div
id="attachment_1972" class="wp-caption aligncenter" style="width: 310px"><a
href="http://matt.eifelle.com/wp-content/uploads/2012/10/QtSimpleEQ.png"><img
src="http://matt.eifelle.com/wp-content/uploads/2012/10/QtSimpleEQ-300x221.png" alt="" title="QtSimpleEQ" width="300" height="221" class="size-medium wp-image-1972" /></a><p
class="wp-caption-text">QtSimpleEQ UI</p></div></center></p><form
action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input
type="hidden" name="cmd" value="_xclick" /> <input
type="hidden" name="business" value="matthieu.brucher@gmail.com" /><input
type="hidden" name="item_name" value="Buy Me a Coffee!" /><input
type="hidden" name="currency_code" value="USD" /><span
style="font-size:10.0pt"><strong> Buy Me a Coffee!</strong></span><br
/><br
/><select
id="amount" name="amount" class=""><option
value="3">Capuccino - 3$</option><option
value="6">Frappuccino - 6$</option><option
value="10">Hot Chocolate - 10$</option><option
value="20">Expensive Coffee - 20$</option><option
value="50">Alien Coffee - 50$</option></select><br
/><br
/><strong>Other Amount:</strong><br
/><br
/><input
type="text" name="amount" size="10" title="Other donate" value="" /><br
/><br
/><strong> Your Email Address :</strong><input
type="hidden" name="on0" value="Reference" /><br
/><br
/><input
type="text" name="os0" maxlength="60" /> <br
/><br
/> <input
type="hidden" name="no_shipping" value="2" /> <input
type="hidden" name="no_note" value="1" /> <input
type="hidden" name="mrb" value="3FWGC6LFTMTUG" /> <input
type="hidden" name="bn" value="IC_Sample" /> <input
type="hidden" name="return" value="http://matt.eifelle.com" /><input
type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but11.gif" name="submit" alt="Make payments with payPal - it's fast, free and secure!" /></form> 
<p><a href="http://feedads.g.doubleclick.net/~a/PNG_gwHd2Ilphola9iLE4eJ3OVA/0/da"><img src="http://feedads.g.doubleclick.net/~a/PNG_gwHd2Ilphola9iLE4eJ3OVA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PNG_gwHd2Ilphola9iLE4eJ3OVA/1/da"><img src="http://feedads.g.doubleclick.net/~a/PNG_gwHd2Ilphola9iLE4eJ3OVA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/xPVaBWhBZGw" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2011/10/19/announcement-qtsimpleoverdrive-1-2-qtvst-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2011/10/19/announcement-qtsimpleoverdrive-1-2-qtvst-2/</feedburner:origLink></item> <item><title>QtMosaic 0.1: easy photomosaics</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/v7Xfdp2J1Ow/</link> <comments>http://matt.eifelle.com/2011/10/11/qtmosaic-0-1-easy-photomosaics/#comments</comments> <pubDate>Tue, 11 Oct 2011 07:25:14 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[C++]]></category> <category><![CDATA[Qt]]></category> <category><![CDATA[QtMosaic]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=1960</guid> <description><![CDATA[Just for fun, I&#8217;m pleased to announce a working version of QtMosaic. It allows to create a mosaics database and then generate a photomosaic from this database. For instance, here is an original image: The used database is freely available on the Internet, and the photomosaic is generated with 18&#215;24 thumbnails: The code is available [...]]]></description> <content:encoded><![CDATA[<p>Just for fun, I&#8217;m pleased to announce a working version of QtMosaic.<br
/> It allows to create a mosaics database and then generate a photomosaic from this database.</p><p>For instance, here is an original image:<br
/><center><div
id="attachment_1963" class="wp-caption aligncenter" style="width: 310px"><a
href="http://matt.eifelle.com/wp-content/uploads/2011/10/original.jpg"><img
src="http://matt.eifelle.com/wp-content/uploads/2011/10/original-300x162.jpg" alt="" title="Original photo" width="300" height="162" class="aligncenter size-medium wp-image-1961" /></a><p
class="wp-caption-text">Original photo</p></div></center><br
/> The <a
href="http://www.freephotogaleries.com">used database is freely available on the Internet</a>, and the photomosaic is generated with 18&#215;24 thumbnails:<br
/><center><div
id="attachment_1963" class="wp-caption aligncenter" style="width: 310px"><a
href="http://matt.eifelle.com/wp-content/uploads/2011/10/photomosaic.jpg"><img
src="http://matt.eifelle.com/wp-content/uploads/2011/10/photomosaic-300x162.jpg" alt="" title="Rendered photomosaic" width="300" height="162" class="size-medium wp-image-1963" /></a><p
class="wp-caption-text">Rendered photomosaic</p></div></center></p><p>The code is available on <a
href="https://github.com/mbrucher/QtMosaic">GitHub</a>, as usual, and it has been tested on Windows and Linux.</p><form
action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input
type="hidden" name="cmd" value="_xclick" /> <input
type="hidden" name="business" value="matthieu.brucher@gmail.com" /><input
type="hidden" name="item_name" value="Buy Me a Coffee!" /><input
type="hidden" name="currency_code" value="USD" /><span
style="font-size:10.0pt"><strong> Buy Me a Coffee!</strong></span><br
/><br
/><select
id="amount" name="amount" class=""><option
value="3">Capuccino - 3$</option><option
value="6">Frappuccino - 6$</option><option
value="10">Hot Chocolate - 10$</option><option
value="20">Expensive Coffee - 20$</option><option
value="50">Alien Coffee - 50$</option></select><br
/><br
/><strong>Other Amount:</strong><br
/><br
/><input
type="text" name="amount" size="10" title="Other donate" value="" /><br
/><br
/><strong> Your Email Address :</strong><input
type="hidden" name="on0" value="Reference" /><br
/><br
/><input
type="text" name="os0" maxlength="60" /> <br
/><br
/> <input
type="hidden" name="no_shipping" value="2" /> <input
type="hidden" name="no_note" value="1" /> <input
type="hidden" name="mrb" value="3FWGC6LFTMTUG" /> <input
type="hidden" name="bn" value="IC_Sample" /> <input
type="hidden" name="return" value="http://matt.eifelle.com" /><input
type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but11.gif" name="submit" alt="Make payments with payPal - it's fast, free and secure!" /></form> 
<p><a href="http://feedads.g.doubleclick.net/~a/ePfwXTPy3Ck4cwHGKNgUxVRFGGE/0/da"><img src="http://feedads.g.doubleclick.net/~a/ePfwXTPy3Ck4cwHGKNgUxVRFGGE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ePfwXTPy3Ck4cwHGKNgUxVRFGGE/1/da"><img src="http://feedads.g.doubleclick.net/~a/ePfwXTPy3Ck4cwHGKNgUxVRFGGE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/v7Xfdp2J1Ow" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2011/10/11/qtmosaic-0-1-easy-photomosaics/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2011/10/11/qtmosaic-0-1-easy-photomosaics/</feedburner:origLink></item> <item><title>QtVST, Qt and QtSimpleEQ</title><link>http://feedproxy.google.com/~r/eifelle/CPPV/~3/g64I8yxz9PQ/</link> <comments>http://matt.eifelle.com/2011/10/04/qtvst-qt-and-qtsimpleeq/#comments</comments> <pubDate>Tue, 04 Oct 2011 10:24:07 +0000</pubDate> <dc:creator>Matt</dc:creator> <category><![CDATA[C++]]></category> <category><![CDATA[Digital filters]]></category> <category><![CDATA[Music]]></category> <category><![CDATA[digital]]></category> <category><![CDATA[Digital Audio Workstation]]></category> <category><![CDATA[pyVST]]></category> <category><![CDATA[QtSimpleEQ]]></category> <category><![CDATA[QtVST]]></category> <category><![CDATA[VST]]></category><guid isPermaLink="false">http://matt.eifelle.com/?p=1956</guid> <description><![CDATA[Today, I wanted to announce my new plugin, a 4-bands EQ, but when I started a test with pyVST, I encountered strange things: The first is my fault, as the code of the EQ disappeared from my Git repository, so I have to code it again. Mainly it is just plugin the correct actions between [...]]]></description> <content:encoded><![CDATA[<p>Today, I wanted to announce my new plugin, a 4-bands EQ, but when I started a test with <a
href="http://matt.eifelle.com/tag/pyvst/" title="pyVST">pyVST</a>, I encountered strange things:</p><ul><li>The first is my fault, as the code of the EQ disappeared from my Git repository, so I have to code it again. Mainly it is just plugin the correct actions between the filters and the GUI.</li><li>The second is an error at the end of the test. I&#8217;ve updated my Qt version from 4.7.1 to 4.7.4, and since this update (or perhaps since I updated to Python 2.7 for pyVST), I found that even a recompiled <a
href="http://matt.eifelle.com/tag/qtsimpleoverdrive/" title="QtSimpleOverdrive">QtSimpleOverdrive</a> has the same behavior. It did not when I released it. It seems that Qt is complaining about events that are bounced between different threads, but the actual error message is more cryptic, and impossible to debug the application at this point.</li></ul><p>I hope to fix these mistakes this month, I really hope I can get QtVST to work again.</p><form
action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input
type="hidden" name="cmd" value="_xclick" /> <input
type="hidden" name="business" value="matthieu.brucher@gmail.com" /><input
type="hidden" name="item_name" value="Buy Me a Coffee!" /><input
type="hidden" name="currency_code" value="USD" /><span
style="font-size:10.0pt"><strong> Buy Me a Coffee!</strong></span><br
/><br
/><select
id="amount" name="amount" class=""><option
value="3">Capuccino - 3$</option><option
value="6">Frappuccino - 6$</option><option
value="10">Hot Chocolate - 10$</option><option
value="20">Expensive Coffee - 20$</option><option
value="50">Alien Coffee - 50$</option></select><br
/><br
/><strong>Other Amount:</strong><br
/><br
/><input
type="text" name="amount" size="10" title="Other donate" value="" /><br
/><br
/><strong> Your Email Address :</strong><input
type="hidden" name="on0" value="Reference" /><br
/><br
/><input
type="text" name="os0" maxlength="60" /> <br
/><br
/> <input
type="hidden" name="no_shipping" value="2" /> <input
type="hidden" name="no_note" value="1" /> <input
type="hidden" name="mrb" value="3FWGC6LFTMTUG" /> <input
type="hidden" name="bn" value="IC_Sample" /> <input
type="hidden" name="return" value="http://matt.eifelle.com" /><input
type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but11.gif" name="submit" alt="Make payments with payPal - it's fast, free and secure!" /></form> 
<p><a href="http://feedads.g.doubleclick.net/~a/-Jrg71PR6DzgyMVUqyTXT9wIv1k/0/da"><img src="http://feedads.g.doubleclick.net/~a/-Jrg71PR6DzgyMVUqyTXT9wIv1k/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-Jrg71PR6DzgyMVUqyTXT9wIv1k/1/da"><img src="http://feedads.g.doubleclick.net/~a/-Jrg71PR6DzgyMVUqyTXT9wIv1k/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/eifelle/CPPV/~4/g64I8yxz9PQ" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://matt.eifelle.com/2011/10/04/qtvst-qt-and-qtsimpleeq/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://matt.eifelle.com/2011/10/04/qtvst-qt-and-qtsimpleeq/</feedburner:origLink></item> </channel> </rss><!-- Served from: matt.eifelle.com @ 2012-04-26 06:12:43 by W3 Total Cache -->

