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

<channel>
	<title>Planet Python/SoC - 2009 edition</title>
	<link>http://socghop.appspot.com/org/home/google/gsoc2009/python</link>
	<language>en</language>
	<description>Planet Python/SoC - 2009 edition - http://socghop.appspot.com/org/home/google/gsoc2009/python</description>

<item>
	<title>James Pruitt: Core Conversion Complete</title>
	<guid>tag:blogger.com,1999:blog-724252239441763316.post-3473978725740421690</guid>
	<link>http://subdev.blogspot.com/2009/07/core-conversion-complete.html</link>
	<description>My file wrapper and Josiah's code now work in Python 3.1 and the changes have been committed to the Google Code project. The next thing to tackle is converting Mark Hammond's code from C++ to C and integrating it into the _subprocess.c file.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/724252239441763316-3473978725740421690?l=subdev.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 02 Jul 2009 16:58:00 +0000</pubDate>
	<author>noreply@blogger.com (Eric)</author>
</item>
<item>
	<title>Skipper Seabold: Generalized Linear Models</title>
	<guid>tag:blogger.com,1999:blog-128274497687662608.post-3426530722595804443</guid>
	<link>http://scipystats.blogspot.com/2009/07/generalized-linear-models_02.html</link>
	<description>As I have mentioned, I have spent the last few weeks both in stats books, finding my way around &lt;a href=&quot;http://http://www.r-project.org/&quot;&gt;R&lt;/a&gt;, and cleaning up and refactoring the code for the generalized linear models in the NiPy models code.  I have recently hit a wall in this code, so I am trying to clear out some unposted blog drafts.  I intended for this post to introduce the generalized linear models approach to estimation; however the full post will have to wait.  For now, I will give an introduction to the theory and then explain where I am with the code.  &lt;br /&gt;&lt;br /&gt;Generalized linear models was a topic that was completely foreign to me a few weeks ago, but after a little (okay a lot of) reading the approach seems almost natural.  I have found the following references useful:&lt;br /&gt;&lt;ul class=&quot;disc&quot;&gt;&lt;br /&gt;&lt;li&gt;Jeff Gill's &lt;em&gt;Generalized Linear Models: A Unified Approach&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;James Hardin and Joseph Hilbe's &lt;em&gt;Generalized Linear Models and Extensions&lt;/em&gt;, 2nd edition.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;P. McCullagh and John Nelder's &lt;em&gt;Generalized Linear Models&lt;/em&gt;, 2nd edition.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The basic point of the generalized linear model is to extend the approach taken in classical linear regression to models that have more complex outcomes but ultimately share the linearity property.  In this respect, GLM subsumes classical linear regression, probit and logit analysis, loglinear and multinomial response models, and some models that deal with survival data to name a few.&lt;br /&gt;&lt;br /&gt;In my experience, I have found that econometrics is taught in a compartmentalized manner.  This makes sense to a certain extent, as different estimators are tailored to particular problems and data.  GLM on the other hand allows the use of a common a technique for obtaining parameter estimates so that it can be studied as a single technique rather than as a collection of distinct approaches.&lt;br /&gt;&lt;br /&gt;If interested in my ramblings, you can find a draft of my notes as an introduction to GLM &lt;a href=&quot;http://eagle1.american.edu/~js2796a/GLMTheoryFirstSection.pdf&quot;&gt;here&lt;/a&gt;, as Blogger does not support LaTeX...  Please note that this is a preliminary and incomplete draft (corrections and clarifications are very welcome).  One thing it could definitely use is some clarification by example.  However, as I noted, I have run into a bit of a wall trying to extend the binomial family to accept a vector of proportional data, and this is my intended example to walk through the theory and algorithm, so... a subsequent post will have to lay this out once I've got it sorted myself.&lt;br /&gt;&lt;br /&gt;Generally speaking, there are two basic algorithms for GLM estimation: one is a maximum likelihood optimization based on Newton's method the other is commonly refered to as iteratively (re)weighted least squares (IRLS or IWLS).  Our implementation now only covers IRLS.  As will be shown, the algorithm itself is pretty simple.  It boils down to regressing the transformed (and updated) outcome variable on the untransformed design matrix weighted by the variance of the transformed observations.  This is done until we have convergence of the deviance function (twice the log-likelihood ratio of the current and previous estimates).  The problem that I am running into with updating the binomial family to accept proportional data (ie., a vector of pairs (successes, total trials) instead of a vector of 1s and 0s for success or failure) is more mathematical than computational.  I have either calculated the variance (and therefore the weights) incorrectly, or I am updating the outcome variable incorrectly.  Of course, there's always the remote possibility that my data is not well behaved, but I don't think this is the case here.&lt;br /&gt;&lt;br /&gt;More to come...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/128274497687662608-3426530722595804443?l=scipystats.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 02 Jul 2009 13:31:08 +0000</pubDate>
	<author>noreply@blogger.com (jseabold)</author>
</item>
<item>
	<title>Skipper Seabold: Project Status</title>
	<guid>tag:blogger.com,1999:blog-128274497687662608.post-6201380269243751131</guid>
	<link>http://scipystats.blogspot.com/2009/07/project-status.html</link>
	<description>I have been making slow but steady progress on the NiPy models code.  Right now for the midterm review, we have been focusing on design issues including the user interface and refactoring, test coverage/bug fixing, and some extensions for postestimation statistics.  Other than this, I have spent the last month or so with anywhere from ten to fifteen stats, econometrics, or numerical linear algebra and optimization texts open on my desk.&lt;br /&gt;&lt;br /&gt;The main estimators currently included in the code are generalized least squares, ordinary least squares, weighted least squares, autoregressive AR(p), generalized linear models (with several available distribution families and corresponding link functions), robust linear models, general additive models, and mixed effects models.  The test coverage is starting to look pretty good, then there is just squashing the few remaining bugs and improving the postestimation statistics.&lt;br /&gt;&lt;br /&gt;Some enhancements have also been made to the code.  I have started to include some public domain or appropriately copyrighted datasets for testing purposes that could also be useful for examples and tutorials, so that every usage example doesn't have to start with generating your own random data.  I have followed pretty closely to the datasets proposal in the &lt;a href=&quot;http://www.scipy.org/scipy/scikits/browser/trunk/learn/scikits/learn/datasets&quot;&gt;Scikits Learn&lt;/a&gt; package.  &lt;br /&gt;&lt;br /&gt;We have also decided to break from the formula framework that is used in NiPy.  It was in flux (being changed to take advantage of &lt;a href=&quot;http://code.google.com/p/sympy/&quot;&gt;SymPy&lt;/a&gt; the last I heard) and is intended to be somewhat similar to the formula framework in R.  In its place for now, I have written some convenience functions to append a constant to a design matrix or to handle categorical variables for estimation.  For the moment, a typical model/estimator is used as&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [1]: from models.regression import OLS&lt;br /&gt;&lt;br /&gt;In [2]: from models.datasets.longley.data import load&lt;br /&gt;&lt;br /&gt;In [3]: from models.functions import add_constant&lt;br /&gt;&lt;br /&gt;In [4]: data = load()&lt;br /&gt;&lt;br /&gt;In [5]: data.exog = add_constant(data.exog)&lt;br /&gt;&lt;br /&gt;In [6]: model = OLS(data.endog, data.exog)&lt;br /&gt;&lt;br /&gt;In [7]: results = model.fit()&lt;br /&gt;&lt;br /&gt;In [8]: results.params&lt;br /&gt;Out[8]:&lt;br /&gt;array([  1.50618723e+01,  -3.58191793e-02,  -2.02022980e+00,&lt;br /&gt;        -1.03322687e+00,  -5.11041057e-02,   1.82915146e+03,&lt;br /&gt;        -3.48225863e+06])&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Barring any unforeseen difficulties, the models code &lt;em&gt;should&lt;/em&gt; be available as a standalone package shortly after the midterm evaluation rapidly approaching in ten days.  The second half of the summer will then be focused on optimizing the code, finalizing design issues, extending the models, and writing good documentation and tutorials so that the code can be included in SciPy!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/128274497687662608-6201380269243751131?l=scipystats.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 02 Jul 2009 11:45:23 +0000</pubDate>
	<author>noreply@blogger.com (jseabold)</author>
</item>
<item>
	<title>Priit Laes: Basic PDE separation of variables implemented</title>
	<guid>tag:plaes.org,2009-07-02:,blog/entry;2009/7/2/basic-pde-separation-of-variables-implemented</guid>
	<link>http://plaes.org/blog/2009/7/2/basic-pde-separation-of-variables-implemented</link>
	<description>&lt;p&gt;For the most of the past week, I have been working on variable separation of PDE's and yesterday I sent my merge request.
   Currently two mostly-used strategies - &lt;a href=&quot;http://en.wikipedia.org/wiki/Separation_of_variables&quot;&gt;additive and multiplicative separation&lt;/a&gt; are implemented and &lt;a href=&quot;http://plaes.org/files/2009-Q3/sympy_laplace_equation.png&quot;&gt;tested&lt;/a&gt; on simpler equations like &lt;a href=&quot;http://en.wikipedia.org/wiki/Laplace's_equation&quot;&gt;Laplace's&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;So, what's next? :)
&lt;/p&gt;
&lt;p&gt;I am currently prototyping a &lt;code&gt;pdesolve()&lt;/code&gt; which can handle first-order equations (and also any hyperbolic PDEs) using characteristic methods. Once this is finished, I can start adding the variable separation into &lt;code&gt;pdesolve()&lt;/code&gt; and after this has been done, I can move on to implment support for boundary and initial conditions.
&lt;/p&gt;</description>
	<pubDate>Thu, 02 Jul 2009 03:53:45 +0000</pubDate>
</item>
<item>
	<title>Danilo Freitas: new and del operators working!</title>
	<guid>tag:blogger.com,1999:blog-7711855911946874836.post-9152919726061513099</guid>
	<link>http://daniloaf-ufcg.blogspot.com/2009/07/new-and-del-operators-working.html</link>
	<description>Now we can instanciate C++ objects dynamically on Cython.&lt;br /&gt;thins like&lt;br /&gt;cdef Foo *aFoo = new Foo()&lt;br /&gt;del aFoo&lt;br /&gt;are allowed.&lt;br /&gt;We're using Python Syntax for it, so, we define the contructor with &quot;__init__&quot; special method.&lt;br /&gt;Now, the next step is to work with function overloading. We already have the logic to implement it. So, what I need now is to work :).&lt;br /&gt;But, before it, I shall write some tests and some documentation, and my branch of GSoC will be merged to the main branch of Cython, and so, let users do what is needed.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7711855911946874836-9152919726061513099?l=daniloaf-ufcg.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 02 Jul 2009 01:07:17 +0000</pubDate>
	<author>dsurviver@gmail.com (Danilo Freitas)</author>
</item>
<item>
	<title>Skipper Seabold: Econometrics with Python</title>
	<guid>tag:blogger.com,1999:blog-128274497687662608.post-8254848401684736485</guid>
	<link>http://scipystats.blogspot.com/2009/07/econometrics-with-python.html</link>
	<description>&lt;blockquote cite=&quot;http://uninsubria.academia.edu/documents/0023/6072/Choirat-Seri-JAE-2009.pdf&quot;&gt;There is as yet no equivalent of R in applied econometrics. Therefore, the econometric community can still decide to go along the Python path.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That is Drs. Christine Choirat and Raffello Seri writing in the April issue of the &lt;em&gt;Journal of Applied Econometrics&lt;/em&gt;.  They have been kind enough to provide me with an &lt;a href=&quot;http://uninsubria.academia.edu/documents/0023/6072/Choirat-Seri-JAE-2009.pdf&quot;&gt;ungated copy&lt;/a&gt; of their review, &quot;Econometrics with Python.&quot;  Mentioning the, quite frankly, redundant general programming functions and tools that had to be implemented for &lt;a href=&quot;http://www.r-project.org/&quot;&gt;R&lt;/a&gt;, the authors make a nice case for Python as the programming language of choice for applied econometrics.  The article provides a quick overview of some of the advantages of using Python and its many built-in libraries, extensions, and tools, gives some speed comparisons, and also mentions a few of the many tools out there in Python community for econometrics including &lt;a href=&quot;http://rpy.sourceforge.net/&quot;&gt;RPy&lt;/a&gt; (RPy2 is now available), and of course NumPy and SciPy.  Having spent the last week or more trying to master the basic syntax and usage of R, I very much sympathize with this position.  The one complaint I hear most often from my fellow students is that Python is not an industry standard.  I hope this can change and is changing, because it's much more of a pleasure to work with Python than the alternatives and that makes for increased productivity.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/128274497687662608-8254848401684736485?l=scipystats.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 01 Jul 2009 22:03:41 +0000</pubDate>
	<author>noreply@blogger.com (jseabold)</author>
</item>
<item>
	<title>Danilo Freitas: Some questions about syntax</title>
	<guid>tag:blogger.com,1999:blog-7711855911946874836.post-5985321404354071389</guid>
	<link>http://daniloaf-ufcg.blogspot.com/2009/07/some-questions-about-syntax.html</link>
	<description>We are deciding what syntax to use on operators overloading and constructor.&lt;br /&gt;We have C++ and Python syntax, and we have big differences between them.&lt;br /&gt;A thread was created on cython-dev list for voting and commenting the choose of the syntax.&lt;br /&gt;On C++ syntax, the constructor is a method with no return type (it's not void!) and the operators are methods with the keyword &quot;operator&quot; followed by the operator to overload (e. g. &quot;bool operator==(int value);&quot;).&lt;br /&gt;On Python, we have the special method __init__ for constructor and other special methods for the operators (__add__, __str__, etc.)&lt;br /&gt;&lt;br /&gt;For more information, take a look at the wiki of the project:&lt;br /&gt;http://wiki.cython.org/gsoc09/daniloaf/progress&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7711855911946874836-5985321404354071389?l=daniloaf-ufcg.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 01 Jul 2009 13:34:30 +0000</pubDate>
	<author>dsurviver@gmail.com (Danilo Freitas)</author>
</item>
<item>
	<title>James Pruitt: Not Far From The Tree</title>
	<guid>tag:blogger.com,1999:blog-724252239441763316.post-7764591299839682761</guid>
	<link>http://subdev.blogspot.com/2009/06/not-far-from-tree.html</link>
	<description>Now that my implementation of subprocess.Popen is complete and unit tested, I will be moving on to moving my changes to Python 3.1. I just compiled Python 3.1 on Debian, all modules included, and pdb is still mal-functioning so if the code conversion isn't as smooth as I anticipate, I will be using print statements to debug which is a bit difficult due to the nature of subprocess.Popen.&lt;br /&gt;&lt;br /&gt;The license of my project has been changed from GPL to Apache License 2.0 so that there is a chance of it being integrated into the Pytohn core. There are still some issues that I may have handled incorrectly as far as my subprocess.Popen file wrapper goes, mainly handling the &quot;mode&quot; argument that is used when one opens a file. Right now, it is mostly ignored, the exception being universal newline support.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/724252239441763316-7764591299839682761?l=subdev.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 30 Jun 2009 18:30:00 +0000</pubDate>
	<author>noreply@blogger.com (Eric)</author>
</item>
<item>
	<title>Dale Peterson: Code cleanup and updating of examples</title>
	<guid>http://dlpeterson.com/blog/?p=72</guid>
	<link>http://dlpeterson.com/blog/?p=72</link>
	<description>&lt;p&gt;A few days ago, I discovered the .get() method of the dictionary data type.  It allows you to request the value corresponding to a key which a dictionary may not have, in which case you can specify what should be returned instead of rasing a KeyError.  In PyDy, I had numerous cases where I was using if/else statements to check if a dictionary had a certain value, but by using the .get() method, I was able to eliminate about 50 or 60 lines of code and make the code a lot more readable and easier to maintain.&lt;/p&gt;
&lt;p&gt;The progress on the trigonometric functions has been slow.  Ondrej and I worked on some code together that handles most of the cases in the table by Fu et al., but not all.  One of the things that has been a little challenging is to identify pi shifts in the argument to the trig functions and map the shift into the first quadrant (0, pi/2) and return the appropriate result, e.g.:  sin(x+17*pi/18) &amp;#8211;&amp;gt; sin(x + pi/18), etc.  The approach has been to match x and r in the following generic argument:&lt;/p&gt;
&lt;div class=&quot;codesnip-container&quot;&gt;
&lt;div class=&quot;codesnip&quot;&gt;x + r*pi&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;As I see it, there are three cases to consider:  1) x==0, r!=0, 2) r==0, x!=0, and 3) x!=0, and r!=0.  I am splitting the logic up in this fashion and am trying to deal with each case in the appropriate manner.  In most cases, r will be of the Rational class, and therefore the modulo operator is needed to bring it to the interval (0, 2*pi), so I implemented the necessary code and sent a patch to the Sympy mailing.&lt;/p&gt;
&lt;p&gt;Although the trig functions aren&amp;#8217;t quite as they need to be yet, I was still able to manually get the simplifications that are presented by Fu et al. to work using the builtin Sympy commands, which hopefully will mean that simplifying the implementing the algorithm will be feasible with the existing Sympy tools and not too many extra functions will need to be created.&lt;/p&gt;</description>
	<pubDate>Tue, 30 Jun 2009 14:35:38 +0000</pubDate>
</item>
<item>
	<title>Kang Zhang: Porting to Gnome Keyring</title>
	<guid>tag:blogger.com,1999:blog-2429166803430996285.post-4735485639220146562</guid>
	<link>http://kangzhang-en.blogspot.com/2009/06/porting-to-gnome-keyring.html</link>
	<description>I've finished porting the API to Gnome keyring. The latest code on the repository includes this feature. To compile the lib for gnome-keyring, you need &lt;a href=&quot;http://ftp.gnu.org/gnu/glibc/&quot;&gt;Glibc&lt;/a&gt; 2.0, &lt;a href=&quot;http://dbus.freedesktop.org/&quot;&gt;D-Bus&lt;/a&gt; 1.0 and &lt;a href=&quot;http://live.gnome.org/GnomeKeyring&quot;&gt;Gnome Keyring&lt;/a&gt; 1.0. The changes that the keyring api made on your os can be see in the &lt;a href=&quot;http://live.gnome.org/Seahorse&quot;&gt;Seahorse&lt;/a&gt; or Gnome Keyring Manager( Deprecated).&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_u84Z54raibU/SkoORYjd5WI/AAAAAAAABLA/GfbhBghmPcA/s1600-h/gnome-keyring1.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_u84Z54raibU/SkoORYjd5WI/AAAAAAAABLA/GfbhBghmPcA/s320/gnome-keyring1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_u84Z54raibU/SkoOaBcnhBI/AAAAAAAABLI/0uONWGWkMZM/s1600-h/gnome-keyring2.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_u84Z54raibU/SkoOaBcnhBI/AAAAAAAABLI/0uONWGWkMZM/s320/gnome-keyring2.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next platform is &lt;a href=&quot;http://docs.kde.org/stable/en/kdeutils/kwallet/index.html&quot;&gt;KDE Kwallet&lt;/a&gt;, &lt;a href=&quot;http://web.mst.edu/~tauritzd/courses/CyberSecurityR&amp;amp;D/sp2008/libpurple_slides.ppt&quot;&gt;here&lt;/a&gt;'s some interesting materials .&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2429166803430996285-4735485639220146562?l=kangzhang-en.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 30 Jun 2009 13:21:00 +0000</pubDate>
	<author>Jobo.ZH@gmail.com (Kang)</author>
</item>
<item>
	<title>M. Shuaib Khan: Progress...</title>
	<guid>tag:blogger.com,1999:blog-4313447571103503761.post-4421056077394098943</guid>
	<link>http://feedproxy.google.com/~r/ShuaibsGsoc2009ProjectBlog/~3/8wL2olak8pI/progress.html</link>
	<description>I've had little progress this week, and couldn't update my blog last week, due to final exams of my final semester. But since the exams are about to end, I think at least I can document my previous to last week's progress.&lt;br /&gt;&lt;br /&gt;I analyzed a good number of python C modules using gcov manually. The results seem good and encouraging and gcov seems to be the right tool for the coverage. The fact that it requires modules to be linked in statically into Python is a bit of a trouble, but after having a detail discussion with my supervisor, Seth, we decided on assuming the following two points for my later work on integrating the gcov reports into figleaf:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The user has already compiled Python with modules statically linked in&lt;/li&gt;&lt;li&gt;Proper arguments were used with gcc during the compilation process so to let gcov track the coverage.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Lots of manual work during the past weeks. It is actually time to start coding all of it, and I've to start first with letting figleaf take care of the C code coverage report generation too. I've been looking through the figleaf code to figure out how to best achieve that goal, and will document any changes made here on the blog.&lt;br /&gt;&lt;br /&gt;In the meantime, I've also started to look into improving the test coverage by writing new test cases. I found the unittest module to be interesting to start with as it has around half coverage, and would be interesting writing unit tests for the unittest module itself.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4313447571103503761-4421056077394098943?l=shuaibatgsoc2009.blogspot.com&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ShuaibsGsoc2009ProjectBlog/~4/8wL2olak8pI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 30 Jun 2009 13:57:33 +0000</pubDate>
	<author>noreply@blogger.com (M. Shuaib Khan)</author>
</item>
<item>
	<title>Fabian Pedregosa: Preparing a new release</title>
	<guid>http://fseoane.net/blog/?p=156</guid>
	<link>http://fseoane.net/blog/?p=156</link>
	<description>&lt;p&gt;Last days I&amp;#8217;ve been busy preparing &lt;a href=&quot;http://groups.google.com/group/sympy/browse_thread/thread/88474cde3bc6e350&quot;&gt;the first public beta of SymPy 0.6.5&lt;/a&gt;. Most of the time was spent solving a bug that made documentation tests fail under python2.4, but now that this is solved, I hope that by the end of the week we could have a final release.&lt;/p&gt;
&lt;p&gt;When this release is published, we&amp;#8217;ll merge my query module and work on getting it right for 0.7.&lt;/p&gt;</description>
	<pubDate>Tue, 30 Jun 2009 06:57:48 +0000</pubDate>
</item>
<item>
	<title>Tyler Laing: Movie Module Progress: Week 6</title>
	<guid>http://www.oddco.ca/zeroth/zblog/?p=232</guid>
	<link>http://feedproxy.google.com/~r/ZerothCode/~3/hctnWQDUq80/</link>
	<description>So, week six. I devoted this entire week to exhaustive testing and bug fixing. Its just good software development to take some time, and test and fix bugs. No new features, nothing. I also took the time in the process to refactor a section of code I felt was extremely hacky and brittle. The benefit [...]</description>
	<pubDate>Tue, 30 Jun 2009 01:58:49 +0000</pubDate>
</item>
<item>
	<title>Freddie Witherden: x Marks the Spot</title>
	<guid>tag:blogger.com,1999:blog-7648717043547744590.post-3511008618520791674</guid>
	<link>http://gsoc-mathtex.blogspot.com/2009/06/x-marks-spot.html</link>
	<description>&lt;a href=&quot;http://3.bp.blogspot.com/_zBQvN9VZPlI/Skj86HiUzAI/AAAAAAAAAAU/DV-_d-w1jrc/s1600-h/test.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_zBQvN9VZPlI/Skj86HiUzAI/AAAAAAAAAAU/DV-_d-w1jrc/s400/test.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5352806232515464194&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;There it is — the first 'equation' ever rendered by Mathtex! Although it may look like nothing more than a 99-DPI 12pt x in italicized Computer Modern it is really something quite special — a vision of progress.&lt;br /&gt;&lt;br /&gt;Below is the parse-tree and glyph stream generated by the program:&lt;br /&gt;&lt;span&gt;freddie@fluorine ~/Programming/mathtex $ python main.py&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;[Hlist 9.42&gt; [Hlist 0.00&gt; ] [Hlist 9.42&gt; `x` k1.17] [Hlist 0.00&gt; ]]&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;[(-0.5, 7.0, Bunch(symbol_name=x, metrics=Bunch(advance=9.41821289062, iceberg=7.0, ymax=7.0, height=7.0, width=8.25, slanted=True, xmax=8.6875, xmin=0.5, ymin=0.0), num=120, fontsize=12, offset=0.0, postscript_name=Cmmi10, font=, glyph=))]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Over the last couple of days I have been working on the code that I committed last week (&lt;a href=&quot;http://code.google.com/p/mathtex/source/detail?r=2&quot;&gt;here&lt;/a&gt; for those that are interested) and as promised now have something that &lt;span&gt;does&lt;/span&gt; work.&lt;br /&gt;&lt;br /&gt;However, there are several unpleasantness associated with it: firstly it depends on mathtex.ft2font — the FreeType wrapper used by matplotlib; secondly there is currently only a Cairo backend; thirdly the only font series supported Computer Modern, by way of the Bakoma fonts; fourthly the font paths are currently hard-coded.&lt;br /&gt;&lt;br /&gt;I plan to fix all of these issues over the next couple of days — starting with using font metrics files as opposed to FT2Font and then writing a C-based renderer and wrapping it using Cython. I expect that this will be done by Friday.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7648717043547744590-3511008618520791674?l=gsoc-mathtex.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 29 Jun 2009 19:56:44 +0000</pubDate>
	<author>noreply@blogger.com (Freddie Witherden)</author>
</item>
<item>
	<title>Vicent Marti: Gentlemen. An update.</title>
	<guid>http://www.bellverde.org/gsoc/gentlemen</guid>
	<link>http://www.bellverde.org/gsoc/gentlemen.xhtml</link>
	<description>&lt;p&gt;Hey everybody. Apologies beforehand for my lack of updates -- I know I'm totally failing at maintaining this blog (as usual, and as expected), but that doesn't mean that progress is not being made.&lt;/p&gt;
&lt;p&gt;Far from that, actually. I've finished my exams break last week and resumed my usual schedule; everything is looking &lt;em&gt;very&lt;/em&gt; in shape for the first evaluation on July the 6th. Let's take a look at the SVN logs and see what has been done... After the break.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;::&lt;a href=&quot;http://www.bellverde.org/gsoc/gentlemen.rss20&quot;&gt;READ MORE&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 27 Jun 2009 20:05:00 +0000</pubDate>
</item>
<item>
	<title>James Pruitt: Updates</title>
	<guid>tag:blogger.com,1999:blog-724252239441763316.post-1009505491050463387</guid>
	<link>http://subdev.blogspot.com/2009/06/updates.html</link>
	<description>Though it has been a while since I have made a post, things are going well right now. Since my last post, I have created a Google Code Repository located at http://code.google.com/p/subprocdev/. I have integrated, modified and written tests for the code I got from Josiah Carlson. Two of the functions he left outside of his Popen patch that were moved into subprocess.Popen. I made some aesthetic and functional changes to his recv_some and send_all functions.&lt;br /&gt;&lt;br /&gt;Eventually, I got my code and Josiah's code just about fully unit tested in Python 2.7 and from there, proceeded to see if I could convert it over to 3.0. After I did this, I realized that it still ran, for the most part, in Python 2.7. With the following code, I attempted to get around the only thing that was causing me grief:&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;if sys.version_info[0] == 3:&lt;br /&gt;    from io import BufferedWriter as buffer&lt;br /&gt;else:&lt;br /&gt;    class str(object):&lt;br /&gt;        def __init__(self,a,b=None):&lt;br /&gt;            self = a.__str__()&lt;br /&gt;    def isinstance(a,b):&lt;br /&gt;        if b == str:&lt;br /&gt;            return hasattr(a,'strip')&lt;br /&gt;        try:&lt;br /&gt;            return a == b(a)&lt;br /&gt;        except:&lt;br /&gt;            return False&lt;br /&gt;&lt;br /&gt;In Python3.0, the str function can also accept character encoding as an argument so I tried to overload the Python 2.7 str class to make it 3.0 compliant to no avail so I will be producing a separate branch for Python 2.7 and 3.0 development in my Google Code Repository but any suggestions on getting around the str issue are greatly appreciated.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/724252239441763316-1009505491050463387?l=subdev.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 27 Jun 2009 14:52:00 +0000</pubDate>
	<author>noreply@blogger.com (Eric)</author>
</item>
<item>
	<title>Yang Yang: Porting py.test from python2.x to python3.1 (updated on Jun 27)</title>
	<guid>tag:blogger.com,1999:blog-5051690563388562347.post-4969763233089130447</guid>
	<link>http://yangyan5.blogspot.com/2009/06/porting-pytest-from-python2x-to.html</link>
	<description>Due to python3.x 's intentional backwards incompatibility, it is not an easy work to migrate a project's codebase from python2.x to python3.x. Guido has given a recommended development model:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You should have excellent unit tests with close to full coverage.&lt;/li&gt;&lt;li&gt;Port your project to Python2.6.&lt;/li&gt;&lt;li&gt;Turn on the Py3k warnings mode.&lt;/li&gt;&lt;li&gt;Test and edit until no warnings remain.&lt;/li&gt;&lt;li&gt;Use the 2to3 tool to convert this source code to 3.0 syntax.&lt;/li&gt;&lt;li&gt;Test the converted source code under 3.0.&lt;/li&gt;&lt;li&gt;If problems are found, make corrections to the 2.6 version of the source code and go back to step 4.&lt;/li&gt;&lt;li&gt;When it's time to release, release separate 2.6 and 3.0 tarballs.&lt;/li&gt;&lt;/ol&gt;Fortunately, py.test is already 2.4 and 2.6 compatible, and has sufficient unit tests. So, I can directly start from step 3. However, unfortunately, Holger requires the codebase ported to 3.1 should still be compatible with 2.4 and 2.6, i.e., maintain only one codebase which could be used through all main python versions. So, 2to3 tool can only be used to show the minimum places that need notification.&lt;br /&gt;&lt;br /&gt;Thus, to make py.test compatible with python2.4, 2.6, and 3.1, the first thing is to write some wrapper functions. The functions I wrote are:&lt;br /&gt;&lt;span&gt;Print&lt;/span&gt;:&lt;br /&gt;--use Print function instead of each print statement in py.test, so python3.1 will not throw SyntaxError. In Print function, execute correct print code according to current python version.&lt;br /&gt;&lt;span&gt;Raise&lt;/span&gt;:&lt;br /&gt;--the only incompatible syntax is raise cls, value, tb (2.x) and raise cls(value).with_traceback(tb) (3.x). So, just simply call corresponding statement in Raise function.&lt;br /&gt;&lt;span&gt;isinstancemethod&lt;/span&gt;, &lt;span&gt;isclassmethod&lt;/span&gt;, &lt;span&gt;isfunction&lt;/span&gt;:&lt;br /&gt;--suppose we defined a class &quot;myclass&quot; and a method &quot;method&quot; inside &quot;myclass&quot;, then create an instance of myclass, myinstance. In 2.x, myclass.method and myinstance.method have the same attribute names. But in 3.x, myclass.method's attribute names are the same with the ones of normal function. This is a very annoying difference, because in many places code objects are got by &lt;span&gt;obj.im_func.func_code&lt;/span&gt;. In 2.x, &lt;span&gt;obj&lt;/span&gt; could be myinstance.method or myclass.method; In 3.x, &lt;span&gt;obj.im_func.func_code&lt;/span&gt; must be changed to &lt;span&gt;obj.__func__.__code__&lt;/span&gt; and it only works for myinstance.method. For myclass.method or normal function, should use &lt;span&gt;obj.__code__&lt;/span&gt;. So, I have to provide three functions to distinguish them respectively.&lt;br /&gt;&lt;span&gt;updatemethodattr&lt;/span&gt;, &lt;span&gt;updatefunctionattr&lt;/span&gt;:&lt;br /&gt;--method's attributes:&lt;br /&gt;im_self ==&gt; __self__&lt;br /&gt;im_func ==&gt; __func__&lt;br /&gt;im_class ==&gt; disappeared?&lt;br /&gt;--function's attributes:&lt;br /&gt;func_closure ==&gt; __closure__&lt;br /&gt;func_code ==&gt; __code__&lt;br /&gt;func_defaults ==&gt; __defaults__&lt;br /&gt;func_dict ==&gt; __dict__&lt;br /&gt;func_doc ==&gt; __doc__&lt;br /&gt;func_globals ==&gt; __globals__&lt;br /&gt;func_name ==&gt; __name__&lt;br /&gt;So, to keep codebase unchanged, if obj is 3.x's method or function, create 2.x's attributes.&lt;br /&gt;&lt;span&gt;CmpToKey&lt;/span&gt;:&lt;br /&gt;--in 3.x, there is no cmp keyword in sort function. So, this wrapper will transform a cmp function to key function.&lt;br /&gt;&lt;span&gt;bytestostr&lt;/span&gt;, &lt;span&gt;strtobytes&lt;/span&gt;:&lt;br /&gt;--in 3.x, all strings are unicode, but lots of streams require bytes object instead of string. So, use these two functions to wrap stream arguments and when it's 3.x, transfer from bytes to str or str to bytes.&lt;br /&gt;&lt;br /&gt;Second, for some well known incompatibilities, such as &quot;except as&quot; and module rename. For &quot;except Error as e:&quot;, change it to &quot;except Error:&quot;, and in except block, create e by &quot;e = sys.exc_info()[1]&quot;. For module rename, add a try/except block. For example:&lt;br /&gt;try: import StringIO&lt;br /&gt;except ImportError: import io as StringIO&lt;br /&gt;&lt;br /&gt;Third, 3.x has many incompatible mechanisms. For example: 3.x will not call __cmp__ when compareing two objects. So, __lt__, __gt__, __le__, __ge__, and __eq__ should be implemented. Furthermore, if you define __eq__, __hash__ must be provided.&lt;br /&gt;In 2.x, dict.items() will return a copy list of key-value pairs. But in 3.x, dict.items() will return a view object, and if the dict's size changed during iteration, a RuntimeError will be thrown. So, although &quot;&lt;span&gt;for key,value in dict.items():&lt;/span&gt;&quot; still works in 3.x, it should be changed to &quot;&lt;span&gt;for key, value in list(dict.items()):&lt;/span&gt;&quot; in case of RuntimeError.&lt;br /&gt;&lt;br /&gt;There are still lots of incompatibities need to be fixed. Currently the packages of py.test without test failures under 3.1 are:&lt;br /&gt;builtin/&lt;br /&gt;cmdline/&lt;br /&gt;io/&lt;br /&gt;log/&lt;br /&gt;path/&lt;br /&gt;process/&lt;br /&gt;rest/&lt;br /&gt;I will keep updating this post when porting. Hope this could be finished ASAP.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5051690563388562347-4969763233089130447?l=yangyan5.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 27 Jun 2009 12:10:48 +0000</pubDate>
	<author>yangyan5@gmail.com (Yang Yang)</author>
</item>
<item>
	<title>Freddie Witherden: This Week in GSoC Mathtex</title>
	<guid>tag:blogger.com,1999:blog-7648717043547744590.post-3640066355096555341</guid>
	<link>http://gsoc-mathtex.blogspot.com/2009/06/this-week-in-gsoc-mathtex.html</link>
	<description>Officially, according to my schedule this week should've been spent on producing a set of unit tests. Now, usually when things don't go to schedule it is because something bad or unexpected occurred.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, while looking through the Mathtex code last week something good — but unexpected — occurred. It seems as if splitting Mathtex from Matplotlib is significantly easier than I first anticipated. Therefore, this week has been spent splitting the behemoth mathtex.py file in Matplotlib into several smaller files, ready for externalisation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I expect that by Sunday or Monday the SVN repository will have a version of mathtex that is able to render equations using a Cairo backend and the FT2Font library from Matplotlib. Once this is working it shouldn't be to difficult to a) add a bitmap backend using FreeType/Cython/libpng; b) use font metrics files as opposed to FT2Font for metrics information.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On a personal note yesterday was also my last day in university accommodation. As of 22:30 BST I am now home again as opposed to being in central London. Yay for packing and unpacking!&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7648717043547744590-3640066355096555341?l=gsoc-mathtex.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 27 Jun 2009 10:49:22 +0000</pubDate>
	<author>noreply@blogger.com (Freddie Witherden)</author>
</item>
<item>
	<title>Priit Laes: Separation of variables for PDEs</title>
	<guid>tag:plaes.org,2009-06-26:,blog/entry;2009/6/26/separation-of-variables-for-pdes</guid>
	<link>http://plaes.org/blog/2009/6/26/separation-of-variables-for-pdes</link>
	<description>&lt;p&gt;School finally ended last week (no exam results yet, though) and I took a long-long trip back home.. Week started slowly due to the deadly combination of the forgotten laptop power cord, &lt;a href=&quot;http://en.wikipedia.org/wiki/Midsummer#Estonia&quot;&gt;Midsummer&lt;/a&gt; day, &lt;a href=&quot;http://en.wikipedia.org/wiki/Victory_Day#Victory_Day_on_June_23_in_Estonia&quot;&gt;Victory Day&lt;/a&gt; and best weather ever. This resulted in lots of grilling, beer and also a small side-effect: my GSoC &lt;a href=&quot;http://ondrej.certik.cz/&quot;&gt;mentor&lt;/a&gt; is probably quite angry now for missing my weekly update again... 
&lt;/p&gt;
&lt;p&gt;Back to Sympy now.
&lt;/p&gt;
&lt;p&gt;So far all my various doc-related fixes have been committed to upstream, and I have decided to bite the bullet and start implementing the &lt;a href=&quot;http://en.wikipedia.org/wiki/Separation_of_variables&quot;&gt;variable separation&lt;/a&gt; for PDEs. So far some very simple testcases based on first-order equations work, but I have some trouble with equations containing higher order derivatives.
   You can pull from &lt;a href=&quot;http://github.com/plaes/sympy/tree/pde-separate&quot;&gt;gihtub/pde-separate&lt;/a&gt; and please break it :)
&lt;/p&gt;</description>
	<pubDate>Fri, 26 Jun 2009 12:01:31 +0000</pubDate>
</item>
<item>
	<title>Freddie Witherden: We Have a Mailing List</title>
	<guid>tag:blogger.com,1999:blog-7648717043547744590.post-6424590115155104853</guid>
	<link>http://gsoc-mathtex.blogspot.com/2009/06/we-have-mailing-list.html</link>
	<description>Following on from the Mathtex project announcement last week we now also have a mailing list. mathtex-dev; http://groups.google.com/group/mathtex-dev?lnk= which is open to all. Although a development list anyone with an interest in the project, should make their voices heard. This will almost certainly become more important in the next week or so when the floor is opened to feature/enhancement requests (backends and syntax support).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7648717043547744590-6424590115155104853?l=gsoc-mathtex.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 25 Jun 2009 11:57:21 +0000</pubDate>
	<author>noreply@blogger.com (Freddie Witherden)</author>
</item>
<item>
	<title>Tyler Laing: Science Fiction predicts the future?</title>
	<guid>http://www.oddco.ca/zeroth/zblog/2009/06/24/science-fiction-predicts-the-future/</guid>
	<link>http://feedproxy.google.com/~r/ZerothCode/~3/aBC2xCe00Js/</link>
	<description>I&amp;#8217;m watching a documentary on the parallels between the market crash of 1929, and the market crash in 2008(last year). I was reminded of the exploits of Adam Zimmerman, of Brian Stableford&amp;#8217;s Emortality series, where Adam used his brilliance in the stock markets to cause a massive market crash, while the masters of the business [...]</description>
	<pubDate>Thu, 25 Jun 2009 02:33:38 +0000</pubDate>
</item>
<item>
	<title>Eden Elos: Status update</title>
	<guid>tag:blogger.com,1999:blog-1442467302759878098.post-2987568327012843376</guid>
	<link>http://edenelos.blogspot.com/2009/06/status-update.html</link>
	<description>This blog will keep tracking the development of Interfacing pygr with Clustalw alignment, BLASTZ alignment, BLAT alignment, LAGAN alignment, MLAGAN alignment, and gmap alignment. &lt;span class=&quot;yshortcuts&quot; id=&quot;lw_1245818568_0&quot;&gt;The Project&lt;/span&gt; is part of &lt;span class=&quot;yshortcuts&quot; id=&quot;lw_1245818568_1&quot;&gt;Google&lt;/span&gt; summer of Code 2009, and will be mentored by &lt;span class=&quot;yshortcuts&quot; id=&quot;lw_1245818568_2&quot;&gt;Dr. Titus Brown&lt;/span&gt; and Jenny Qing Qian , to both of whom I am very grateful.&lt;br /&gt;Currently, Pygr is interfaced only with  BLAST alignment program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For the actual interfaces, I will write separate Python modules (by the way, Python is the language I am using). Before mid-term evaluation (which is on July 06, 2009),  I plan to finish the first three alignment programs and the remaining three will be finished after the mid-term. So far I have finished interfacing Clustalw and blastz with pygr.&lt;br /&gt;The mainstay of this blog will be progress reports. Comments are welcome.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1442467302759878098-2987568327012843376?l=edenelos.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 23 Jun 2009 22:47:13 +0000</pubDate>
	<author>noreply@blogger.com (Eden Elos)</author>
</item>
<item>
	<title>Tyler Laing: Intelligence Gathering Issues</title>
	<guid>http://www.oddco.ca/zeroth/zblog/?p=229</guid>
	<link>http://feedproxy.google.com/~r/ZerothCode/~3/r4TZJuWna2w/</link>
	<description>All too often we see reporters miss the real questions or lob easy ones at the Powers That Be. This isn&amp;#8217;t enough to make me paranoid, as generally, people do good. But one particular line in this Time article about missing boy Danny Barter really got me interested. The line in question is this: 
 [...]</description>
	<pubDate>Tue, 23 Jun 2009 18:09:17 +0000</pubDate>
</item>
<item>
	<title>Danilo Freitas: new and delete operators</title>
	<guid>tag:blogger.com,1999:blog-7711855911946874836.post-628218457431411055</guid>
	<link>http://daniloaf-ufcg.blogspot.com/2009/06/new-and-delete-operators.html</link>
	<description>last week we begun with the work to support the 'new' and 'delete' operators.&lt;br /&gt;A new node was created (NewStatNode) and a function in the parser to call it (p_new_statement).&lt;br /&gt;I hope everything continue with no problems.&lt;br /&gt;&lt;br /&gt;The midterm evaluations is coming. I hope everything be on time until there. :)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7711855911946874836-628218457431411055?l=daniloaf-ufcg.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 23 Jun 2009 14:59:23 +0000</pubDate>
	<author>dsurviver@gmail.com (Danilo Freitas)</author>
</item>
<item>
	<title>Dale Peterson: Still working on trigonometric.py</title>
	<guid>http://dlpeterson.com/blog/?p=71</guid>
	<link>http://dlpeterson.com/blog/?p=71</link>
	<description>&lt;p&gt;I am still working on modifying trigonometric.py to make all of the trig methods behave as they would in Mathematica/Matlab/Maple.  This involves getting the .eval method of each of them correct, and then from there I can work on implmenting a new trigsimp.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Jun 2009 23:30:15 +0000</pubDate>
</item>
<item>
	<title>Fabian Pedregosa: Queries and performance</title>
	<guid>http://fseoane.net/blog/?p=152</guid>
	<link>http://fseoane.net/blog/?p=152</link>
	<description>&lt;p&gt;After some hacking on the queries module, I finally got it right without the &lt;a href=&quot;http://fseoane.net/blog/?p=149&quot;&gt;limitations of past versions&lt;/a&gt;. You can check it out from my repo http://fseoane.net/git/sympy.git, branch master.&lt;/p&gt;
&lt;p&gt;It now relies even more on logic.inference.satisfiable(), which is just an implementation of the &lt;a href=&quot;http://en.wikipedia.org/wiki/DPLL_algorithm&quot;&gt;DPLL algorithm&lt;/a&gt;. Bad news is that (my implementation of ) dpll_satisfiable() is SLOW, so inevitably queries are SLOW. But everything is not lost, since the algorithm is quite fast, and in fact other variants of the algorithm (MiniSAT) perform 6600x times faster than my implementation on medium-sized problems (60 variables, 170 clauses). So this looks like something smells bad on the programming side &amp;#8230;&lt;/p&gt;
&lt;p&gt;However, I spent the day profiling the function &lt;a href=&quot;http://fseoane.net/blog/wp-content/uploads/2009/06/profilepy.zip&quot; title=&quot;profilepy.zip&quot;&gt;(link to source code used for profiling)&lt;/a&gt; without much success&lt;/p&gt;</description>
	<pubDate>Mon, 22 Jun 2009 22:02:22 +0000</pubDate>
</item>
<item>
	<title>Werner Laurensse: GSOC Week 3-4</title>
	<guid>http://abeocracy.tumblr.com/post/128139586</guid>
	<link>http://abeocracy.tumblr.com/post/128139586</link>
	<description>&lt;p&gt;The past two weeks I was busy studying for my examinations, so I didn’t have much time to work on my GSOC project.
However I was able to do a lot of work to get the &lt;strong&gt;PyCameraObject struct&lt;/strong&gt; integrated in the existing code and implemented some additional functions.&lt;/p&gt;

&lt;p&gt;Here is the definition of this struct, it isn’t completed yet because some “types” I would like to put into it cause compile errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PyCameraObject:&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;typedef struct {
    PyObject_HEAD
    char* device_name;              // unieke name of the device
    SeqGrabComponent component;     // A type used by the Sequence Grabber API
    SGChannel channel;              // Channel of the Sequence Grabber
    GWorldPtr gWorld;               // Pointer to the struct that holds the data of the captured image
    Rect boundsRect;                // bounds of the image frame
} PyCameraObject;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In addition of implementing the &lt;strong&gt;PyCameraObject struct&lt;/strong&gt;, I have writen the folowing functions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mac_device_init():&lt;/strong&gt;&lt;br /&gt;
This function initializes the sequence grabber component and prepares it for capturing images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mac_device_close():&lt;/strong&gt;&lt;br /&gt;
I have extended this function so it works with the &lt;strong&gt;PyCameraObject struct&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mac_start_capturing():&lt;/strong&gt;&lt;br /&gt;
At this moment this function&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;camera_start():&lt;/strong&gt;&lt;br /&gt;
This function just calls the above functions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;camera_get_size():&lt;/strong&gt;&lt;br /&gt;
Simple function that returns the size of the image frame.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Schedule for this week&lt;/h3&gt;

&lt;p&gt;This week I am planning to finish the &lt;strong&gt;mac_start_capturing&lt;/strong&gt; function so that I can capture images from my camera an put then in a &lt;strong&gt;SDL_Surface&lt;/strong&gt; object.
As usional you can folow my work on &lt;a href=&quot;http://github.com/ab3&quot; title=&quot;github&quot;&gt;my github account&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Jun 2009 15:19:35 +0000</pubDate>
</item>
<item>
	<title>Andrew Friedley</title>
	<guid>tag:blogger.com,1999:blog-7610898009400510033.post-3348405989857796406</guid>
	<link>http://numcorepy.blogspot.com/2009/06/this-past-week-i-wrote-code-for-int32.html</link>
	<description>This past week I wrote code for int32 and float64 types, giving me an addition ufunc that supports 32/64bit ints and floats.  The code for each case is pretty long; each datatype duplicates code that loads the function arguments, checks for cases like reduction and lengths that don't evenly divide the SIMD parallelization/loop unrolling, etc.  So I started factoring this out and developing the beginnings of a framework for writing CorePy-based ufuncs with minimal effort and code duplication.&lt;br /&gt;&lt;br /&gt;I succeeded in isolating most of the duplicate code, though the 'generic' code generation is a bit more complicated than before -- especially the specialized reduction code.  This needs some polish still; I used two different approaches for factoring out the operation-specific code for general element-wise operations and reductions.  I will probably use the approach I did for reduction -- the generic code requires a function (I can actually pass a single instruction) that takes two registers as arguments (accumulator and source element) and generates reduction code for a single element.&lt;br /&gt;&lt;br /&gt;I ran into a few problems while working on this stuff; I have no idea how I managed to miss these bugs until now.  First, applying my ufunc to a single-element array gave bad results -- the test I was using to detect reduction was also catching this single-element case, and not working properly.&lt;br /&gt;&lt;br /&gt;The other issue I've run into is due to the way I'm splitting work among multiple threads.  I just did the easiest thing possible (halfway expecting to do something more elaborate later) -- divide the length evenly among each thread, giving the last thread additional work if the number of threads does not divide the length evenly.  The problem with this is that individual threads will get work segments with unaligned memory if the work segment length is not a multiple of 16 bytes.  So this problem is the next thing I need to tackle -- I've been thinking about ways to split the work evenly, while also rounding work segments to a multiple of 16 bytes.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7610898009400510033-3348405989857796406?l=numcorepy.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 22 Jun 2009 14:58:45 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Friedley)</author>
</item>
<item>
	<title>Aaron Meurer: asmeurer</title>
	<guid>http://asmeurersympy.wordpress.com/?p=181</guid>
	<link>http://asmeurersympy.wordpress.com/2009/06/22/how-to-permanently-lose-data-with-git-and-then-retrieve-it-again/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;So I pushed some changes to github so Ondrej could help me debug the nseries tests, when I noticed that the changes that I pushed had some bad comments.  So I decided to rebase.  But git rebase -i told me that there was already a rebase in progress.  I figured that I must have done it a long time ago and forgot to abort, so I ran git rebase &amp;#8211;abort.  &lt;/p&gt;
&lt;p&gt;DON&amp;#8217;T DO THAT.&lt;/p&gt;
&lt;p&gt;I noticed my editor was telling me that an open file had changed.  Then, I noticed that ALL of my uncommited changes were gone!  And, being uncommited changes, git did not have them saved anywhere!&lt;/p&gt;
&lt;p&gt;So now I started to panic.  I had done a lot of work on dsolve that I hadn&amp;#8217;t commited yet. Normally, I have hourly backups run by &lt;a href=&quot;http://www.apple.com/macosx/features/timemachine.html&quot;&gt;Time Machine&lt;/a&gt;, but I am on vacation and my backup drive is at home.  So I started to see if I could retrieve it somewhere.  grep quickly told me that it wasn&amp;#8217;t in the hidden git directory, but it was still in my .pyc files.  But a Google search told me that retrieving from that is not so easy, if not impossible with Python 2.6.  So then, I decided to see if there was any lingering stuff in my virtual memory from my editor.  So I ran grep on my harddrive and waited.  &lt;/p&gt;
&lt;p&gt;While I was waiting, though, I noticed when I scrolled up in my command history that my lost changes were in my Terminal.  It turns out that I had just run git commit &amp;#8211;interactive and had used * on my patches, so it gave me everything!  &lt;/p&gt;
&lt;p&gt;So I copied my Terminal history and will work on putting everything back tomorrow.  It should be easy, assuming that git apply works for the format that git gives in commit &amp;#8211;interactive.  &lt;/p&gt;
&lt;p&gt;So the lessons are: Don&amp;#8217;t abort a rebase without commiting.  Don&amp;#8217;t start a rebase and then leave it there.  Look in your Terminal history if you loose stuff.  And it might be a good idea to make manual backups if you are away from your backup drive for a while.&lt;/p&gt;
&lt;p&gt;This also highlights why it is important to try to recover data immediately after realizing that it is gone.  If I had closed my Terminal session or filled it past the maximum number of lines, my data would be gone.  Even if it were in my virtual memory, that wouldn&amp;#8217;t last forever either.  &lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/asmeurersympy.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/asmeurersympy.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/asmeurersympy.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/asmeurersympy.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/asmeurersympy.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/asmeurersympy.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/asmeurersympy.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/asmeurersympy.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/asmeurersympy.wordpress.com/181/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/asmeurersympy.wordpress.com/181/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=asmeurersympy.wordpress.com&amp;amp;blog=7467151&amp;amp;post=181&amp;amp;subd=asmeurersympy&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 22 Jun 2009 05:16:23 +0000</pubDate>
</item>
<item>
	<title>Wojciech Walczak: gminick</title>
	<guid>http://gminick.wordpress.com/?p=35</guid>
	<link>http://gminick.wordpress.com/2009/06/21/the-file-structure-of-my-project/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;At the moment the directory structure of my project built upon Sphinx&amp;#8217;s dir structure looks like this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;builders/webapp/&lt;/strong&gt; -&amp;gt; webapp builder used by Sphinx to build the docs and the webapp,&lt;br /&gt;
&lt;strong&gt;builders/webapp/templates/&lt;/strong&gt; -&amp;gt; the *.py template files rendered by webapp builder (at the moment one file &amp;#8211; server.py &amp;#8211; lies here, but actually this file is simply copied, not rendered, but it might change in the future),&lt;br /&gt;
&lt;strong&gt;builders/webapp/templates/html/ &lt;/strong&gt;-&amp;gt; the templates of HTML code rendered by the middleware (imported by server.py) when serving the docs,&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;web/middleware/ &lt;/strong&gt;-&amp;gt; middleware for Xapian, OpenID and serving html files in general,&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;themes/basic/web/ &lt;/strong&gt;-&amp;gt;  templates for full HTML files. These files are used as templates twice. First, when Sphinx is building the docs, it extends these files with &amp;#8220;layout.html&amp;#8221;, and then, for a second time, when the files are accessed through the browser. That&amp;#8217;s why these files are separated from those located in builders/webapp/templates/html/ directory, which are rendered only once, by the middleware.&lt;/p&gt;
&lt;p&gt;A bit of mess, isn&amp;#8217;t it? Comments are appreciated &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;The structure for generated docs and webapp looks like this (to be found in _build/webapp):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;html/ &lt;/strong&gt;-&amp;gt; files from builders/webapp/templates/html and themes/basic/web directories are located here. We don&amp;#8217;t have to separate them anymore, because they are all used as templates by middleware now.&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;openidstore/ &lt;/strong&gt;-&amp;gt; OpenID directory. It is created and administered by python-openid library.&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;public/ &lt;/strong&gt;-&amp;gt; files built by Sphinx go here. This is the directory which should be served&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;xapian_db/ &lt;/strong&gt;-&amp;gt; Xapian&amp;#8217;s database.&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;server.py -&amp;gt; &lt;/strong&gt;a script which imports the middleware and serves the docs. The idea is that: by adapting the code from this file to one&amp;#8217;s framework, one should be able to use this webapp in his python web framework of choice. I plan to change it soon, so all server.py logic will be available as a middleware, because the middleware (Xapian, OpenID, etc.) pieces are actually unseparable, so there is no need for an ordinary user to care about importing them all.&lt;br /&gt;
Nevertheless, that&amp;#8217;s how it looks like now. It may all change in the future, but if we are about to discuss it, it&amp;#8217;s good to describe it as it is first.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/gminick.wordpress.com/35/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gminick.wordpress.com/35/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/gminick.wordpress.com/35/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/gminick.wordpress.com/35/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/gminick.wordpress.com/35/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/gminick.wordpress.com/35/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/gminick.wordpress.com/35/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/gminick.wordpress.com/35/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/gminick.wordpress.com/35/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/gminick.wordpress.com/35/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gminick.wordpress.com&amp;amp;blog=7588592&amp;amp;post=35&amp;amp;subd=gminick&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 21 Jun 2009 12:54:00 +0000</pubDate>
</item>
<item>
	<title>Aaron Meurer: asmeurer</title>
	<guid>http://asmeurersympy.wordpress.com/?p=172</guid>
	<link>http://asmeurersympy.wordpress.com/2009/06/21/refactoring-expand/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;So I have spent the past week refactoring expand so that you can have more control over what expansion methods you use.  With the present method, expand takes in hints which defaults to basic.  basic distributed multiplication over addition (&lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=x%28y%2Bz%29+%5Crightarrow+xy%2Bxz&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;x(y+z) \rightarrow xy+xz&quot; title=&quot;x(y+z) \rightarrow xy+xz&quot; class=&quot;latex&quot; /&gt;), expanded multinomial expressions (&lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=%28x%2By%29%5E2+%5Crightarrow+x%5E2%2B2xy%2By%5E2&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;(x+y)^2 \rightarrow x^2+2xy+y^2&quot; title=&quot;(x+y)^2 \rightarrow x^2+2xy+y^2&quot; class=&quot;latex&quot; /&gt;), expanded logarithms (&lt;img src=&quot;http://s3.wordpress.com/latex.php?latex=%5Clog%7Bx%5E2%7D+%5Crightarrow+2%5Clog%7Bx%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;\log{x^2} \rightarrow 2\log{x}&quot; title=&quot;\log{x^2} \rightarrow 2\log{x}&quot; class=&quot;latex&quot; /&gt; and &lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=%5Clog%7Bxy%7D+%5Crightarrow+%5Clog%7Bx%7D%2B%5Clog%7By%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;\log{xy} \rightarrow \log{x}+\log{y}&quot; title=&quot;\log{xy} \rightarrow \log{x}+\log{y}&quot; class=&quot;latex&quot; /&gt;), and expanded powers (&lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=%28xy%29%5En+%5Crightarrow+x%5Eny%5En&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;(xy)^n \rightarrow x^ny^n&quot; title=&quot;(xy)^n \rightarrow x^ny^n&quot; class=&quot;latex&quot; /&gt; and &lt;img src=&quot;http://s3.wordpress.com/latex.php?latex=e%5E%7Bx%2By%7D+%5Crightarrow+e%5E%7Bx%7De%5E%7By%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{x+y} \rightarrow e^{x}e^{y}&quot; title=&quot;e^{x+y} \rightarrow e^{x}e^{y}&quot; class=&quot;latex&quot; /&gt;).  &lt;/p&gt;
&lt;p&gt;If you wanted to do any of these things, you had to use expand_basic, which did all of them.  Also, you had no control on how deep the expansion went.  It went all they way down in recursion, so if you only wanted, for example, to distribute multiplication  on the top level, it was impossible.  &lt;/p&gt;
&lt;p&gt;So I decided to start and fix &lt;a href=&quot;http://code.google.com/p/sympy/issues/detail?id=1455&quot;&gt;issue 1455&lt;/a&gt;.  I now have a branch ready in my github account (see &lt;a href=&quot;http://github.com/asmeurer/sympy/tree/expand&quot;&gt;here&lt;/a&gt;).  &lt;/p&gt;
&lt;p&gt;With my patch, you can now choose to expand using each of the above individually with the log, mul, multinomial, power_exp, power_base.  In addition to this, you also now have complete control of how deep the expression recurses in the expand.  Previously, you couldn&amp;#8217;t, for example, expand &lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=x%28y%2Be%5E%7Bx%28y%2Bz%29%7D%29&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;x(y+e^{x(y+z)})&quot; title=&quot;x(y+e^{x(y+z)})&quot; class=&quot;latex&quot; /&gt; to &lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=xy%2Bxe%5E%7Bx%28y%2Bz%29%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;xy+xe^{x(y+z)}&quot; title=&quot;xy+xe^{x(y+z)}&quot; class=&quot;latex&quot; /&gt;. (It would also distribute the exponent, then expand to &lt;img src=&quot;http://s3.wordpress.com/latex.php?latex=e%5E%7Bxy%7De%5E%7Bxz%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{xy}e^{xz}&quot; title=&quot;e^{xy}e^{xz}&quot; class=&quot;latex&quot; /&gt;).  Now, you can choose to only distribute multiplication over addition, and to only do it on the top level.  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automatic expansion of exponents&lt;/strong&gt;&lt;br /&gt;
I mentioned above that expand would expand &lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=e%5E%7Bxy%2Bxz%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{xy+xz}&quot; title=&quot;e^{xy+xz}&quot; class=&quot;latex&quot; /&gt; to &lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=e%5E%7Bxy%7De%5E%7Bxz%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{xy}e^{xz}&quot; title=&quot;e^{xy}e^{xz}&quot; class=&quot;latex&quot; /&gt;. Actually, in the current version of SymPy, this would not happen because it automatically combines exponents like &lt;img src=&quot;http://s3.wordpress.com/latex.php?latex=e%5E%7Bxy%7De%5E%7Bxz%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{xy}e^{xz}&quot; title=&quot;e^{xy}e^{xz}&quot; class=&quot;latex&quot; /&gt; to &lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=e%5E%7Bxy%2Bxz%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{xy+xz}&quot; title=&quot;e^{xy+xz}&quot; class=&quot;latex&quot; /&gt;.  &lt;/p&gt;
&lt;p&gt;I have been working for the past few weeks changing this as per &lt;a href=&quot;http://code.google.com/p/sympy/issues/detail?id=252&amp;amp;q=asmeurer&quot;&gt;issue 252&lt;/a&gt;.   I have been mostly successful, except there are two nseries tests that I cannot figure out how to fix.  If you think you know why nseries would fail without automatic combining of exponents, please let me know.  The expand branch in my GitHub repo also has the exponent patches in it, if you want to see what I mean.  &lt;/p&gt;
&lt;p&gt;Because some things, like the gruntz algorithm, rely on automatic combining of exponents, so I had to rework powsimp, which combined exponents but also combined bases (&lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=x%5Eay%5Ea&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;x^ay^a&quot; title=&quot;x^ay^a&quot; class=&quot;latex&quot; /&gt; to &lt;img src=&quot;http://s3.wordpress.com/latex.php?latex=%28xy%29%5Ea&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;(xy)^a&quot; title=&quot;(xy)^a&quot; class=&quot;latex&quot; /&gt;) so that it could only combine exponents.  That way, I could use it to get the old behavior where I needed it.  Use &lt;code&gt;powsimp(expr, deep=True, combine='exp')&lt;/code&gt; in my branch to get the old automatic behavior.  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So what does this have to do with ODEs?&lt;/strong&gt;&lt;br /&gt;
When I started working on separable equations, I wanted to be able to separate things like &lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=e%5E%7Bx%2By%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{x+y}&quot; title=&quot;e^{x+y}&quot; class=&quot;latex&quot; /&gt; into &lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=e%5Exe%5Ey&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^xe^y&quot; title=&quot;e^xe^y&quot; class=&quot;latex&quot; /&gt;, which is separable in &lt;img src=&quot;http://s3.wordpress.com/latex.php?latex=x&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;x&quot; title=&quot;x&quot; class=&quot;latex&quot; /&gt; and &lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=y&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;y&quot; title=&quot;y&quot; class=&quot;latex&quot; /&gt;.  So that is why I needed to refactor expand (I don&amp;#8217;t, for example, want to change &lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=x%28y%2B1%29&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;x(y+1)&quot; title=&quot;x(y+1)&quot; class=&quot;latex&quot; /&gt; to &lt;img src=&quot;http://s3.wordpress.com/latex.php?latex=xy%2Bx&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;xy+x&quot; title=&quot;xy+x&quot; class=&quot;latex&quot; /&gt; because the later is not easily recognizable as separate.  Doing this or course required that SymPy didn&amp;#8217;t automatically put back together &lt;img src=&quot;http://s1.wordpress.com/latex.php?latex=e%5Exe%5Ey&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^xe^y&quot; title=&quot;e^xe^y&quot; class=&quot;latex&quot; /&gt; into &lt;img src=&quot;http://s2.wordpress.com/latex.php?latex=e%5E%7Bx%2By%7D&amp;#038;bg=ffffff&amp;#038;fg=333333&amp;#038;s=0&quot; alt=&quot;e^{x+y}&quot; title=&quot;e^{x+y}&quot; class=&quot;latex&quot; /&gt;, so I had to fix that issue as well.  &lt;/p&gt;
&lt;p&gt;I am almost finished implementing separable (there are some match issues that I will blog about later whenever I get them straightened out), and the only thing that is holding all of this back is those nseries tests.  If anyone is familiar with how those algorithms work and which parts require automatic combining of exponents, that would be great.  &lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/asmeurersympy.wordpress.com/172/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/asmeurersympy.wordpress.com/172/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/asmeurersympy.wordpress.com/172/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/asmeurersympy.wordpress.com/172/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/asmeurersympy.wordpress.com/172/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/asmeurersympy.wordpress.com/172/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/asmeurersympy.wordpress.com/172/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/asmeurersympy.wordpress.com/172/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/asmeurersympy.wordpress.com/172/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/asmeurersympy.wordpress.com/172/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=asmeurersympy.wordpress.com&amp;amp;blog=7467151&amp;amp;post=172&amp;amp;subd=asmeurersympy&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 21 Jun 2009 04:48:54 +0000</pubDate>
</item>
<item>
	<title>Fabian Pedregosa: Reading CNF files</title>
	<guid>http://fseoane.net/blog/?p=151</guid>
	<link>http://fseoane.net/blog/?p=151</link>
	<description>&lt;p&gt;The DIMACS CNF file format is used to define a Boolean expression, written in conjunctive normal form, that may be used as an example of the satisfiability problem.&lt;/p&gt;
&lt;p&gt;The new logic module (sympy.logic) can read the content of a cnf file and transform it into a boolean expression suitable for use in other methods.&lt;/p&gt;
&lt;p&gt;For example, let quinn.cnf be a file with the following content:&lt;/p&gt;
&lt;pre&gt;
c  an example from Quinn's text, 16 variables and 18 clauses.
c Resolution: SATISFIABLE
c
p cnf 16 18
  1    2  0
 -2   -4  0
  3    4  0
 -4   -5  0
  5   -6  0
  6   -7  0
  6    7  0
  7  -16  0
  8   -9  0
 -8  -14  0
  9   10  0
  9  -10  0
-10  -11  0
 10   12  0
 11   12  0
 13   14  0
 14  -15  0
 15   16  0
&lt;/pre&gt;
&lt;p&gt;Then we can load the file and test for satisfiability:&lt;/p&gt;
&lt;pre&gt;
In [1]: from sympy.logic.utilities.dimacs import load_file

In [2]: expr = load_file(&quot;quinn.cnf&quot;)

In [3]: from sympy.logic.inference import satisfiable

In [4]: satisfiable(expr)
Out[4]:
{cnf_1: True, cnf_11: False, cnf_12: True, cnf_13: True, cnf_14: False, cnf_15: False, cnf_16: True,
 cnf_2: False, cnf_3: True, cnf_4: False, cnf_5: True, cnf_6: True, cnf_7: True, cnf_8: True, cnf_9:
 True}
&lt;/pre&gt;
&lt;p&gt;References: &lt;a href=&quot;http://people.sc.fsu.edu/~burkardt/data/cnf/cnf.html&quot;&gt;more on the DIMACS CNF file format&lt;/a&gt;&lt;br /&gt;
BUGS: For large files like &lt;a href=&quot;http://people.sc.fsu.edu/~burkardt/data/cnf/dubois22.cnf&quot;&gt;this one&lt;/a&gt; it exits prematurely with an error in the DPLL algorithm.&lt;/p&gt;</description>
	<pubDate>Sat, 20 Jun 2009 14:27:27 +0000</pubDate>
</item>
<item>
	<title>Tyler Laing: Movie Module Progress: Week 5</title>
	<guid>http://www.oddco.ca/zeroth/zblog/?p=226</guid>
	<link>http://feedproxy.google.com/~r/ZerothCode/~3/aZtP9UXuhio/</link>
	<description>So this is it, week 5 of 12/13 weeks. Almost halfway through the summer of code!
So, I managed to get sound working properly, with only minimal skips of quality issues. 

I fixed the buffer issues I mentioned before, so sound sounds great.
As well, I worked on several other issues within the source code, various bugs, [...]</description>
	<pubDate>Fri, 19 Jun 2009 21:40:44 +0000</pubDate>
</item>
<item>
	<title>Freddie Witherden: We Have a Project!</title>
	<guid>tag:blogger.com,1999:blog-7648717043547744590.post-7392129744677646055</guid>
	<link>http://gsoc-mathtex.blogspot.com/2009/06/we-have-project.html</link>
	<description>Today I got around to creating a Google Code project for Mathtex in preparation for the pending source code commits. The project can be found here: http://code.google.com/p/mathtex/&lt;br /&gt;&lt;br /&gt;Don't expect the front page to say like that for long, however!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7648717043547744590-7392129744677646055?l=gsoc-mathtex.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 19 Jun 2009 20:03:27 +0000</pubDate>
	<author>noreply@blogger.com (Freddie Witherden)</author>
</item>
<item>
	<title>Fabian Pedregosa: Logic module merged</title>
	<guid>http://fseoane.net/blog/?p=150</guid>
	<link>http://fseoane.net/blog/?p=150</link>
	<description>&lt;p&gt;Yesterday I finally merged the logic module in sympy&amp;#8217;s official master branch, and should be released together with SymPy 0.6.5.&lt;/p&gt;
&lt;p&gt;Next thing to do: profile the code and write some docs before the release.&lt;/p&gt;</description>
	<pubDate>Fri, 19 Jun 2009 10:23:41 +0000</pubDate>
</item>
<item>
	<title>Freddie Witherden: Rendering and Backends</title>
	<guid>tag:blogger.com,1999:blog-7648717043547744590.post-7575807089805864415</guid>
	<link>http://gsoc-mathtex.blogspot.com/2009/06/rendering-and-backends.html</link>
	<description>As well as familiarising myself with the existing Mathtex code I have also been considering how to actually go about rendering parsed expressions. Matplotlib currently has a very rich collection of backends which all provide significantly more functionality than required by Mathtex — which only needs glyph setting and line drawing.&lt;br /&gt;&lt;br /&gt;One of the outstanding issues, however, is that of FreeType. Although there are bindings for virtually every other programming language there are currently none for Python. (There are, however, two failed attempts.) As a result of this Matplotlib includes its own wrapper &lt;span&gt;FT2Font&lt;/span&gt; which is C++ based.&lt;br /&gt;&lt;br /&gt;In the current implementation of Mathtex &lt;span&gt;all&lt;/span&gt; backends use this FreeType wrapper to get glyph metrics (width, height, advance, etc). Some backends then go on to use FreeType for the rendering, while others (such as PDF and SVG) do not. As glyph metrics are, for the most part, invariant I have been considering putting them in a table as opposed to reading them from the font file each time. This is similar to how TeX operates.&lt;br /&gt;&lt;br /&gt;The immediate consequence of this would be that FreeType would not be a &lt;span&gt;hard&lt;/span&gt; dependency — if one wishes to only produce PDF/SVG files (or use backends which use FreeType &lt;span&gt;indirectly&lt;/span&gt;). However, it &lt;span&gt;might&lt;/span&gt; lead to reduced rendering quality for bitmapped backends. (I am still investigating this; the reason being that FreeType provides hinted metrics, while a table would not.)&lt;br /&gt;&lt;br /&gt;Assuming that there is no perceivable difference then it is likely that for most of the default fonts a look-up table will be produced. This will allow for separation of the  parsing/rendering stages: one piece of code can parse the expression and produce a list of glyphs (at specific sizes, styles and locations) and another independent piece of code can then go onto render it. Furthermore this would make it easy for people to make use of Mathtex in their own applications, but just asking for a stream of glyphs/drawing ops and then rendering it themselves.&lt;br /&gt;&lt;br /&gt;For the bitmapped backend (arguably the most common) it is likely to be written in C and abstracting away all of the FreeType/compositing operations — which are more natural in C than Python — and then using &lt;span&gt;Cython&lt;/span&gt; to create a Python wrapper for it.&lt;br /&gt;&lt;br /&gt;If both of these prove viable then they will serve the purpose of sidestepping the FreeType + Python issue entirely. Of course, I think most agree that a well maintained FreeType wrapper for Python is the way to go (and is something I will consider if I have time at the end of my project).&lt;br /&gt;&lt;br /&gt;Otherwise my current plan is to use &lt;span&gt;FT2Font&lt;/span&gt; from Matplotlib as a wrapper around FreeType. Expect an answer in the next couple of days :)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7648717043547744590-7575807089805864415?l=gsoc-mathtex.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Jun 2009 20:17:56 +0000</pubDate>
	<author>noreply@blogger.com (Freddie Witherden)</author>
</item>
<item>
	<title>Kurt Smith: freemalloc</title>
	<guid>http://fortrancython.wordpress.com/?p=18</guid>
	<link>http://fortrancython.wordpress.com/2009/06/18/update/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I&amp;#8217;m glad to say that the f2cy part of the GSoC miterm evaluation is functional.  By that I mean it can wrap functions &amp;amp; subroutine subprograms (not in modules, yet) with any integer or real argument.  The testing framework is all in place, and all tests pass.  There are still many things that I&amp;#8217;d like to add before the midterm, but the basics are all there, and the additions should be fairly modular and easy to do.  The code could use some cleanup, but it shouldn&amp;#8217;t be too bad.&lt;/p&gt;
&lt;p&gt;Here are the some additions I&amp;#8217;d like to make before the midterm if time allows &amp;#8212; nothing to be inferred by the ordering except where noted:&lt;/p&gt;
&lt;p&gt;1) Support locally defined parameter kind-types (easy), e.g.:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;

subroutine foo(a,b)
    integer :: DP
    parameter  (DP = 8 )
    integer, parameter :: SP = 4
    real(kind=DP), intent(inout) :: a
    real(kind=SP), intent(in) :: b
    ! ...
end subroutine
&lt;/pre&gt;
&lt;p&gt;2) Next, support use&amp;#8217;d module kind-type parameters (easy):&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;

module ktps
  integer :: KTP
  parameter (KTP = 10)
end module ktps
integer function bar(a)
  use ktps
  real(kind=KTP), intent(inout) :: a
  ! ...
end function
&lt;/pre&gt;
&lt;p&gt;3) Next, support module-scoped functions (some corner cases to consider, a bit harder) &amp;#8212; just to give you an idea&amp;#8230;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;

module container
  use ktps, local_kpts =&amp;gt; KTPS
  integer, parameter :: C_KTPS = local_ktps
  contains
  subroutine mod_subr(a)
    use othermod, rename_p =&amp;gt; orig_p
    use yetanother, only: yetanother_p =&amp;gt; xxx
    implicit none
    integer(kind=C_KTPS) :: a
    integer(kind=other_mod_param), intent(out) :: b
    integer(kind=rename_p) :: c
    ! ...
  end subroutine
end module
&lt;/pre&gt;
&lt;p&gt;4) Logical &amp;lt;-&amp;gt; Integer conversions (probably before the above)&lt;/p&gt;
&lt;p&gt;The &amp;#8216;logical&amp;#8217; type is basically a specially typed integer &amp;#8212; whenever a subprogram&amp;#8217;s argument is a logical, its C wrapper should use the equivalently-sized integer and do a conversion before &amp;amp; after the call.&lt;/p&gt;
&lt;p&gt;5) Character arguments:&lt;/p&gt;
&lt;p&gt;It seems that these are functionally equivalent to one-dimensional arrays, with a few bugaboos to watch out for.  I&amp;#8217;m lumping them in with the second-half of the project, since after working with integer/real arrays I&amp;#8217;ll have a better feel as to the best way to handle character arrays.&lt;/p&gt;
&lt;p&gt;6) Complex arguments:&lt;/p&gt;
&lt;p&gt;Since we can&amp;#8217;t assume C99 _Complex support, these need to be passed in as structs, converted to the native complex type in fortran, and converted back on return.  Once (4) is done, I&amp;#8217;ll have a better feel for these.  I&amp;#8217;m putting them off until the second half, since they&amp;#8217;re equivalent to passing derived types.&lt;/p&gt;
&lt;p&gt;Cython side:&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m turning my full attention to tickets 299, 300 &amp;amp; 178 now, provided that the recent intense discussion about a native Cython array type leave these tickets unchanged (see http://article.gmane.org/gmane.comp.python.cython.devel/6654).&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fortrancython.wordpress.com/18/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fortrancython.wordpress.com/18/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fortrancython.wordpress.com/18/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fortrancython.wordpress.com/18/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fortrancython.wordpress.com/18/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fortrancython.wordpress.com/18/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fortrancython.wordpress.com/18/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fortrancython.wordpress.com/18/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fortrancython.wordpress.com/18/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fortrancython.wordpress.com/18/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fortrancython.wordpress.com&amp;amp;blog=7448735&amp;amp;post=18&amp;amp;subd=fortrancython&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Jun 2009 18:34:32 +0000</pubDate>
</item>
<item>
	<title>Wojciech Walczak: gminick</title>
	<guid>http://gminick.wordpress.com/?p=31</guid>
	<link>http://gminick.wordpress.com/2009/06/18/next-step-openid-logging/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;OK, it is now possible to login with one&amp;#8217;s OpenID login after the docs and webapp for serving the documentation were generated. It took me some time to make it work, mainly because Paste&amp;#8217;s module for OpenID logging &amp;#8211; paste.auth.open_id &amp;#8211; is rather out of date.&lt;/p&gt;
&lt;p&gt;What I needed to do to make it work was to put together the WSGI architecture and the OpenID logging logic. The examples from python-openid package were very helpful, though. It is working already, but there are some problems I still need to resolve. To name a few: add a way to distinguish admins from ordinary users (anyone can log in, but only choosen users have special rights), add a &amp;#8220;logged in as&amp;#8230;&amp;#8221; line to the templates (the problem here is that the docs are used as templates twice: when Sphinx generates the docs and later on when webapp is displaying them).&lt;/p&gt;
&lt;p&gt;Nevertheless, you can try it just as described in earlier posts. Also, until June 22 a form for posting comments should be ready. Seems like busy weekend! &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/gminick.wordpress.com/31/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gminick.wordpress.com/31/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/gminick.wordpress.com/31/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/gminick.wordpress.com/31/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/gminick.wordpress.com/31/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/gminick.wordpress.com/31/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/gminick.wordpress.com/31/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/gminick.wordpress.com/31/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/gminick.wordpress.com/31/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/gminick.wordpress.com/31/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gminick.wordpress.com&amp;amp;blog=7588592&amp;amp;post=31&amp;amp;subd=gminick&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Jun 2009 18:00:13 +0000</pubDate>
</item>
<item>
	<title>James Pruitt</title>
	<guid>tag:blogger.com,1999:blog-724252239441763316.post-3531292244659953513</guid>
	<link>http://subdev.blogspot.com/2009/06/after-contacting-josiah-carlson-author.html</link>
	<description>After contacting Josiah Carlson, author of the activestate patch for asynchronous I/O in subprocess.Popen, he was more than happy to release the code into the public domain so my license conflicts with his patch are now resolved. Some of the tests I wrote for his patch have failed and he agreed to take a look at what I wrote to help me get the tests running properly.&lt;br /&gt;&lt;br /&gt;Upon running my tests, he realized that pywin32 is not part of the standard library which complicates my project a bit as far as Windows is concerned so I am now looking for alternatives to Josiah Carlson's asynchronous I/O patch for subprocess.Popen on Windows. If I cannot find an alternative, I will be using cTypes with the parts of Mark Hammond's code that I need, license permitting. Any suggestions are greatly appreciated.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/724252239441763316-3531292244659953513?l=subdev.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Jun 2009 15:30:00 +0000</pubDate>
	<author>noreply@blogger.com (Eric)</author>
</item>
<item>
	<title>Dale Peterson: NSF Success!</title>
	<guid>http://dlpeterson.com/blog/?p=70</guid>
	<link>http://dlpeterson.com/blog/?p=70</link>
	<description>&lt;p&gt;Today I found out that our NSF proposal to the control systems division was accepted!  This means I will be funded for two years to study and work bicycles and control!  This is a dream come true for me and I am very excited about it.&lt;/p&gt;
&lt;p&gt;Soon, I hope to use PyDy to derive the model of the bicycle for our studies.  Once trigsimp() is made better, it will be fully capable of this &lt;img src=&quot;http://dlpeterson.com/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</description>
	<pubDate>Wed, 17 Jun 2009 19:19:42 +0000</pubDate>
</item>
<item>
	<title>James Pruitt: My Original Proposal</title>
	<guid>tag:blogger.com,1999:blog-724252239441763316.post-3461272890022489277</guid>
	<link>http://subdev.blogspot.com/2009/06/my-original-proposal.html</link>
	<description>My proposal was never posted so I am putting it up now.&lt;br /&gt;&lt;br /&gt;Proposal&lt;br /&gt;&lt;br /&gt;    * A long running issue with the subprocess module is the handling of asynchronous io (http://bugs.python.org/issue1191964, http://ivory.idyll.org/blog/feb-07/problems-with-subprocess). Several patches have been proposed and several alternative solutions suggested. The patches and the alternative solutions will be implemented initially for 2.7 and then for 3.0. The subprocess test suite will be augmented to fully test this new functionality.&lt;br /&gt;&lt;br /&gt;    * Reimplement the commands module in terms of subprocess functions (http://ivory.idyll.org/blog/mar-07/replacing-commands-with-subprocess). Since the commands module will soon deprecated, this will provide a platform independent transition to those still using the commands module.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The modifications to the subprocess module will be presented initially for code review on Rietveld. A message will be added to the above referenced issues so that all interested parties can comment.&lt;br /&gt;&lt;br /&gt;Schedule&lt;br /&gt;&lt;br /&gt;Start of program:&lt;br /&gt;&lt;br /&gt;    * Implement command modules using subprocess&lt;br /&gt;    * Extend test suite&lt;br /&gt;    * Post code review&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Midterm evaluation:&lt;br /&gt;&lt;br /&gt;    * Address issues from code review and post patch&lt;br /&gt;    * Synthesize the patches from the above links&lt;br /&gt;    * Extend test suite&lt;br /&gt;    * Post code review&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Final evaluation:&lt;br /&gt;&lt;br /&gt;    * Address issues from code review and post patch&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/724252239441763316-3461272890022489277?l=subdev.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 17 Jun 2009 15:50:00 +0000</pubDate>
	<author>noreply@blogger.com (Eric)</author>
</item>
<item>
	<title>Kang Zhang: Keyring Lib on OSX</title>
	<guid>tag:blogger.com,1999:blog-2429166803430996285.post-2208781238304973385</guid>
	<link>http://kangzhang-en.blogspot.com/2009/06/keyring-lib-on-osx.html</link>
	<description>&lt;a href=&quot;http://bitbucket.org/kang/python-keyring-lib/&quot; target=&quot;_blank&quot;&gt;Python Keyring Lib&lt;/a&gt;&amp;nbsp;has been created on &lt;a href=&quot;http://bitbucket.org/&quot; target=&quot;_blank&quot;&gt;bitbucket.org&lt;/a&gt;. Anyone who has interest in this project can check out the latest code from that address using &lt;a href=&quot;http://www.selenic.com/mercurial&quot; target=&quot;_blank&quot;&gt;Mercurial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://draft.blogger.com/post-edit.g?blogID=2429166803430996285&amp;amp;postID=2208781238304973385&quot;&gt;&lt;/a&gt;We've finished the basic part on Mac OS X. It supports getting and setting password in &lt;a href=&quot;http://en.wikipedia.org/wiki/Keychain_%28Mac_OS%29&quot; target=&quot;_blank&quot;&gt;Keychain&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Following screenshots show a demo. The demo stored the password, and read it from the keychain. Notice that OS X prompted a dialog to let the user unlock the keychain.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_u84Z54raibU/SjjMEmXdF3I/AAAAAAAABKw/g4aLet18Y4Q/s1600-h/keyring-osx-demo-1.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_u84Z54raibU/SjjMEmXdF3I/AAAAAAAABKw/g4aLet18Y4Q/s320/keyring-osx-demo-1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_u84Z54raibU/SjjMI-ImhmI/AAAAAAAABK4/xqzC1MaibUw/s1600-h/keyring-osx-demo-2.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_u84Z54raibU/SjjMI-ImhmI/AAAAAAAABK4/xqzC1MaibUw/s320/keyring-osx-demo-2.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The source code of this demo can be accessed from test/demo.py in the repository.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2429166803430996285-2208781238304973385?l=kangzhang-en.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 17 Jun 2009 11:05:00 +0000</pubDate>
	<author>Jobo.ZH@gmail.com (Kang)</author>
</item>
<item>
	<title>Priit Laes: GSoC Week 2/3</title>
	<guid>tag:plaes.org,2009-06-16:,blog/entry;2009/6/16/gsoc-week-2-3</guid>
	<link>http://plaes.org/blog/2009/6/16/gsoc-week-2-3</link>
	<description>&lt;p&gt;As I have still exam session in progress, I haven't had much motivation to write about my almost non-existent progress with GSoC.
&lt;/p&gt;
&lt;p&gt;So, school first: I have still one exam left - Optics, which is on 19th and will be hard as some of the stuff we are required to know does not even exist (tunnel effect) in the &lt;a href=&quot;http://www.amazon.com/gp/product/0805385665?ie=UTF8&amp;amp;tag=w0dd-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0805385665&quot;&gt;Hecht's &quot;Optics&quot;&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=w0dd-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0805385665&quot; height=&quot;1&quot; width=&quot;1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;. (Although I might be wrong, as I only have 2nd edition and later editions might have updates). Fortunately I have almost 100% of the lecture notes available.
   After the exam, either on Friday or Saturday, I will be moving back &lt;a href=&quot;http://en.wikipedia.org/wiki/Saaremaa&quot;&gt;home&lt;/a&gt; (which is ~1 day of travelling) and then I can really start with GSoC.
&lt;/p&gt;
&lt;p&gt;Now, GSoC..
&lt;/p&gt;
&lt;p&gt;As some people have had trouble connecting to my &lt;a href=&quot;http://plaes.org&quot;&gt;personal server&lt;/a&gt; (Who said that free countries do not have internet censorship?), I created a mirror of my &lt;a href=&quot;https://code.plaes.org/git/sympy.git/&quot;&gt;private Sympy repo&lt;/a&gt; on &lt;a href=&quot;http://github.com/plaes/sympy&quot;&gt;github&lt;/a&gt;.
   There you can find the following two branches I consider upstream quality:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://github.com/plaes/sympy/tree/py3k&quot;&gt;py3k&lt;/a&gt; - some preliminary Python3K porting, which gets rid of all the &lt;code&gt;dict.has_key()&lt;/code&gt; that were reported during test phase. (So some still remain).
&lt;/p&gt;

 &lt;/li&gt;

 &lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://github.com/plaes/sympy/tree/doc-fixes&quot;&gt;doc-fixes&lt;/a&gt; - I ran into few problems while tried to build Sympy's documentation - most of them were Sphinx warnings, although ran into some errors too. So please review and comment.
&lt;/p&gt;

 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There's also my &lt;code&gt;pde-wip&lt;/code&gt; branch, but currently I'm not very happy with that approach...
&lt;/p&gt;
&lt;p&gt;Thanks Ondrej for pushing me to keep posting :)
&lt;/p&gt;</description>
	<pubDate>Tue, 16 Jun 2009 11:33:51 +0000</pubDate>
</item>
<item>
	<title>Dale Peterson: sin, cos, tan, cot, sec, csc</title>
	<guid>http://dlpeterson.com/blog/?p=66</guid>
	<link>http://dlpeterson.com/blog/?p=66</link>
	<description>&lt;p&gt;In my trigsimp branch of Sympy, I&amp;#8217;ve modified all the .eval methods of sin(), cos(), tan(), and cot() so that they give the same behavior of Mathematica.  Next on the list is to implement sec() and csc() in a similar fashion.  Currently sec() and csc() do not exist in Sympy, so I will have to familiarize myself with all the other code that is in the trig functions that do exist.  It seems to me that much of the code is redundant and may not be tested for, so I will attempt to do some housecleaning in that section while I am at it.  The rule based trig simplification should then work fine, I have already started some basic tests of applying the rules that Fu et al. show in their examples, and Sympy handles them just fine.  &lt;/p&gt;
&lt;p&gt;Ondrej also helped me get trigsimp branch up and running on github:&lt;br /&gt;
git://github.com/hazelnusse/sympy.git&lt;/p&gt;
&lt;p&gt;My trigsimp branch is there and I have created an issue for it here:&lt;br /&gt;
http://code.google.com/p/sympy/issues/detail?id=1475&lt;/p&gt;</description>
	<pubDate>Tue, 16 Jun 2009 02:29:02 +0000</pubDate>
</item>
<item>
	<title>M. Shuaib Khan: Gcov and Python3k C coverage</title>
	<guid>tag:blogger.com,1999:blog-4313447571103503761.post-6639221208123018037</guid>
	<link>http://feedproxy.google.com/~r/ShuaibsGsoc2009ProjectBlog/~3/EvGwupE45UQ/gcov-and-python3k-c-coverage.html</link>
	<description>Gcov is a very handy tool. I've been using it for a while now to manually trace the C code coverage of different Python 2.6 modules.&lt;br /&gt;&lt;span&gt;&lt;br /&gt;Gcov Usage:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;To use gcov with a C source file for code coverage, you have to compile your code with GCC and pass it two arguments at the compile time, &quot;-fprofile-arcs -ftest-coverage&quot;. For example if you have a source file named &quot;main.c&quot;, you would compile it as:&lt;br /&gt;&lt;br /&gt;$gcc -o main -fprofile-arcs -ftest-coverage main.c&lt;br /&gt;&lt;br /&gt;The compiler will compile your source file and produce another file named &quot;main.gcno&quot;. Now run:&lt;br /&gt;&lt;br /&gt;$gcov main&lt;br /&gt;&lt;br /&gt;You will see that gcov will report 0% code coverage as you haven't run the compiled code yet. Run the compiled program and then use gcov for code coverage report again:&lt;br /&gt;&lt;br /&gt;$./main&lt;br /&gt;$gcov main&lt;br /&gt;&lt;br /&gt;Depending on how much code in your program is executed, gcov will report the code coverage percentage, and will also produce two new files named &quot;main.c.gcov&quot; and &quot;main.gcda&quot;. &quot;main.c.gcov&quot; is the file that holds the record of what lines were executed in your source file and how many times.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Using Gcov with Python:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is a bit of a problem with Gcov. You need to statically link all of your code into your program in order to get code coverage analysis on it. Python doesn't do that automatically, and there is no easy configure switch to do it. So you have to manually play with the configurations to get different modules statically linked in. To compile a module statically, one way to do is to copy its entry from Modules/Setup into Modules/Setup.local, and put it under a &quot;*static*&quot; heading (without the quotes).&lt;br /&gt;&lt;br /&gt;Lets say you want to compile the &quot;mmap&quot; module statically. First just start your python interpreter and import mmap. Now check for the __file__ attribute of the module:&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt;import mmap&lt;br /&gt;&gt;&gt;&gt;print mmap.__file__&lt;br /&gt;&lt;br /&gt;The interpreter will print the module's location on the hard drive from where it was imported. Lets compile this module statically into the python interpreter now. We copy its entry from the Modules/Setup file in the python source tree into Modules/Setup.local, and put it under a *static* heading:&lt;br /&gt;&lt;br /&gt;*static*&lt;br /&gt;mmap mmapmodule.c -I$(prefix)/include -fprofile-arcs -ftest-coverage -L$(exec_prefix)/lib -lz -lgcov&lt;br /&gt;&lt;br /&gt;The part after mmapmodule.c is to make this module work with gcov so we could get coverage report on it. Now compile your python interpreter and look for mmap's __file__ attribute again. This time you will see no such attribute defined for the module, which means it is built in this time.&lt;br /&gt;&lt;br /&gt;Changing current directory into Modules and listing files will show that gcov has produced its data files for the mmapmodule. Run gcov on it to get the current coverage reports.&lt;br /&gt;&lt;br /&gt;$gcov mmapmodule&lt;br /&gt;&lt;br /&gt;You might get some code coverage for it since the import of the module into your python environment runs some of the initialization code. Had you run gcov on it without importing it first, you would have got 0% code coverage. Here is what I get:&lt;br /&gt;&lt;br /&gt;File '/usr/include/sys/sysmacros.h'&lt;br /&gt;Lines executed:0.00% of 6&lt;br /&gt;/usr/include/sys/sysmacros.h:creating 'sysmacros.h.gcov'&lt;br /&gt;&lt;br /&gt;File '/usr/include/sys/stat.h'&lt;br /&gt;Lines executed:0.00% of 12&lt;br /&gt;/usr/include/sys/stat.h:creating 'stat.h.gcov'&lt;br /&gt;&lt;br /&gt;File './Modules/mmapmodule.c'&lt;br /&gt;Lines executed:0.00% of 476&lt;br /&gt;./Modules/mmapmodule.c:creating 'mmapmodule.c.gcov'&lt;br /&gt;./Modules/mmapmodule.c:cannot open source file&lt;br /&gt;&lt;br /&gt;Now lets run the mmap testing code and see how much of the actual code this test suite exercises:&lt;br /&gt;&lt;br /&gt;$./python Lib/test/test_mmap.py -v&lt;br /&gt;$cd Modules&lt;br /&gt;$gcov mmapmodule&lt;br /&gt;&lt;br /&gt;File '/usr/include/sys/sysmacros.h'&lt;br /&gt;Lines executed:0.00% of 6&lt;br /&gt;/usr/include/sys/sysmacros.h:creating 'sysmacros.h.gcov'&lt;br /&gt;&lt;br /&gt;File '/usr/include/sys/stat.h'&lt;br /&gt;Lines executed:0.00% of 12&lt;br /&gt;/usr/include/sys/stat.h:creating 'stat.h.gcov'&lt;br /&gt;&lt;br /&gt;File './Modules/mmapmodule.c'&lt;br /&gt;Lines executed:71.64% of 476&lt;br /&gt;./Modules/mmapmodule.c:creating 'mmapmodule.c.gcov'&lt;br /&gt;./Modules/mmapmodule.c:cannot open source file&lt;br /&gt;&lt;br /&gt;71.64% of the module is exercised by the test suite.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;What's Next:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have traced the code coverage of a number of modules by now. Next is to look for a way to easily compile a major number of modules statically into the Python interpreter so to easily get an automated code coverage report on it. This can be done by uncommenting appropriate entries for the modules in Module/Setup file, but I've been getting into a few problems with it right now. Solving that is the first task, and then the part of making figleaf do all of this automatically.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4313447571103503761-6639221208123018037?l=shuaibatgsoc2009.blogspot.com&quot; /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ShuaibsGsoc2009ProjectBlog/~4/EvGwupE45UQ&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 16 Jun 2009 02:19:52 +0000</pubDate>
	<author>noreply@blogger.com (M. Shuaib Khan)</author>
</item>
<item>
	<title>Skipper Seabold: Design Issues: Understanding Python's super</title>
	<guid>tag:blogger.com,1999:blog-128274497687662608.post-3792839399257055802</guid>
	<link>http://scipystats.blogspot.com/2009/06/design-issues-understanding-pythons.html</link>
	<description>The current statistical models package is housed in the &lt;a href=&quot;http://neuroimaging.scipy.org/site/index.html&quot;&gt;NiPy, Neuroimaging in Python,&lt;/a&gt; project.  Right now, it is designed to rely on Python's built-in super to handle class inheritance.  This post will dig a little more into the super function and what it means for the design of the project and future extensions.  Note that there are plenty of good places to learn about super and that this post is to help me as much as anyone else. [*Edit: With this in mind, I direct you to &lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=236275&quot;&gt;Things to Know about Python Super&lt;/a&gt; if you really want a deeper and &lt;span&gt;correct&lt;/span&gt; understanding of super.  This post is mainly a heuristic approach that has helped me in understanding basic usage of super.]  You can find the documentation for super &lt;a href=&quot;http://docs.python.org/library/functions.html#super&quot;&gt;here&lt;/a&gt;.  If this is a bit confusing, it  will, I hope, become clearer after I demonstrate the usage.&lt;br /&gt;&lt;br /&gt;First, let's take a look at how super actually works for the simple case of single inheritance (right now, we are not planning on using multiple inheritance in the project) and an __init__ chain (note that super can call any of its parent class's methods, but using __init__ is my current use case).&lt;br /&gt;&lt;br /&gt;The following examples were adapted from some code provided by mentors (thank you!).&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;class A(object):&lt;br /&gt;    def __init__(self, a):&lt;br /&gt;        self.a = a&lt;br /&gt;        print 'executing A().__init__'&lt;br /&gt;&lt;br /&gt;class B(A):&lt;br /&gt;    def __init__(self, a):&lt;br /&gt;        self.ab = a*2&lt;br /&gt;        print 'executing B().__init__'&lt;br /&gt;        super(B,self).__init__(a)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class C(B):&lt;br /&gt;    def __init__(self, a):&lt;br /&gt;        self.ac = a*3&lt;br /&gt;        print 'executing C().__init__'&lt;br /&gt;        super(C,self).__init__(a)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now let's have a look at creating an instance of C.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [2]: cinst = C(10)&lt;br /&gt;executing C().__init__&lt;br /&gt;executing B().__init__&lt;br /&gt;executing A().__init__&lt;br /&gt;&lt;br /&gt;In [3]: vars(cinst)&lt;br /&gt;Out[3]: {'a': 10, 'ab': 20, 'ac': 30}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;That seems simple enough.  Creating an instance of C with a = 10 will also give C the attributes of B(10) and A(10).  This means our one instance of C has three attributes: cinst.ac, cinst.ab, cinst.a.  The latter two were created by its parent classes (or superclasses) __init__ method.  Note that A is also a new-style class.  It subclasses the 'object' type.&lt;br /&gt;&lt;br /&gt;The actual calls to super pass the generic class 'C' and a handle to that class 'self', which is 'cinst' in our case.  Super returns the literal parent of the class instance C since we passed it 'self'.  It should be noted that A and B were created when we initialized cinst and are, therefore, 'bound' class objects (bound to cinst in memory through the actual instance of class C) and not referring to the class A and class B instructions defined at the interpreter (assuming you are typing along at the interpreter). &lt;br /&gt;&lt;br /&gt;Okay now let's define a few more classes to look briefly at multiple inheritance.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;class D(A):&lt;br /&gt;    def __init__(self, a):&lt;br /&gt;        self.ad = a*4&lt;br /&gt;        print 'executing D().__init__'&lt;br /&gt;        # if super is commented out then __init__ chain ends&lt;br /&gt;        #super(D,self).__init__(a)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class E(D):&lt;br /&gt;    def __init__(self, a):&lt;br /&gt;        self.ae = a*5&lt;br /&gt;        print 'executing E().__init__'&lt;br /&gt;        super(E,self).__init__(a)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Note that the call to super in D is commented out.  This breaks the __init__ chain.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [4]: einst = E(10)&lt;br /&gt;executing E().__init__&lt;br /&gt;executing D().__init__&lt;br /&gt;&lt;br /&gt;In [5]: vars(einst)&lt;br /&gt;Out[5]: {'ad': 40, 'ae': 50}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If we uncomment the super in D, we get as we would expect&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [6]: einst = E(10)&lt;br /&gt;executing E().__init__&lt;br /&gt;executing D().__init__&lt;br /&gt;executing A().__init__&lt;br /&gt;&lt;br /&gt;In [7]: vars(einst)&lt;br /&gt;Out[7]: {'a': 10, 'ad': 40, 'ae': 50}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ok that's pretty straightforward.  In this way super is used to pass off something to its parent class.  For instance, say we have a little more realistic example and the instance of C takes some timeseries data that exhibits serial correlation.  Then we can have C correct for the covariance structure of the data and &quot;pass it up&quot; to B where B can then perform OLS on our data now that it meets the assumptions of OLS.  Further B can pass this data to A and return some descriptive statistics for our data.  But remember these are 'bound' class objects, so they're all attributes to our original instance of C.  Neat huh?  Okay, now let's look at a pretty simple example of multiple inheritance.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;class F(C,E):&lt;br /&gt;    def __init__(self, a):&lt;br /&gt;        self.af = a*6&lt;br /&gt;        print 'executing F().__init__'&lt;br /&gt;        super(F,self).__init__(a)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;For this example we are using the class of D, that has super commented out.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [8]: finst = F(10)&lt;br /&gt;executing F().__init__&lt;br /&gt;executing C().__init__&lt;br /&gt;executing B().__init__&lt;br /&gt;executing E().__init__&lt;br /&gt;executing D().__init__&lt;br /&gt;&lt;br /&gt;In [8]: vars(finst)&lt;br /&gt;Out[8]: {'ab': 20, 'ac': 30, 'ad': 40, 'ae': 50, 'af': 60}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The first time I saw this gave me pause.  Why isn't there an finst.a?  I was expecting the MRO to go F -&amp;gt; C -&amp;gt; B -&amp;gt; A -&amp;gt; E -&amp;gt; D -&amp;gt; A. Let's take a closer look.  The F class has multiple inheritance.  It inherits from both C and E.  We can see F's method resolution order by doing&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [9]: F.__mro__&lt;br /&gt;Out[9]:          &lt;br /&gt;(&amp;lt;class '__main__.F'&amp;gt;,&lt;br /&gt; &amp;lt;class '__main__.C'&amp;gt;,&lt;br /&gt; &amp;lt;class '__main__.B'&amp;gt;,&lt;br /&gt; &amp;lt;class '__main__.E'&amp;gt;,&lt;br /&gt; &amp;lt;class '__main__.D'&amp;gt;,&lt;br /&gt; &amp;lt;class '__main__.A'&amp;gt;,&lt;br /&gt; &amp;lt;type 'object'&amp;gt;)  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Okay, so we can see that for F A is a subclass of D but not B.  But why?&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [10]: A.__subclasses__()&lt;br /&gt;Out[10]: [&amp;lt;class '__main__.B'&amp;gt;, &amp;lt;class '__main__.D'&amp;gt;]&lt;br /&gt;&lt;/div&gt;  &lt;br /&gt;&lt;br /&gt;The reason is that A does not have a call to super, so the chain doesn't exist here.  When you instantiate F, the hierarchy goes F -&amp;gt; C -&amp;gt; B -&amp;gt; E -&amp;gt; D -&amp;gt; A.  The reason that it goes from B -&amp;gt; E is because A does not have a call to super, so it can't pass anything to E (It couldn't pass anything to E because the object.__init__ doesn't take a parameter &quot;a&quot; and because you cannot have a MRO F -&amp;gt; C -&amp;gt; B -&amp;gt; A -&amp;gt; E -&amp;gt; D -&amp;gt; A as this is inconsistent and will give an error!), so A does not cause a problem and the chain ends after D (remember that D's super is commented out, but if it were not then there would be finst.a = 10 as expected).  Whew.  &lt;br /&gt;&lt;br /&gt;I'm sure you're thinking &quot;Oh that's (relatively) easy.  I'm ready to go crazy with super.&quot;  But there are a number of things must keep in mind when using super, which makes it necessary for the users of super to proceed carefully.&lt;br /&gt;&lt;br /&gt;1. super() only works with &lt;a href=&quot;http://docs.python.org/glossary.html#term-new-style-class&quot;&gt;new-style classes&lt;/a&gt;.  You can read more about classic/old-style vs new-style classes &lt;a href=&quot;http://docs.python.org/reference/datamodel.html#newstyle&quot;&gt;here&lt;/a&gt;.  From there you can click through or just go &lt;a href=&quot;http://www.python.org/doc/newstyle/&quot;&gt;here for more information on new-style classes&lt;/a&gt;.  Therefore, you must know that the base classes are new-style.  This isn't a problem for our project right now, because I have access to all of the base classes.&lt;br /&gt;&lt;br /&gt;2. Subclasses must use super if their superclasses do.  This is why the user of super must be well-documented.  If we have to classes A and B that both use super and a class C that inherits from them, but does not know about super then we will have a problem.  Consider the slightly different case&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;class A(object):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        print &quot;executing A().__init__&quot;&lt;br /&gt;        super(A, self).__init__()&lt;br /&gt;    &lt;br /&gt;class B(object):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        print &quot;executing B().__init__&quot;&lt;br /&gt;        super(B, self).__init__()&lt;br /&gt;&lt;br /&gt;class C(A,B):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        print &quot;executing C().__init__&quot;&lt;br /&gt;        A.__init__(self)&lt;br /&gt;        B.__init__(self)&lt;br /&gt;#        super(C, self).__init__()&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Say class C was defined by someone who couldn't see class A and B, then they wouldn't know about super.  Now if we do&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mycode&quot;&gt;&lt;br /&gt;In [11]: C.__mro__&lt;br /&gt;Out[11]:&lt;br /&gt;(&amp;lt;class '__main__.C'&amp;gt;,&lt;br /&gt; &amp;lt;class '__main__.A'&amp;gt;,&lt;br /&gt; &amp;lt;class '__main__.B'&amp;gt;,&lt;br /&gt; &amp;lt;type 'object'&amp;gt;)&lt;br /&gt;&lt;br /&gt;In [12]: c = C()&lt;br /&gt;executing C().__init__&lt;br /&gt;executing A().__init__&lt;br /&gt;executing B().__init__&lt;br /&gt;executing B().__init__&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;B got called twice, but by now this should be expected.  A's super calls __init__ on the next object in the MRO which is B (it works this time unlike above because there is no parameter passed with __init__), then C explicitly calls B again.&lt;br /&gt;&lt;br /&gt;If we uncomment super and comment out the calls to the parent __init__ methods in C then this works as expected.&lt;br /&gt;&lt;br /&gt;3. Superclasses probably should use super if their subclasses do.&lt;br /&gt;&lt;br /&gt;We saw this earlier with class D's super call commented out.  Note also that A does not have a call to super.  The last class in the MRO does not need super *if* there is only one such class at the end.&lt;br /&gt;&lt;br /&gt;4. Classes must have the exact same call signature.&lt;br /&gt;&lt;br /&gt;This should be obvious but is important for people to be able to  subclass.  It is possible however for subclasses to add additional arguments so *args and **kwargs should be probably always be included in the methods that are accessible to subclasses.&lt;br /&gt;&lt;br /&gt;5. Because of these last three points, the use of super must be explicitly documented, as it has become a part of the interface to our classes.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/128274497687662608-3792839399257055802?l=scipystats.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 15 Jun 2009 22:34:03 +0000</pubDate>
	<author>noreply@blogger.com (jseabold)</author>
</item>
<item>
	<title>Skipper Seabold: Legendre on Least Squares</title>
	<guid>tag:blogger.com,1999:blog-128274497687662608.post-4110090658171371709</guid>
	<link>http://scipystats.blogspot.com/2009/06/legendre-on-least-squares.html</link>
	<description>I found the epigraph to &amp;Aring;ke Bj&amp;ouml;rk's &lt;span&gt;Numerical Methods for Least Squares Problems&lt;/span&gt; to be a nice intersection of my interests.&lt;br /&gt;&lt;blockquote cite=&quot;http://books.google.com/books?hl=en&amp;amp;lr=&amp;amp;id=PRcOAAAAQAAJ&amp;amp;oi=fnd&amp;amp;pg=PA2&amp;amp;ots=cIayVws04m&amp;amp;sig=Qx53POQcYhjCjwWKwCsP20vRJSc#PPR1,M1&quot;&gt;&lt;br /&gt;De tous les principes qu'on peut proposer pour cet object, je pense qu'il n'en est pas de plus general, de plus exact, ni d'une application plus facile que celui qui consiste &amp;agrave; rendre &lt;span&gt;minimum&lt;/span&gt; la somme de carr&amp;eacute;s des erreurs.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote cite=&quot;http://scipystats.blogspot.com/feeds/posts/default&quot;&gt;Of all the principles that can be proposed, I think there is none more general, more exact, or of an easier application than that which consists of rendering the sum of squared errors a minimum.&lt;/blockquote&gt;&lt;br /&gt;    &lt;span&gt;Adrien Marie Legendre, Nouvelles m&amp;eacute;thodes pour la d&amp;eacute;termination des orbites des com&amp;egrave;tes. Appendice. Paris, 1805.&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/128274497687662608-4110090658171371709?l=scipystats.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 15 Jun 2009 22:30:46 +0000</pubDate>
	<author>noreply@blogger.com (jseabold)</author>
</item>
<item>
	<title>Danilo Freitas: Progress</title>
	<guid>tag:blogger.com,1999:blog-7711855911946874836.post-1151399413278411120</guid>
	<link>http://daniloaf-ufcg.blogspot.com/2009/06/progress.html</link>
	<description>Some features were already implemented on Cython.&lt;br /&gt;Until now, we already have:&lt;br /&gt;- C++ class declaration&lt;br /&gt;- C++ class attributes declaration&lt;br /&gt;- Multiple inheritance&lt;br /&gt;- Declaration of inherited attributes&lt;br /&gt;- Use of namespace&lt;br /&gt;The next step now is allowing attribution of inherited objects.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7711855911946874836-1151399413278411120?l=daniloaf-ufcg.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 15 Jun 2009 12:08:01 +0000</pubDate>
	<author>dsurviver@gmail.com (Danilo Freitas)</author>
</item>
<item>
	<title>Fabian Pedregosa: The boolean satisfiability problem</title>
	<guid>http://fseoane.net/blog/?p=149</guid>
	<link>http://fseoane.net/blog/?p=149</link>
	<description>&lt;p&gt;Most annoying problem in my implementation of the query system is that it will not solve implications if the implicates are far away from each other. For instance, if the graph of known facts is something like this&lt;/p&gt;
&lt;pre&gt;
 Integer ----&gt; Rational --&gt; Real --&gt; Complex
   ^  ^
   |  |
   |   -------
   |         |
 Prime      Even
   ^
   |
   |
 MersennePrime
&lt;/pre&gt;
&lt;p&gt;Then it will not know how to handle the query: Is x complex assuming it is a Mersenne prime ?. This is because the vertices MersennePrime and Complex are far away from each other and the query function does not load the complete graph of known facts, but rather a small subgraph centered on the assumed facts &amp;#8230;&lt;/p&gt;
&lt;p&gt;This was done so for efficiency reasons, because in the initial implementation I feared that the graph of known facts could become huge and thus making it unfeasible to search into.&lt;/p&gt;
&lt;p&gt;But things have changed now. Known facts is not huge at all, roughly having over 20 vertices, so it is feasible to build the complete graph the first time query() is called and store it for future uses. And, most important, we have implemented fast algorithms for the &lt;a href=&quot;http://en.wikipedia.org/wiki/Boolean_satisfiability_problem&quot;&gt;problem of boolean satisfiability&lt;/a&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/DPLL_algorithm&quot;&gt;DPLL&lt;/a&gt; under sympy.logic.algorithms.dpll), so all is ready to implement these ideas in the following days.&lt;/p&gt;
&lt;p&gt;Interestingly, there seems to me many open source libraries for solving this problem. One that caught my attention early is &lt;a href=&quot;http://minisat.se/MiniSat.html&quot;&gt;MiniSAT&lt;/a&gt;, a nice little program written in C++ which is really fast&lt;/p&gt;</description>
	<pubDate>Mon, 15 Jun 2009 04:00:20 +0000</pubDate>
</item>
<item>
	<title>Andrew Friedley</title>
	<guid>tag:blogger.com,1999:blog-7610898009400510033.post-2244663018606011460</guid>
	<link>http://numcorepy.blogspot.com/2009/06/have-been-busy-lately.html</link>
	<description>Have been busy lately.. big paper deadline (CorePy paper!) and moving.  When I can, I've been working on general code correctness/cleanliness/robustness.  Management and movement of various data inside the 'corefunc' C module has been cleaned up.  I now have a fairly generic routine for creating a ufunc from some type information and CorePy InstructionStreams.  Multi-core is supported at the C level in a generic way; nothing there is ufunc-specific.&lt;br /&gt;&lt;br /&gt;I didn't mention this before, but my code previously only worked correctly for input sizes that were a multiple of the number of threads used (1, 2, 4) and the number of iterations that were unrolled (1, 4, 8).  Now my code works for any size input.  At the thread level, I just had the last thread (if more than one) check if the number of threads evenly divided the input length.  If not, that last thread increased the number of elements it processed to compensate.  At the CorePy loop level, a special code path was needed to handle both the case where the input length is less than the number of unrolled loop iterations, and when the length was not a multiple of the unrolled iterations.  Here, I do some fancy (but somewhat messy) checks, and added unrolled code to handle one element at a time (as opposed to 4/8 at a time using SIMD).&lt;br /&gt;&lt;br /&gt;Turns out reduction wasn't working right when multiple threads are used, but this is fixed now (took a while! evil bugs).  Each thread reduces (eg. adds, subtracts) all the elements in its assigned input sub-range into a local register.  When complete, the local value is atomically reduced into the single shared output value residing in memory.  CorePy's support for the LOCK prefix (makes some instructions atomic) wasn't complete, so I had to go do that.  I think I've covered most/all of the instructions supporting the LOCK prefix on x86_64.&lt;br /&gt;&lt;br /&gt;This brings up sort of a side issue -- because floating point is not associative, the use of multiple threads accumulating to their own local values independently means the order of operations for reductions is changed.  This causes a result that is different from NumPy's.  I'm not sure what to do about this, if anything -- I don't think there is a way to maintain thread-level parallelism and perform the operations in the same order as NumPy.  I think all I can do is provide a warning about this issue when using multiple threads to do reductions.&lt;br /&gt;&lt;br /&gt;Sort of related to this GSOC work, I implemented ExtBuffer, an object implementing the Python 2.6 buffer interface (mainly for use with NumPy arrays).  ExtBuffer provides guaranteed page-aligned memory, supports huge pages, and can optionally just take a pointer to some pre-allocated memory and use that (useful for overlaying special memory-mapped hardware regions, e.g. Cell SPU local store).  Documentation here:&lt;br /&gt;&lt;br /&gt;http://corepy.org/wiki/index.php?title=Extended_Array&lt;br /&gt;&lt;br /&gt;I was actually anticipating that I would have to write ExtBuffer as part of this GSOC project.  The issue was that SIMD code typically requires 16-byte memory alignment for best performance.  To my knowledge, malloc() (which I understand NumPy arrays use to alloc memory) only guarantees 8-byte alignment.  However I've just been using NumPy arrays as-is and have not (yet) run into any alignment issues.  So I need to look into this and see if I can now really rely on NumPy array data always being at least 16-byte aligned.&lt;br /&gt;&lt;br /&gt;Where to next?&lt;br /&gt;&lt;br /&gt;I really just have an addition ufunc with support for in64 and float32 types right now.  This has sufficed for building the initial codebase, but now I need to expand this to support more data types and more operations.  With that done, it'll be time to start refactoring duplicate code and designing/building more of a framework to build new ufuncs quickly/easily (my halfway milestone!)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7610898009400510033-2244663018606011460?l=numcorepy.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 14 Jun 2009 11:16:37 +0000</pubDate>
	<author>noreply@blogger.com (Andrew Friedley)</author>
</item>
<item>
	<title>Tyler Laing: Champions Online Contest Entry</title>
	<guid>http://www.oddco.ca/zeroth/zblog/?p=224</guid>
	<link>http://feedproxy.google.com/~r/ZerothCode/~3/IOGEY0AOrGQ/</link>
	<description>So apparently Tim Absath of Ctrl-alt-delete comic is running a contest for five beta keys for Champions Online, being produced by the excellent Cryptic Studios. The contest requires inventing a superhero, and here&amp;#8217;s my entry:

Once a support technician for a tech startup, Max Kellder is now unrecognizeable. Following the clues of a new mysterious, and [...]</description>
	<pubDate>Sun, 14 Jun 2009 04:46:35 +0000</pubDate>
</item>
<item>
	<title>Aaron Meurer: asmeurer</title>
	<guid>http://asmeurersympy.wordpress.com/?p=170</guid>
	<link>http://asmeurersympy.wordpress.com/2009/06/13/vacation/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I am on vacation now.  I am visiting the Grand Canyon, Hoover Dam, Yellowstone, and other places.  I will be able to do some coding on the road, but not as much as when I am home.  The vacation will last about a week.  Hopefully I will be able to get a blog post about what I have been doing in SymPy written up in the next few days. &lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/asmeurersympy.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/asmeurersympy.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/asmeurersympy.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/asmeurersympy.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/asmeurersympy.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/asmeurersympy.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/asmeurersympy.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/asmeurersympy.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/asmeurersympy.wordpress.com/170/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/asmeurersympy.wordpress.com/170/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=asmeurersympy.wordpress.com&amp;amp;blog=7467151&amp;amp;post=170&amp;amp;subd=asmeurersympy&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 13 Jun 2009 00:45:44 +0000</pubDate>
</item>
<item>
	<title>Tyler Laing: Movie Module Progress: Week 4</title>
	<guid>http://www.oddco.ca/zeroth/zblog/?p=221</guid>
	<link>http://feedproxy.google.com/~r/ZerothCode/~3/PEfUmK0x618/</link>
	<description>This week was a bit of varied work.
I did this week:

Cleaned up, refactored, and commented code. This took a day
Hunting down a memory leak. This took two days. It ended up being leaving opening a video stream without closing it before looping.
Worked on getting loops to work properly. This took the better part of a [...]</description>
	<pubDate>Fri, 12 Jun 2009 21:25:19 +0000</pubDate>
</item>
<item>
	<title>Freddie Witherden: Project Update</title>
	<guid>tag:blogger.com,1999:blog-7648717043547744590.post-5131322471573191496</guid>
	<link>http://gsoc-mathtex.blogspot.com/2009/06/project-update.html</link>
	<description>Sorry for the lack of updates over the last couple of weeks — however I have had my first year undergraduate exams this week and was revising the week prior. With my exams now out of the way I am able to start working full-throttle on my GSoC project.&lt;br /&gt;&lt;br /&gt;According to my schedule (which I will post verbatim in a later post) the plan it to spend the first week getting up to speed on exactly how the TeX layout algorithm works and how it is currently implemented in Matplotlib. If all goes to plan you can expect a diagram-filled blog post on it near the end of next week.&lt;br /&gt;&lt;br /&gt;My mentors, John Hunter and Michael Droettboom have given me some good reading material on it (along with the current implementation, of course) so this should not be too difficult.&lt;br /&gt;&lt;br /&gt;Finally, sometime in the near future you can also expect a discussion on backends (so the code responsible for turning a list of characters and coordinates into an image/document).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7648717043547744590-5131322471573191496?l=gsoc-mathtex.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 12 Jun 2009 20:14:53 +0000</pubDate>
	<author>noreply@blogger.com (Freddie Witherden)</author>
</item>
<item>
	<title>James Pruitt: Who will police the police?</title>
	<guid>tag:blogger.com,1999:blog-724252239441763316.post-5145215755416391279</guid>
	<link>http://subdev.blogspot.com/2009/06/who-will-police-police.html</link>
	<description>It appears the recent release of Python 3.0 have a buggy pdb. When I first ran into the issue, I thought it might have had something to do with my unit tests or possible incompatibilities between the subprocess.Popen module and pdb. I wrestled with it before finally throwing a bit of &quot;Google-Fu&quot; at it and discovered that I was not the only person having this issue. (http://bugs.python.org/issue6126)&lt;br /&gt;&lt;br /&gt;Python 2.7 is supposed to be a 2.X compatible backport of the features and syntax found in Python 3.0 so any code added to the 2.7 branch must be either a bug fix or a backport of a Python 3.0 feature. Before I learned about that, my proposal was directed towards Python 2.7. The pdb module in Python 2.7 works flawlessly and did not give me any trouble while I was debugging my code with it.&lt;br /&gt;&lt;br /&gt;Until the issues with the Python 3.0 pdb module are resolved, I will be taking advantage of the forward compatiblity and coding in Python 2.7 so that I will have a functional code debugger.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/724252239441763316-5145215755416391279?l=subdev.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 12 Jun 2009 17:18:00 +0000</pubDate>
	<author>noreply@blogger.com (Eric)</author>
</item>
<item>
	<title>Fabian Pedregosa: Initial implementation of the query system</title>
	<guid>http://fseoane.net/blog/?p=148</guid>
	<link>http://fseoane.net/blog/?p=148</link>
	<description>&lt;p&gt;I sent &lt;a href=&quot;http://groups.google.com/group/sympy-patches/browse_thread/thread/e56ceda0038b7c23&quot;&gt;some patches&lt;/a&gt; to sympy-patches with an initial implementation of the query system.&lt;/p&gt;
&lt;p&gt;You can check it out by pulling from my branch:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git pull http://fseoane.net/git/sympy.git master&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;into your sympy repo.&lt;/p&gt;
&lt;p&gt;Some examples of what you can do (sample isympy session):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;In [1]: query(x, positive=True)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Returns None, as we do not know whether x is positive or not.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
In [2]: query(abs(x), positive=True)&lt;br /&gt;
Out[2]: True&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;because abs() is always positive. Because exp() is always positive, the following should also be True:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
In [3]: query(exp(x), positive=True)&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;but why then does it return None ?. Well, it simply is not True that exp() is always positive, it is always positive for real values, but SymPy does not assume that x is real, so you would have to specify that. This is now done with the keyword assumptions:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
In [5]: query(exp(x), positive=True, assumptions=Assume(x, real=True))&lt;br /&gt;
Out[5]: True&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As you can see, now assumptions are independent objects and are not tied to symbols any more. For more examples, see the file sympy/query/tests/test_query.py&lt;/p&gt;
&lt;p&gt;still in the TODO list:&lt;br /&gt;
    - support for global assumptions&lt;br /&gt;
    - solve more complex implications, like &lt;code&gt;query(x, positive=True, assumptions=Assume(x, even=True))&lt;/code&gt; where it should build the chain of implications even =&gt; integer =&gt; rational =&gt; real. This chain of implications currently stops at rational for efficiency reasons, because the number of facts grows in each step which makes the number of possible paths grow exponentially.&lt;/p&gt;</description>
	<pubDate>Fri, 12 Jun 2009 04:36:23 +0000</pubDate>
</item>
<item>
	<title>Wojciech Walczak: gminick</title>
	<guid>http://gminick.wordpress.com/?p=28</guid>
	<link>http://gminick.wordpress.com/2009/06/11/integration-of-xapian/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;It already works. I still can point to some problems, but the Xapian search engine is quite usable and it acknowledges themes choosen by the user.&lt;/p&gt;
&lt;p&gt;A &amp;#8220;search&amp;#8221; form for Xapian is placed under a traditional &amp;#8220;quick search&amp;#8221; form. You can already build your documentation with this addition. Simple &amp;#8220;make webapp&amp;#8221; makes the job.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/gminick.wordpress.com/28/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/gminick.wordpress.com/28/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/gminick.wordpress.com/28/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/gminick.wordpress.com/28/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/gminick.wordpress.com/28/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/gminick.wordpress.com/28/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/gminick.wordpress.com/28/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/gminick.wordpress.com/28/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/gminick.wordpress.com/28/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/gminick.wordpress.com/28/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=gminick.wordpress.com&amp;amp;blog=7588592&amp;amp;post=28&amp;amp;subd=gminick&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 11 Jun 2009 14:46:32 +0000</pubDate>
</item>
<item>
	<title>Kurt Smith: freemalloc</title>
	<guid>http://fortrancython.wordpress.com/?p=13</guid>
	<link>http://fortrancython.wordpress.com/2009/06/11/long-overdue-update-f2cy/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Much progress over the past few weeks, I&amp;#8217;m glad to say.  Here are the main threads that are out there.&lt;/p&gt;
&lt;p&gt;First, the 10000 meter view:  For my GSoC, I&amp;#8217;m developing, under the guidance of Dag Sverre Seljebotn, (1) a python package that wraps fortran so it can be easily called from a cython program; (2) improving cython&amp;#8217;s buffer support to allow the passing of buffers/arrays to external code (C, fortran, or whatever can be linked in) or cdef functions.&lt;/p&gt;
&lt;p&gt;The fortran-side:&lt;/p&gt;
&lt;p&gt;Dag Sverre and I discussed a bit about the naming of the fortran wrapper project &amp;#8212; right now it&amp;#8217;s under the working title &amp;#8220;f2cy,&amp;#8221; in the long tradition of &amp;#8220;&amp;lt;some-language/protocol/format&amp;gt;2&amp;lt;other-language/protocol/format&amp;gt;&amp;#8221; converter names.  There are at least 85 similarly-named executables on my ubuntu system (apropos 2 | awk &amp;#8216;{ print $1 }&amp;#8217; | grep &amp;#8216;[a-zA-Z]2[a-zA-Z]&amp;#8216; | wc -l).  Since the wrapper and the code it generates has very little direct dependence on python/cython, and since it may be useful for those who want to automate wrapping fortran inside a C program, the name will likely change.  I&amp;#8217;m thinking of something along the lines of &amp;#8216;fwrap&amp;#8217; &amp;#8212; Dag suggested &amp;#8216;fbridge&amp;#8217; to emphasize the connectivity aspect.&lt;/p&gt;
&lt;p&gt;f2cy, which is using the fortran parser &amp;#8216;fparser&amp;#8217; from the latest version of f2py (http://code.google.com/p/f2py/) is able to parse pretty much everything required for the midterm review.  The rest of f2cy is still rapidly developing.  The package lives inside the Tools directory of the cython distribution package. To take a look (it&amp;#8217;s still in pre-alpha stage) checkout the mercurial repo here: http://hg.cython.org/gsoc-kurt/.&lt;/p&gt;
&lt;p&gt;After fparser generates the parse tree, f2cy makes a few passes on the AST (using the Visitor pattern); one pass adds type &amp;#8216;annotations&amp;#8217; to the dummy arguments of the subprograms to be wrapped, the next pass generates the autoconfig fortran source file, the next one generates the fortran wrapper.  Only scalar-valued arguments are supported for now, but by August f2cy will support arrays (assumed-shape, assumed-size and explicitly shaped) and passing derived types (structs) end-to-end from cython/C.  How is this done?  Thanks to the iso_c_binding intrinsic module within the Fortran 2003 standard, a Fortran program can be portably linked to C code without too much pain &amp;#8212; certainly less pain than was required before.  This module allows f2cy to easily wrap subprograms that take scalars, arrays and derived types &amp;#8212; in the distant future, f2cy may support passing C callbacks.  There still is an issue of resolving the kind-type-parameters for the dummy arguments, but that is what the autoconfig file is for.&lt;/p&gt;
&lt;p&gt;Our goal in the project is to generate fortran wrappers that are completely portable, in the same way that Cython itself is portable.  A number of projects will generate an extension module with Cython and ship it without a Cython dependence, so the source has to work with any C compiler.  In the same way, f2py will generate wrappers that do not have any compiler-specific knowledge (including the particular values for the kind-type-parameters for the various types).  This isn&amp;#8217;t purely academic, since some compilers define integer type KTPs consecutively (1,2,3,&amp;#8230;) while for others (gfortran, xlf) the KTPs correspond to the byte-size (1,4,8,10,&amp;#8230;).  This makes for some complications and makes the autoconfig file necessary.  More on the autoconfig in a future post.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll address the cython-side in a short while.&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/fortrancython.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/fortrancython.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/fortrancython.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/fortrancython.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/fortrancython.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/fortrancython.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/fortrancython.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/fortrancython.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/fortrancython.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/fortrancython.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=fortrancython.wordpress.com&amp;amp;blog=7448735&amp;amp;post=13&amp;amp;subd=fortrancython&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 11 Jun 2009 01:46:33 +0000</pubDate>
</item>
<item>
	<title>Jeff Ling: Draw SVG Images In Python</title>
	<guid>http://www.ummu.org/?p=19</guid>
	<link>http://www.ummu.org/?p=19</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://code.activestate.com/recipes/325823/&quot;&gt;Draw SVG Images In Python « ActiveState Code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Right now I&amp;#8217;m working on making my widget draw to an svg image for the later SXE implementation. It&amp;#8217;s not the funnest part of this project but it isn&amp;#8217;t too bad.&lt;/p&gt;</description>
	<pubDate>Wed, 10 Jun 2009 08:37:28 +0000</pubDate>
</item>
<item>
	<title>Danilo Freitas: Internet problems :(</title>
	<guid>tag:blogger.com,1999:blog-7711855911946874836.post-3401658511709783027</guid>
	<link>http://daniloaf-ufcg.blogspot.com/2009/06/internet-problems.html</link>
	<description>Since Friday, May 29, I'm without internet at home. I'm using internet on university these days. I hope it come back soon.&lt;br /&gt;It's a really bad I have this problem right now. It's obviously not helping on nothing.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7711855911946874836-3401658511709783027?l=daniloaf-ufcg.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 09 Jun 2009 13:41:32 +0000</pubDate>
	<author>dsurviver@gmail.com (Danilo Freitas)</author>
</item>

</channel>
</rss>
