<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>ContentFull &#187; Programming</title>
	<atom:link href="http://www.contentfull.com/category/andre-2009/programming-current/feed" rel="self" type="application/rss+xml" />
	<link>http://www.contentfull.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 02 Sep 2011 14:13:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Transitioning to Python from Matlab â€“ Day 2</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/transitioning-to-python-from-matlab-%e2%80%93-day-2</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/transitioning-to-python-from-matlab-%e2%80%93-day-2#comments</comments>
		<pubDate>Thu, 20 May 2010 21:35:09 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Andre (2009-?)]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=527</guid>
		<description><![CDATA[A great limit to Matlab the very high price for both individual licenses and distributed/parallel computing toolbox. To this python already has several good alternatives. That said, the documentation and capabilities of these options is highly convoluted. Parallel Python Parallel Python (PP) is a great start in getting code to run in several computers. It [...]]]></description>
			<content:encoded><![CDATA[<p>A great limit to Matlab the very high price for both individual licenses and distributed/parallel computing toolbox. To this python already has several good alternatives. That said, the documentation and capabilities of these options is highly convoluted. </p>

<p><strong>Parallel Python</strong></p>

<p>Parallel Python (<a href="http://www.parallelpython.com/">PP</a>) is a great start in getting code to run in several computers. It works on a versatile client/server model, where generic servers must be launched to do the actual computations and the user must right a client which interacts with the several servers. The nice thing about this module is how fast you are up and running. Basically you pass arguments, and a function pointer to PP and it handles the distribution and gathering of results. Load balancing, passing extra data, and anything that can&#8217;t be done with a single function will be outside the realm of this module. </p>

<p><strong><span class="caps">MPI4P</span>y</strong></p>

<p><a href="http://en.wikipedia.org/wiki/Message_Passing_Interface"><span class="caps">MPI</span></a> is something that I never used, the documentation is sparing, and overall very mysterious. That said, the potential is great. There are several <span class="caps">MPI </span>implementations for Python, and I picked this one because it seemed the easiest to install and start using. Essentially when using <a href="http://mpi4py.scipy.org/"><span class="caps">MPI4P</span>y</a> your script is called in parallel on multiple <span class="caps">CPU </span>cores and/or computers and the <span class="caps">MPI </span>element makes sure that all the instances talk to each other. What is cool is that variables in your program are both local to an instance, but at the same time can be shared seamlessly with your other instances. The documentation is very good, but the actual <span class="caps">MPI </span>standards are very odd and worth learning more about particularly because it can be used with computer clusters. </p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/transitioning-to-python-from-matlab-%e2%80%93-day-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transitioning to Python from Matlab &#8211; Day 1</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/transitioning-to-python-from-matlab-day-1</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/transitioning-to-python-from-matlab-day-1#comments</comments>
		<pubDate>Fri, 14 May 2010 14:14:56 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Andre (2009-?)]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=508</guid>
		<description><![CDATA[People are fast to point out that transitioning from Matlab to Python is easy with NumPy and SciPy. That is, however, far from the case. Having become fed up with the arcane Matlab programming language I figured that the summer would be a great time to move my work to Python. The setup My main [...]]]></description>
			<content:encoded><![CDATA[<p>People are fast to point out that transitioning from Matlab to Python is easy with NumPy and SciPy. That is, however, far from the case. Having become fed up with the arcane Matlab programming language I figured that the summer would be a great time to move my work to Python.</p>

<p><strong>The setup</strong></p>

<p>My main computer runs Snow Leopard and I have become a stickler to running all my applications in 64bit. Not for performance gains (although this does enable the use of OpenCL which &Acirc;&nbsp;is 64bit only), but for consistency. Actual computations are left for my schools computer cluster which uses some linux distribution and are also 64bit machines.</p>


<ul>
<li>Python-2.6</li>
<li>Matlab 2010a on the mac (64bit) </li>
<li>Matlab 7.6 on linux (32+64bit)</li>
</ul>



<p><strong>Great, but what about my old code</strong></p>

<p>The first hurdle to the transition is making all that old Matlab code work. Once in 1999 someone discovered this problem and wrote <a href="http://claymore.engineer.gvsu.edu/~steriana/Python/pymat.html">PyMat</a> which interfaced Python and Matlab by using Matlab&#8217;s shared libraries. While perhaps it still works, the code felt very antiquated. It has been over 10 years since the last update! So I wrote a new version from scratch which was a delight for learning more of the internals of Python.</p>

<p>The nice thing about the module I wrote is that is allows for all matlab functions to be called directly so that:</p>



<pre><code>X = matlab.rand(numpy.array([100 100]), 1)</code></pre>



<p>The following snippet calls Matlab&#8217;s native <code>rand</code> function and the result is stored in a numpy array in X. The 1 at the end of the snippet tells the python interface to expect a single return value. In the future this may not be required. </p>

<p>A difficulty in doing this interface is that each Matlab version has slightly different set of function names. This makes the interface have to be slightly tweaked for each version. </p>

<p><strong>Functions that don&#8217;t exist</strong></p>

<p>It surprises to see how many helpful functions Matlab has. Particularly saving and opening images and other assorted data types. Numpy while very good doesn&#8217;t have a easy to use save routine nor can Numpy natively open arbitrary images. While naturally this is because these features are not part of the project&#8217;s mission statement, it does mean more work for the valiant researcher.</p>

<p>Quickly you will see that a handful of functions must be written to do these simple tasks, and while there are plenty of stable modules including <a href="http://www.pythonware.com/products/pil/"><span class="caps">PIL</span></a> and <a href="http://docs.python.org/library/pickle.html">Pickle</a> for opening images and saving data (respectively), it does mean more steps between you and your work. </p>

<p><strong><span class="caps">IDE</span></strong> </p>

<p>Finally by the end of the day you will begin to miss the ugly, Java-esc, Windows-esc and <span class="caps">X11</span>-est <span class="caps">IDE </span>that Matlab has featured for probably over a decade. Being able to inspect variables, even see the variable names being used, and the ugly but useful debug features is badly missed as well. </p>

<p><strong>By the end</strong></p>

<p>By the end you realize why Matlab exists and is widely used. However, unless someone ventures out and fixes the wholes that exist with Python as a Matlab alternative, people will never have an alternative. Unifying the tools that exist for Python and adding interoperability with Matlab are the first steps to making a really good alternative to the most widely used piece of software in the sciences. </p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/transitioning-to-python-from-matlab-day-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenCV 2.0 for OSX 10.6</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/opencv-2-0-for-osx-10-6</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/opencv-2-0-for-osx-10-6#comments</comments>
		<pubDate>Mon, 28 Dec 2009 16:57:42 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=506</guid>
		<description><![CDATA[There are plenty of people lost after discovering that OpenCV no longer fully functions with OSX 10.6. I have been working on making changes to update OpenCV 2.0 to work with 10.6 at 32/64 bit. This meant deprecating the use of Carbon (who uses that anymore anyway) and updating the Quicktime implementation which now must [...]]]></description>
			<content:encoded><![CDATA[<p>There are plenty of people lost after discovering that OpenCV no longer fully functions with <span class="caps">OSX</span> 10.6. I have been working on making changes to update OpenCV 2.0 to work with 10.6 at 32/64 bit. This meant deprecating the use of Carbon (who uses that anymore anyway) and updating the Quicktime implementation which now must use <span class="caps">QTK</span>it framework. Nick Butko was nice enough to have already implemented the Quicktime features, so it was a matter of just merging all the changes.</p>

<p>A fork of OpenCV 2.0 can be found at https://code.google.com/p/opencv-cocoa/ which has both the Cocoa and Quicktime updates. This is completely tested so use it with caution. Any help and suggestions are greatly appreciated.</p>

<p>Because Cocoa functions strictly inside a <span class="caps">MVC </span>framework there is a small change that you must make at initializing HighGUI that is found <a href="https://code.google.com/p/opencv-cocoa/wiki/UsingCocoaWithOpenCV" target="_blank">here</a>. It boils down to the fact that your code cannot run in the main thread, because Cocoa needs to run there. So to update any existing projects you must remove your code from the main function and place it in an auxiliary function which is called by cvInitSystem.</p>

<p>I have not yet made any benchmarks, so there is a chance that using Cocoa and <span class="caps">QTK</span>it at either 32 or 64 bit is not imperative for improving performance of your code. The main purpose is to allow the usage of other libraries in conjunction with OpenCV which already work at 64bit and may depend on Cocoa.</p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/opencv-2-0-for-osx-10-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The reason Matlab persists</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/the-reason-matlab-persists</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/the-reason-matlab-persists#comments</comments>
		<pubDate>Sun, 27 Sep 2009 21:39:31 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Andre (2009-?)]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=500</guid>
		<description><![CDATA[While Matlab may not be in the cutting edge of computing, it does have one great qualitiy: amazing service. While I still have major gripes towards using it due to its slowness, antiquated programming language, and lack of Mac support, they did an honest effort in fixing a bug I filed. Within 24 hours someone [...]]]></description>
			<content:encoded><![CDATA[<p>While Matlab may not be in the cutting edge of computing, it does have one great qualitiy: amazing service. While I still have major gripes towards using it due to its slowness, antiquated programming language, and lack of Mac support, they did an honest effort in fixing a bug I filed. Within 24 hours someone contacted me asking for more information about the bug, and a week later I was told files were available that would fix the issue. While the fix didn&#8217;t fix much, and it was not in an easy to use patch, they did try. Never would an open source solution be so helpful.</p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/the-reason-matlab-persists/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Image warping with OpenCL</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/image-warping-with-opencl</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/image-warping-with-opencl#comments</comments>
		<pubDate>Tue, 08 Sep 2009 21:56:06 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=493</guid>
		<description><![CDATA[Finally image warping is no longer painful. In previous projects warping images was the slowest component in the algorithm. In face tracking for instance a good 1/3 to 2/3 of the time was just warping them. OpenCL finally changes all of this. With just a hundred lines you can warp +12,000 images (each 48&#215;48) in [...]]]></description>
			<content:encoded><![CDATA[<p>Finally image warping is no longer painful. In previous projects warping images was the slowest component in the algorithm. In face tracking for instance a good 1/3 to 2/3 of the time was just warping them. OpenCL finally changes all of this. With just a hundred lines you can warp +12,000 images (each 48&#215;48) in under 1 second! It could take up to a 1 sec to do 300 samples without <span class="caps">GPU </span>processing.</p>

<p>It is extremely easy to write OpenCL kernels (although there is room for improvement) and <a href="http://www.contentfull.com/?attachment_id=497">here</a> is the warping kernel I have written.</p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/image-warping-with-opencl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matlab and Snow Leopard Compatability</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/matlab-and-snow-leopard</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/matlab-and-snow-leopard#comments</comments>
		<pubDate>Fri, 28 Aug 2009 22:55:14 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=482</guid>
		<description><![CDATA[Matlab has been trying to catchup OSX for some time now. First releasing a rather bad version of Matlab for the Intel processor, and subsequently releasing a 64bit version. Both showed signs of commitment, however, today after installing Snow Leopard I was slightly annoyed that some of the functionality had become broken. mmreader, which I [...]]]></description>
			<content:encoded><![CDATA[<p>Matlab has been trying to catchup <span class="caps">OSX </span>for some time now. First releasing a rather bad version of Matlab for the Intel processor, and subsequently releasing a 64bit version. Both showed signs of commitment, however, today after installing Snow Leopard I was slightly annoyed that some of the functionality had become broken.</p>

<p>mmreader, which I depend on for reading avi movie files no longer works. Images seem to be garbled by some sort of offset and data conversion. I suspect this stems from some 32 to 64 bit conversion that Matlab is not aware of. Anyway, so now I can&#8217;t read movies files until they fix Matlab which god knows when it will be.</p>

<p>Update for those thinking of installing Snow Leopard: 2008a, 2009a, 2009b (32 and 64 bit) all work fine. Aside from some bugs that must exist like the one above in specific packages, the general Matlab environment is fully functional.</p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/matlab-and-snow-leopard/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The great Matlab to Python Bridge</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/the-great-matlab-to-python-bridge</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/the-great-matlab-to-python-bridge#comments</comments>
		<pubDate>Sun, 23 Aug 2009 19:16:45 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=479</guid>
		<description><![CDATA[Currently Matlab is undergoing some major changes. While it slept for the past 5 years other programming languages have stepped up to take its place. Python, C++, Java amongst others have become as easy to use and as efficient as Matlab. The current&#194;&#160; problem, however, is that not all projects and libraries exist in all [...]]]></description>
			<content:encoded><![CDATA[<p>Currently Matlab is undergoing some major changes. While it slept for the past 5 years other programming languages have stepped up to take its place. Python, C++, Java amongst others have become as easy to use and as efficient as Matlab. The current&Acirc;&nbsp; problem, however, is that not all projects and libraries exist in all these languages. So what happens when you have a great program in Matlab and a great program in Python and you want to tie the two together? Here is my experience this weekend:</p>

<p>Day 1: This will be great. I&#8217;ll use the Python C <span class="caps">API </span>to call python from Matlab. I&#8217;ll save the Python state as a Matlab variable and I can always start up my Python session where I left off.</p>

<p>Day 2: Alright.. maybe not. But let&#8217;s just try calling Python from C, I just want to make it work, not have it running efficiently.</p>

<p>Day 3: Ok, clearly Python has a crappy <span class="caps">API.</span> Moving to the client/server socket communication approach. Phew.. must it be this hard?</p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/the-great-matlab-to-python-bridge/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matlab and movies</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/matlab-and-movies</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/matlab-and-movies#comments</comments>
		<pubDate>Mon, 10 Aug 2009 21:09:48 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=470</guid>
		<description><![CDATA[Animations of how 2D matrixes change over time can sometimes be helpful in detecting trends. Bellow is a small bit of code, very trivial, that converts a set of 2D matrixes to a avi movie. % Images = set of 2D matrixes that we want to convert to a movie (values range from 0-255) % [...]]]></description>
			<content:encoded><![CDATA[<p>Animations of how 2D matrixes change over time can sometimes be helpful in detecting trends. Bellow is a small bit of code, very trivial, that converts a set of 2D matrixes to a avi movie.</p>

<pre><code>% Images = set of 2D matrixes that we want to convert to a movie (values range from 0-255)
% Frames = Pseudo RGB version Frames
% Mov = Matlab structure that holds the movie
Width = 48; Height = 48;
NumberOfFrames = size(Images, 2);
Frames = zeros([Width, Height, 3, NumberOfFrames]);
for i=1:NumberOfFrames,
Frames(:,:,1,i) = Images{i};
Frames(:,:,2,i) = Images{i};
Frames(:,:,3,i) = Images{i};
end
Mov = immovie(Frames);
movie2avi(Mov, 'movie.avi');</code></pre>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/matlab-and-movies/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyCV on OSX</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/pycv-on-osx</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/pycv-on-osx#comments</comments>
		<pubDate>Wed, 17 Jun 2009 14:51:29 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Andre (2009-?)]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=461</guid>
		<description><![CDATA[PyCV is not supported on the Mac, and for that it is no surprise that it does not successfully compile. (These are hacks to make it work, not elegant solutions that are endorsed by the people who make PyCV) There were two major hurdles to making it work. First is error that happens in the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www3.ntu.edu.sg/home5/pham0004/pycv/">PyCV</a> is not supported on the Mac, and for that it is no surprise that it does not successfully compile. (These are hacks to make it work, not elegant solutions that are endorsed by the people who make PyCV) There were two major hurdles to making it work.</p>

<p>First is error that happens in the system_info.py which reads something like:</p>


<pre><code>File &quot;/sw/lib/python2.6/site-packages/numpy/distutils/cpuinfo.py&quot;
line 79, in __getattr__
raise AttributeError,name
AttributeError: _has_sse2</code></pre>


<p>To fix this you must edit the file system_info.py lines 107-114 to becoming:</p>


<pre><code>#if cpu._has_sse2() and (dcomp == 'mingw32' or dcomp == 'gcc'):
extra_args = ['-arch x86_64', '-O3', '-msse2', '-mfpmath=sse', '-malign-double']
# &Acirc;&nbsp; &Acirc;&nbsp;if get_gcc_version() &amp;gt;= '4.2':
extra_args.append('-mtune=generic')
# &Acirc;&nbsp; &Acirc;&nbsp;else:
# &Acirc;&nbsp; &Acirc;&nbsp; &Acirc;&nbsp; &Acirc;&nbsp;extra_args.append('-march=pentium4')
# &Acirc;&nbsp; &Acirc;&nbsp; &Acirc;&nbsp; &Acirc;&nbsp;extra_args.append('-mtune=pentium4')
#info['extra_compiler_args'].extend(extra_args)}}}</code></pre>


<p>This fixes the above error and also fixes an assembly error that happens later when compiling Blas bindings. The error:</p>


<pre><code>error: can't find a register in class &acirc;€˜GENERAL_REGS&acirc;€™ while reloading &acirc;€˜asm&acirc;€™</code></pre>


<p>The error is fixed by specifying the architecture of the computer, in this case x86_64.</p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/pycv-on-osx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matlab 2009a</title>
		<link>http://www.contentfull.com/andre-2009/programming-current/matlab-2009a</link>
		<comments>http://www.contentfull.com/andre-2009/programming-current/matlab-2009a#comments</comments>
		<pubDate>Fri, 29 May 2009 23:52:28 +0000</pubDate>
		<dc:creator>AndrÃ©</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.contentfull.com/?p=445</guid>
		<description><![CDATA[While Matlab,&#194;&#160;regardless&#194;&#160;of version, may be very slow on the Mac, the new version (which claims to be more Mac friendly) indeed has a small, but&#194;&#160;noticeable&#194;&#160;increase in performance. Note: These values were generated on different processors and no attempt was made to see which one was ultimately faster. The idea was to see how, independently, each [...]]]></description>
			<content:encoded><![CDATA[<p>While Matlab,&Acirc;&nbsp;regardless&Acirc;&nbsp;of version, may be very slow on the Mac, the new version (which claims to be more Mac friendly) indeed has a small, but&Acirc;&nbsp;noticeable&Acirc;&nbsp;increase in performance.</p>

<p><em>Note: These values were generated on different processors and no attempt was made to see which one was ultimately faster. The idea was to see how, independently, each environment performed under complex matrix operations. All values are in seconds and&Acirc;&nbsp;averaged&Acirc;&nbsp;over 100 iterations.</em></p>

<p><strong>Addition</strong></p>

<table><tr><th>MxM</th><th>Matlab 2009a (Mac)</th><th>Matlab 2008b (Mac)</th><th>Matlab 2008b (Linux)</th></tr><tr><td>121</td><td>.05</td><td>.15</td><td>.015</td></tr><tr><td>961</td><td>.37</td><td>2.21</td><td>.22</td></tr></table>

<p><strong>Multiplication</strong></p>

<table><tr><th>MxM</th><th>Matlab 2009a (Mac)</th><th>Matlab 2008b (Mac)</th><th>Matlab 2008b (Linux)</th></tr><tr><td>121</td><td>.06</td><td>.47</td><td>.061</td></tr><tr><td>961</td><td>2.14</td><td>12.19</td><td>2.49</td></tr></table>

<p><strong>QR</strong></p>

<table><tr><th>MxM</th><th>Matlab 2009a (Mac)</th><th>Matlab 2008b (Mac)</th><th>Matlab 2008b (Linux)</th></tr><tr><td>121</td><td>.12</td><td>.57</td><td>.07</td></tr><tr><td>961</td><td>2.53</td><td>12.19</td><td>2.49</td></tr></table>

<p>As you can see, the Mac version is finally starting to get numbers closer to that of Linux and Windows. With a better <span class="caps">GUI </span>(Cocoa based) I will finally stop writing C++ code for good.</p>]]></content:encoded>
			<wfw:commentRss>http://www.contentfull.com/andre-2009/programming-current/matlab-2009a/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

