<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet SciPy</title>
	<link rel="self" href="http://planet.scipy.org/atom.xml"/>
	<link href="http://planet.scipy.org/"/>
	<id>http://planet.scipy.org/atom.xml</id>
	<updated>2009-07-03T09:07:59+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">Setting up a Redmine application with Apache: which module to use?</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/efb14csnmas/"/>
		<id>http://matt.eifelle.com/?p=603</id>
		<updated>2009-07-02T08:19:39+00:00</updated>
		<content type="html">&lt;p&gt;In March, I&amp;#8217;ve set up a &lt;a href=&quot;http://feeds.feedburner.com/eifelle/Setting up a Redmine application on a specific location&quot;&gt;Redmine application with the Ruby webserver Webrick&lt;/a&gt;. Since then, I&amp;#8217;ve migrated to Apache, and then the question was: Which Ruby bridge module to use? It&amp;#8217;s not that the choice is large, you have &lt;strong&gt;mod_fastcgi&lt;/strong&gt;, &lt;strong&gt;mod_fcgid&lt;/strong&gt; and mod_rails a.k.a. &lt;strong&gt;Passenger&lt;/strong&gt;. I&amp;#8217;ve tried the three of them, and only one was a success.&lt;/p&gt;
&lt;p&gt;As for the last post about Redmine, I&amp;#8217;ve compiled everything (Apache included) in a custom location and I start the server from there (without root rights).&lt;br /&gt;
&lt;span id=&quot;more-603&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;mod_fastcgi&lt;/h4&gt;
&lt;p&gt;This is an old module, but it should be easy to use.&lt;/p&gt;
&lt;p&gt;After setting up the configuration file to get the public/dispatch.fcgi file, Ive started the server (did I say that Ruby does a wonderful job by providing every wrapper file needed for any webserver? It provides cgi and fcgi skeletton files, and of course everything needed for Webrick). Unfortunately, it didn&amp;#8217;t work, it misses the rubygem module, although it is installed as I&amp;#8217;ve used it to install Ruby on Rails!&lt;/p&gt;
&lt;p&gt;So I left mod_fastcgi where it was, in the dust.&lt;/p&gt;
&lt;h4&gt;mod_fcgid&lt;/h4&gt;
&lt;p&gt;This module is based on Fast CGI as well, but is more recent than mod_fastcgi. It uses Unix socks for the communications between Apache and the back-end, and in my configuration, the server didn&amp;#8217;t seem able to create socks (I didn&amp;#8217;t find a reason on the Internet, but I have to say I didn&amp;#8217;t look far, and besides Google has not much to say about this issue. And I still have Passenger). So much for this module.&lt;/p&gt;
&lt;h4&gt;Passenger&lt;/h4&gt;
&lt;p&gt;This module is supposed to interact directly with the ruby files, and in fact it does. No need to have a dispatch.fcgi file, it calls the server as Webrick does.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve installed rake with a gem, but Passenger setup didn&amp;#8217;t find it, I had to add a symbolic link between lib/ruby/gems/1.8/bin/rake and bin/rake. I&amp;#8217;ve installed fastthread as well, and I was good to go.&lt;/p&gt;
&lt;p&gt;In the configuration file, I load the appropriate modules:&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot;&gt;View Code&lt;/a&gt; OTHER&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot;&gt;&lt;tr id=&quot;p6033&quot;&gt;&lt;td class=&quot;code&quot; id=&quot;p603code3&quot;&gt;&lt;pre class=&quot;other&quot;&gt;LoadModule passenger_module /web/src/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /web/src/passenger-2.2.2
PassengerRuby /web/bin/ruby&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Then I can configure the Virtual Host:&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot;&gt;View Code&lt;/a&gt; OTHER&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot;&gt;&lt;tr id=&quot;p6034&quot;&gt;&lt;td class=&quot;code&quot; id=&quot;p603code4&quot;&gt;&lt;pre class=&quot;other&quot;&gt;NameVirtualHost *:3000
&amp;amp;lt;VirtualHost *:3000&amp;amp;gt;
&amp;nbsp;
DocumentRoot /src_custom/redmine-0.8.3/public
&amp;nbsp;
&amp;amp;lt;Directory /src_custom/redmine-0.8.3/public&amp;amp;gt;
AllowOverride None
Order allow,deny
allow from all
Options Indexes FollowSymLinks MultiViews
&amp;amp;lt;/directory&amp;amp;gt;
&amp;nbsp;
ErrorLog /web/logs/error.log
LogLevel warn
CustomLog /web/logs/access.log combined
ServerSignature On
&amp;amp;lt;/VirtualHost&amp;amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;With Passenger, it was really easy to have a working configuration. The only thing I&amp;#8217;m still missing is the ability to set the &lt;strong&gt;RAILS_ENV&lt;/strong&gt; variable to select a different environment than the default (production).&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/PvGKquVmlyWolDwh_JyVCRTJZ4E/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/PvGKquVmlyWolDwh_JyVCRTJZ4E/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/PvGKquVmlyWolDwh_JyVCRTJZ4E/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/PvGKquVmlyWolDwh_JyVCRTJZ4E/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/efb14csnmas&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PhD proposal on material-science modeling with Python</title>
		<link href="http://gael-varoquaux.info/blog/?p=107"/>
		<id>http://gael-varoquaux.info/blog/?p=107</id>
		<updated>2009-07-01T15:02:26+00:00</updated>
		<content type="html">&lt;p&gt;Philippe Baucour from the &amp;#8216;Unniversité de Franche Comté&amp;#8217; sent me an email saying that he was looking for the rare PhD candidate that would be able to do numerical modeling and material science on top of high-quality Python coding. I can sympathise with this quest: it is very hard to find someone who codes well, and if you want on top of that him to be able to do numerical modeling!&lt;/p&gt;
&lt;p&gt;If you are not afraid of French, his PhD proposal is below. Contact him for more information. Please don&amp;#8217;t contact me, I am drowning under (very interesting) e-mail.&lt;/p&gt;
&lt;h3&gt;Utilisation du calcul parallèle pour la modélisation fractale d&amp;#8217;un stack de type PEMFC.&lt;/h3&gt;
&lt;p&gt;Proposition d’allocation de thèse&lt;br /&gt;
Thème 1.g : Modélisation, simulation et calcul haute performance&lt;br /&gt;
Thème 2.a : Energie, procédés, impacts environnementaux, stockage de l&amp;#8217;énergie&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Responsables au sein du département ENISYS-FEMTO-ST équipe Modélisation&lt;/span&gt;&lt;br /&gt;
D. Hissel, M.C. Péra, R. Glises, Ph. Baucour.&lt;/p&gt;
&lt;p&gt;Les phénomènes qui prennent place au sein d&amp;#8217;un stack de type PEMFC sont de nature multi-physiques et multi-échelles. Ainsi le comportement d&amp;#8217;un stack complet ne peut être appréhendé dans sa globalité que s&amp;#8217;il on intègre des domaines tout aussi différents que :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les phénomènes électriques et électrochimiques.&lt;/li&gt;
&lt;li&gt;La mécanique des fluides,&lt;/li&gt;
&lt;li&gt;Les phénomènes de transferts de chaleur et de matières,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;#8217;ensemble de ces disciplines interagissent à des niveaux d&amp;#8217;échelles complètement différents : du dépôt catalytique (i.e. ~um) au stack (i.e. ~m) soit un facteur d&amp;#8217;échelle d&amp;#8217;environ 106. De plus, les constantes de temps des différents phénomènes sont elles aussi très différentes et rajoutent à la complexité du problème.&lt;/p&gt;
&lt;p&gt;Il y a énormément d&amp;#8217;études portant sur la modélisation des piles à combustibles mais les difficultés énoncées ci-dessus amènent à faire des restrictions soit sur le domaine d&amp;#8217;étude (une cellule), la géométrie (1D ou 2D rarement 3D) ou la représentation des phénomènes (modélisation système). De plus, la puissance de calcul nécessaire pour ce type de problème fortement couplé et non-linéaire n&amp;#8217;est pas facilement accessible.&lt;br /&gt;
Le travail envisagé consiste à développer une modélisation 3D complète d&amp;#8217;un stack à toutes les échelles à la fois de temps et d&amp;#8217;espace. L&amp;#8217;approche envisagée consiste à utiliser un modèle fractal qui puisse se partitionner et s&amp;#8217;adapter à l&amp;#8217;ensemble des échelles (temps et espaces) présentes dans un stack. La conception d&amp;#8217;un code modulaire permettrait à terme de tester certaines hypothèses sur le fonctionnement des PEMFC. On peut citer par exemple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; La gestion de l&amp;#8217;eau et de l&amp;#8217;humidification des gaz.&lt;/li&gt;
&lt;li&gt; Le démarrage à froid.&lt;/li&gt;
&lt;li&gt; Le fonctionnement en mode dégradé.&lt;/li&gt;
&lt;li&gt; Le design des canaux d&amp;#8217;alimentation en gaz.&lt;/li&gt;
&lt;li&gt; Étude de la durabilité et de la fiabilité par un cyclage numérique.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le laboratoire (ENISYS) dispose depuis peu d&amp;#8217;un cluster de calcul qui permet d&amp;#8217;envisager un modèle complet. Il est composé de 8 noeuds de calcul comportant un total de 64 processeurs pour 64 Go de mémoire et un espace disque de 1 To.&lt;br /&gt;
L&amp;#8217;objectif de la thèse serait de développer un code parallèle qui permettrait de distribuer sur les 64 coeurs un modèle complet. Ce modèle peut s&amp;#8217;envisager comme l&amp;#8217;agrégation de modèles à différentes échelles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modèle d&amp;#8217;Assemblage Membrane Electrode&lt;/li&gt;
&lt;li&gt;Modèle d&amp;#8217;écoulement non-conservatif dans un canal (déjà développé)&lt;/li&gt;
&lt;li&gt;Modèle de comportement thermique des plaques bipolaires&lt;/li&gt;
&lt;li&gt;Modèle de comportement électrique&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ces modèles relativement simples individuellement seront regroupés afin de former un modèle complet. La difficulté consiste à agréger les différents calculs à la fois en terme de temps et d&amp;#8217;espaces, on parle alors de spatial computing ou de parallel computing si l&amp;#8217;on distribue un problème complexe sur plusieurs processeurs. Dans le cas de la modélisation d&amp;#8217;un stack PEMFC, le spatial computing est envisageable pour les différents domaines d&amp;#8217;espaces mais il faudra recourir au parallel computing pour combiner l&amp;#8217;ensemble des modèles et s&amp;#8217;assurer de la convergence.&lt;br /&gt;
&lt;strong&gt;Cahier des charges de l&amp;#8217;étude&lt;/strong&gt; :&lt;br /&gt;
•   Définition du stack étudié en se calquant sur les données expérimentales disponibles.&lt;br /&gt;
•   Développement des codes de calcul en s&amp;#8217;assurant de la compatibilité avec un fonctionnement dans un cluster.&lt;br /&gt;
•   Développement d&amp;#8217;un modèle maître faisant la collecte des différents modèles.&lt;br /&gt;
•   Définition du partitionnement spatial et temporel.&lt;br /&gt;
•   Validation sur des données expérimentales disponibles au laboratoire.&lt;br /&gt;
&lt;strong&gt;Matériel et logiciel envisagé&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utilisation du cluster sur une base de 32 processeurs en utilisation récurrente et 64 processeurs en utilisation intensive&lt;/li&gt;
&lt;li&gt;Programmation en Python des codes individuels et du code maître en utilisant au mieux les bibliothèques de calcul scientifique (Scipy, Numpy, FiPy, PyPar). L&amp;#8217;utilisation d&amp;#8217;un code propriétaire entraînerait un surcoût exorbitant en termes de licences (64 licences Matlab par exemple !)&lt;/li&gt;
&lt;li&gt;La parallélisation se fera par l&amp;#8217;utilisation du MPI (Message Passing Interface) implémenté en Python.&lt;/li&gt;
&lt;li&gt;L&amp;#8217;utilisation d&amp;#8217;une solution de parallélisation est envisageable à travers l&amp;#8217;utilisation de Ipython.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contact:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;                                                                 Dpt-ENISYS&lt;/pre&gt;
&lt;pre&gt;                                                        Energie, Ingénierie des Systèmes&lt;/pre&gt;
&lt;pre&gt;                                                                   multiphysiques&lt;/pre&gt;
&lt;pre&gt;                                                                        Daniel Hissel&lt;/pre&gt;
&lt;pre&gt;                                                        Techn­Hom, 90010 Belfort Cedex, FRANCE&lt;/pre&gt;
&lt;pre&gt;                                                                 Phone : 33 (0) 3 84 58 36 21&lt;/pre&gt;
&lt;pre&gt;                                                                  Fax : 33 (0) 3 84 22 27 22&lt;/pre&gt;
&lt;pre&gt;                                                              @ : danieL.hissel@univ-fcomte.fr&lt;/pre&gt;
&lt;pre&gt;   Franche-Comté Electronique Mécanique Thermique et Optique - Sciences et Technologies&lt;/pre&gt;
&lt;pre&gt;                                                   UMR CNRS 6174&lt;/pre&gt;
&lt;pre&gt;Contact : Monsieur Daniel Hissel&lt;/pre&gt;
&lt;pre&gt;Chef d'équipe Modélisation&lt;/pre&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Mumbles on object-oriented designs: framework objects and data containers</title>
		<link href="http://gael-varoquaux.info/blog/?p=106"/>
		<id>http://gael-varoquaux.info/blog/?p=106</id>
		<updated>2009-07-01T04:13:57+00:00</updated>
		<content type="html">&lt;p&gt;I recently sent on a mailing list a few thoughts object-oriented design, so I might as well also be ridiculous on my blog.&lt;/p&gt;
&lt;p&gt;I find that in object oriented design, there are two kinds of objects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A first kind is the object encoding logics. This is an object for which clever and complex design will hold together the logics of a state-full application. It can often be part of a forest of objects that are linked together via design patterns. The interfaces of these objects are driven by their active role in the application. These objects are prominently present in interactive application and interactive application. They are mostly particular to an application or a framework, and are mostly implementation-defined.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;The second type of object is a data container. It strives to expose a data model that can be of use in various situations, as it is the link between different parts of the code that do not talk to each other apart through data. It is responsible for loose coupling (something that is very important to achieve a maintainable code base) by having a light and shallow interface. It must be interfaced-designed, rather than implementation-designed. One should very easily get a grasp, an almost physical feeling, for the object by simple interaction with it. I have what I call the &amp;#8216;explaining test&amp;#8217; for these objects: can I explain fully and completely to somebody what the object does, and any possible caveat, without being sidetracked into special discussions? If not, back to the drawing board: the object will not gain acceptance. In my experience, only the objects of the second kind can easily be shared between different projects.&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Scipy advanced  tutorials results</title>
		<link href="http://fdoperez.blogspot.com/2009/06/scipy-advanced-tutorials-results.html"/>
		<id>tag:blogger.com,1999:blog-462991820843482154.post-1617765342070199265</id>
		<updated>2009-07-01T01:37:44+00:00</updated>
		<content type="html">We recently conducted a poll on Doodle, soliciting feedback on the preferred topics for the advanced track, which is meant to contain 2 days with 8 2-hour sessions focusing on one specific topic at a time.  The table below shows the complete results, which I've only sorted for convenient viewing and anonymized (the raw Doodle output contains the names given by each person voting).  If anyone would like the raw spreadsheet, just drop me a line.&lt;br /&gt;&lt;br /&gt;The score was computed as #yes-#no (i.e., yes=+1, neutral=0, no=-1), from a total of 30 responses, and the results are in the table below, ranked from highest to lowest score.  In my &lt;span&gt;personal&lt;/span&gt; opinion, all the topics offered would have made for very good and interesting tutorials, but the point of asking for feedback is obviously to follow it to some degree, which we will now do.  I think it's worth noting --though not particularly surprising-- that the ranking roughly follows the generality of the tools: matplotlib and numpy are at the top, with finite elements and graph theory at the bottom.  While I personally use NetworkX and love it, it's a specialized tool that for many probably offers no compelling reason to learn it, while pretty much every single numerical python user needs numpy and matplotlib.&lt;br /&gt;&lt;br /&gt;We are now in the process of contacting possible speakers for the top topics, and will communicate on the mailing list a final list of topics once we have confirmed speakers for all.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Note&lt;/span&gt;: the html formatting of this table is hideous and for some odd reason it drops to the bottom of the page, so  you need to scroll way down to the bottom of this page to see the results table. Sorry. I generated it from OpenOffice and it looks fine in Firefox, but it renders horrible here. If anyone can send me a note on how to fix it (such that I can copy/paste the corrected html), I'll be happy to do so.&lt;br /&gt;&lt;br /&gt;&lt;table dir=&quot;ltr&quot; id=&quot;Sheet17Ctable&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;&lt;br /&gt;     &lt;p&gt; &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Yes&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Neutral&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;No&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Score&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Rank&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Advanced topics in matplotlib use&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;18&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;10&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;2&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;16&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;1&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Advanced numpy&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;18&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;10&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;2&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;16&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;2&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Designing scientific interfaces with Traits&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;15&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;11&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;4&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;11&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;3&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Mayavi/TVTK&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;13&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;11&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;7&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;4&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Cython&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;14&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;5&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Symbolic computing with sympy&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;15&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Statistics with Scipy&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;15&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;3&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;7&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Using GPUs with PyCUDA&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;13&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;7&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;10&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;3&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Testing strategies for scientific codes&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;11&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;11&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;3&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Parallel computing in Python and mpi4py&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;12&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;10&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;2&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;10&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Sparse Linear Algebra with Scipy&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;12&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;0&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;11&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Structured and record arrays in numpy&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;14&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;0&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;12&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Design patterns for efficient iterator-based scientific codes&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;7&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;14&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;-5&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;13&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Sage&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;16&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;-8&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;14&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;The TimeSeries scikit&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;4&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;13&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;13&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;-9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;15&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Hermes: high order Finite Element Methods&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;6&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;15&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;-9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;16&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;Graph theory with NetworkX&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;5&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;9&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;16&lt;/td&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;-11&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;   &lt;td class=&quot;Default&quot;&gt;17&lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;br /&gt;&lt;/table&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/462991820843482154-1617765342070199265?l=fdoperez.blogspot.com&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Fernando</name>
			<email>noreply@blogger.com</email>
			<uri>http://fdoperez.blogspot.com/search/label/scipy</uri>
		</author>
		<source>
			<title type="html">Fernando Perez</title>
			<link rel="self" href="http://fdoperez.blogspot.com/feeds/posts/default/-/scipy"/>
			<id>tag:blogger.com,1999:blog-462991820843482154</id>
			<updated>2009-07-01T09:07:49+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: C++ Coding Standards: 101 Rules, Guidelines, and Best Practices</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/8ZOl3g3qSes/"/>
		<id>http://matt.eifelle.com/?p=395</id>
		<updated>2009-06-30T08:01:32+00:00</updated>
		<content type="html">&lt;p&gt;There is no official C++ standard, unlike several languages (Java, Python, &amp;#8230;) where there are referentials for code and design style, good practices, &amp;#8230; It didn&amp;#8217;t exist until this book where two world-renowned C++ authors set the basis for your every day development.&lt;br /&gt;
&lt;span id=&quot;more-395&quot;&gt;&lt;/span&gt;&lt;br /&gt;
101 coding standards, numbered from 0 to 100 (an echo to the fact that C++ starts counting from 0), this is the content of the book.&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;The standards are split in several groups, from policy to type safetiness. Each time, the coding standard is stated, with a short summary and then a discussion. There can be an example if needed, and some references. The standard is always simple enough to follow, and the explanation is clear yet complete.&lt;/p&gt;
&lt;p&gt;The handled issues are very vast, oriented towards common pitfalls. Use inheritance when needed, use collaboration elsewhere, do not inherit from a class that isn&amp;#8217;t made for inheritance, &amp;#8230; When you are used to these pitfalls (because a lot of C++ gurus talk about them in their forum posts, mails or blogs), you may sometimes forget them and write code that is not optimal (in several ways, performance or maintenability). The book is in that regard a good way of having the good practices classified by topics and easilly accessed: you don&amp;#8217;t have to check or search on the Internet. Finally if someone has a question on why you used a specific coding standard, you can give a full explanation and a context (and spread the good pratices).&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;C++ Coding Standards are sometimes more a question of style than of language, but they are part of the general pieces of advices one should follow. C++ is a language that permits a lot of things, perhaps too much, and this set of rules makes it possible to write readable, efficient, robust code.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0321113586/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51WH54Y1C6L._SL75_.jpg&quot; width=&quot;60&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0321113586/masbl03-20&quot; target=&quot;_blank&quot;&gt;C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (C++ In-Depth Series)&lt;/a&gt; (Paperback)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Herb Sutter, Andrei Alexandrescu&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 0321113586&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 37.26&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;52 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 22.00&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.5.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4.5 | 27
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/btibBBS4PNxvyl9tqV0v6QmBMrk/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/btibBBS4PNxvyl9tqV0v6QmBMrk/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/btibBBS4PNxvyl9tqV0v6QmBMrk/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/btibBBS4PNxvyl9tqV0v6QmBMrk/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/8ZOl3g3qSes&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Revamped Plot Toolbar</title>
		<link href="http://blog.enthought.com/?p=123"/>
		<id>http://blog.enthought.com/?p=123</id>
		<updated>2009-06-29T19:46:13+00:00</updated>
		<content type="html">&lt;p&gt;Last October I added a &lt;a href=&quot;http://blog.enthought.com/?p=75&quot;&gt;&lt;span&gt;toolbar for Chaco plots&lt;/span&gt;&lt;/a&gt;. It was functional, but it wasn&amp;#8217;t very pretty. I decided to rewrite it from scratch, with emphasis on improving the appearance and improving the auto-hide feature.&lt;/p&gt;
&lt;p&gt;The new toolbar also employs a new feature to Enable: gradients! Gradient support is still a work in progress, but improving daily.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.enthought.com/wordpress/wp-content/uploads/2009/06/plot_toolbar.png&quot; title=&quot;PlotToolbar example screenshot&quot; alt=&quot;PlotToolbar example screenshot&quot; align=&quot;middle&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">cournape</title>
		<link href="http://cournape.wordpress.com/2009/06/28/progress-for-numpy-on-windows-64-bits/"/>
		<id>http://cournape.wordpress.com/2009/06/28/progress-for-numpy-on-windows-64-bits/</id>
		<updated>2009-06-28T12:44:22+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;The numpy 1.3.0 installer for windows 64 does not work very well. On some configurations, it does not even import without crashing. The crashes are mostly likely due to some bad interactions between the 64 bits mingw compilers and python (built with Visual Studio 2008). Although I know it is working, I had no interest in building numpy with MS compiler, because gfortran does not work with VS 2008. There are some incompatibilities because the fortran runtime from gfortran is incompatible with the VS 2008 C runtime (I get some scary linking errors).&lt;/p&gt;
&lt;p&gt;So the situation is either building numpy with MS compiler, but with no hope of getting scipy afterwards, or building a numpy with crashes which are very difficult to track down. Today, I realized that I may go somewhere if somehow, I could use gfortran without using the gfortran runtime (e.g. libgfortran.a). I first tried calling a gfortran-built blas/lapack from a C program built with VS 2008, and after a couple of hours, I managed to get it working. Building numpy itself with full blas/lapack was a no-brainer then.&lt;/p&gt;
&lt;p&gt;Now, there is the problem of scipy. Since scipy has some fortran code, which itself depends on the gfortran runtime when built with gfortran, I am trying to &amp;#8216;fake&amp;#8217; a minimal gfortran runtime built with the C compiler. Since this mini runtime is built with the MS compiler and with the same&amp;nbsp; C runtime as used by python, it should work if the runtime is ABI compatible with the gfortran one. As gfortran is open source, this may not be intractable &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;With this technique, I could go relatively far in a short time. Among the packages which build and pass most of the test suite:&lt;br /&gt;&amp;nbsp;- scipy.fftpack&lt;br /&gt;&amp;nbsp;- scipy.lapack&lt;br /&gt;&amp;nbsp;- some scipy.sparse&lt;/p&gt;
&lt;p&gt;Some packages like cluster or spatial are not ANSI C compatible, so they fail to build. This should not be too hard to fix. The main problem is scipy.special: the C code is horrible, and there needs many hacks to build the C code. The Fortran code needs quite a few functions from the fortran runtime, so this needs some work. But ~ 300 unit tests of scipy pass, so this is encouraging.&lt;/p&gt;
&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img class=&quot;zemanta-pixie-img&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=3f8684ae-70a4-8737-8460-f552d4971f42&quot; /&gt;&lt;/div&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cournape.wordpress.com/162/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cournape.wordpress.com/162/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cournape.wordpress.com/162/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cournape.wordpress.com/162/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cournape.wordpress.com/162/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cournape.wordpress.com/162/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cournape.wordpress.com/162/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cournape.wordpress.com/162/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cournape.wordpress.com/162/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cournape.wordpress.com/162/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=cournape.wordpress.com&amp;amp;blog=2210763&amp;amp;post=162&amp;amp;subd=cournape&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>David Cournapeau</name>
			<uri>http://cournape.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Nothing to say</title>
			<subtitle type="html">some personal notes</subtitle>
			<link rel="self" href="http://cournape.wordpress.com/feed/"/>
			<id>http://cournape.wordpress.com/feed/</id>
			<updated>2009-06-29T09:06:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">SciPy abstract submission deadline extended</title>
		<link href="http://gael-varoquaux.info/blog/?p=105"/>
		<id>http://gael-varoquaux.info/blog/?p=105</id>
		<updated>2009-06-27T07:14:50+00:00</updated>
		<content type="html">&lt;p&gt;Greetings,&lt;/p&gt;
&lt;p&gt;The conference committee is extending the deadline for abstract&lt;br /&gt;
submission for the Scipy conference 2009 one week.&lt;/p&gt;
&lt;p&gt;On Friday July 3th, at midnight Pacific, we will turn off the abstract&lt;br /&gt;
submission on the conference site. Up to then, you can modify the&lt;br /&gt;
already-submitted abstract, or submit new abstracts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The SciPy 2009 executive committee&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jarrod Millman, UC Berkeley, USA (Conference Chair)&lt;/li&gt;
&lt;li&gt;Gaël Varoquaux, INRIA Saclay, France (Program Co-Chair)&lt;/li&gt;
&lt;li&gt;Stéfan van der Walt, University of Stellenbosch, South Africa (Program Co-Chair)&lt;/li&gt;
&lt;li&gt;Fernando Pérez, UC Berkeley, USA (Tutorial Chair)&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Upcoming EPD Webinar: Parallel Processing with iPython</title>
		<link href="http://blog.enthought.com/?p=122"/>
		<id>http://blog.enthought.com/?p=122</id>
		<updated>2009-06-26T21:27:15+00:00</updated>
		<content type="html">&lt;p&gt;We see our EPD Webinar sessions as a great venue for us to provide subscribers with personalized support. Is there a particular challenge you&amp;#8217;ve encountered while using EPD? Do you feel like it would be helpful for us to walk you through a process? We encourage you to submit your questions ahead of time so that we can prepare materials and demos to meet your needs.&lt;/p&gt;
&lt;p&gt;The webinar format enables us to respond to your questions (either by chat or VOIP, depending on your preference) and share our screen to provide examples and demonstrations.  We feel that this could become an invaluable channel of communication for EPD users, and are excited to see how it progresses.&lt;/p&gt;
&lt;p&gt;July&amp;#8217;s webinar will be held next Thursday at 1pm to accomodate Independence Day weekend. We plan to give an overview and demonstration of parallel processing with iPython, as we&amp;#8217;ve seen the tremendous utility of this EPD feature overlooked in the past. Once again, however, if you have a special topic that you&amp;#8217;d like to have addressed, feel free to write us an &lt;a href=&quot;mailto:marketing@enthought.com&quot;&gt;e-mail&lt;/a&gt; to tell us what content you&amp;#8217;d like to have covered in Thursday&amp;#8217;s session.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;EPD Webinar: Thursday July 2, 2009&lt;br /&gt;
1pm CDT/6pm UTC.&lt;br /&gt;
&lt;a href=&quot;https://www1.gotomeeting.com/register/271908016&quot;&gt;Register at GoToMeeting&lt;/a&gt;.  A password to enter the webinar will be provided in your confirmation.&lt;/p&gt;&lt;/blockquote&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: Ultimate 3D Game Engine Design &amp;amp; Architecture</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/Qsfsozc4nOc/"/>
		<id>http://matt.eifelle.com/?p=580</id>
		<updated>2009-06-23T08:41:59+00:00</updated>
		<content type="html">&lt;p&gt;I bought this book as soon as it was published, and I sold it soon after. Suffice to say I had a very mitigated impression after reading it. There are good things in it, but also some very bad stuff. It doesn&amp;#8217;t describe how to write your ultimate game engine, but the author&amp;#8217;s game engine. What about some modesty?&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s start with the bad stuff.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-580&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;This book does not show the engine architecture, the only thing you can see are some pictures with some classes. There are hints about UML, but those pictures are far from being UML. Besides code quality is really disappointing. No const-correctness, no std::string for the parameters, char* are used and then converted to strings (!!!) Really bad coding practices. Another thing is class instantiation before they are actually used whereas the text says it shouldn&amp;#8217;t be done! Finally, the book has plenty of code pages, whereas the code is in the CD or on the Internet, so why using so much pages for something that is easily available?&lt;/p&gt;
&lt;p&gt;For the good things, the book covers almost every aspect of a multiplatform game engine. For inputs to physics as well as graphism (OpenGL and DirectX), AI, the handling of these systems is there. If some parts show only abstraction for replacable libraries (as for graphism), other show the actual implementation, like for physics. Speaking of physics, it uses a good part of the book to explain how it works, even if it is not a fully-fledged physics engine at the moment of writting.&lt;/p&gt;
&lt;p&gt;I regret the fact that the book is about a uncomplete and evlving engine. I also regret the script engine part, because it is kind of false (compiled or interpreted, a script language can always use a virtual machine) and pages could have been better spent for exposing the engine architecture&amp;#8230;&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;As a conclusion, this book was the first (to my knowledge at that time) complete book on a game engine. There are more complete books on parts of it (mainly 3D engines), but nothing on a complete engine. For this, it desevres some credits. Unfortunately, the drawbacks are too big to consider this book a viable option.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1584504730/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51eN8PT4PLL._SL75_.jpg&quot; width=&quot;60&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1584504730/masbl03-20&quot; target=&quot;_blank&quot;&gt;Ultimate 3D Game Engine Design &amp;#038; Architecture (Charles River Media Game Development)&lt;/a&gt; (Paperback)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Allen Sherrod&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 1584504730&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 37.77&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;25 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 36.00&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-3.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 3 | 5
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/xmy0yNSTpC5FRY2TVIPptc3iGJ8/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/xmy0yNSTpC5FRY2TVIPptc3iGJ8/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/xmy0yNSTpC5FRY2TVIPptc3iGJ8/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/xmy0yNSTpC5FRY2TVIPptc3iGJ8/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/Qsfsozc4nOc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">SciPy 2009 conference opened up for registration</title>
		<link href="http://gael-varoquaux.info/blog/?p=104"/>
		<id>http://gael-varoquaux.info/blog/?p=104</id>
		<updated>2009-06-19T13:53:10+00:00</updated>
		<content type="html">&lt;p&gt;We are finally opening the registration for the SciPy 2009 conference. It took us time, but the reason  is that we made careful budget estimations to bring the registration cost down.&lt;/p&gt;
&lt;p&gt;We are very happy to announce that this year registration to the conference will be only $150, tutorial $100, and students get half price! We made this effort because we hope it will open up the conference to more people, especially students that often have to finance such trip with little budget. As a consequence, however, catering at noon is not included.&lt;/p&gt;
&lt;p&gt;This does not mean that we are getting a reduced conference. Quite on the contrary, this year we have two keynote speakers. And what speakers: Peter Norvig and Jon Guyer! Peter Norvig is the director of research at Google and Jon Guyer is a research scientist at NIST, in the Thermodynamics and Kinetics Group, where he leads a fiPy, a finite element project in Python.&lt;/p&gt;
&lt;h1&gt;The SciPy 2009 Conference&lt;/h1&gt;
&lt;p&gt;SciPy 2009, the &lt;a href=&quot;http://conference.scipy.org/&quot;&gt;8th Python in Science conference&lt;/a&gt;, will be held from August 18-23, 2009 at Caltech in Pasadena, CA, USA.&lt;/p&gt;
&lt;p&gt;Each year SciPy attracts leading figures in research and scientific software development with Python from a wide range of scientific and engineering disciplines. The focus of the conference is both on scientific libraries and tools developed with Python and on scientific or engineering achievements using Python.&lt;/p&gt;
&lt;h1&gt;Call for Papers&lt;/h1&gt;
&lt;p&gt;We welcome contributions from the industry as well as the academic world. Indeed, industrial research and development as well academic research face the challenge of mastering IT tools for exploration, modeling and analysis.&lt;/p&gt;
&lt;p&gt;We look forward to hearing your recent breakthroughs using Python! Please read the &lt;a href=&quot;http://conference.scipy.org/call_for_papers&quot;&gt;full call for papers&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;Important Dates&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Friday, June 26: Abstracts Due&lt;/li&gt;
&lt;li&gt;Saturday, July 4: Announce accepted talks, post schedule&lt;/li&gt;
&lt;li&gt;Friday, July 10: Early Registration ends&lt;/li&gt;
&lt;li&gt;Tuesday-Wednesday, August 18-19: Tutorials&lt;/li&gt;
&lt;li&gt;Thursday-Friday, August 20-21: Conference&lt;/li&gt;
&lt;li&gt;Saturday-Sunday, August 22-23: Sprints&lt;/li&gt;
&lt;li&gt;Friday, September 4: Papers for proceedings due&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The SciPy 2009 executive committee&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Jarrod Millman, UC Berkeley, USA (Conference Chair)&lt;/li&gt;
&lt;li&gt;Gaël Varoquaux, INRIA Saclay, France (Program Co-Chair)&lt;/li&gt;
&lt;li&gt;Stéfan van der Walt, University of Stellenbosch, South Africa (Program Co-Chair)&lt;/li&gt;
&lt;li&gt;Fernando Pérez, UC Berkeley, USA (Tutorial Chair)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: I correct the typo in the original blog post: the sprints are free, the tutorial are $100.&lt;/p&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: The Productive Programmer</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/nIjhZj9L7Vg/"/>
		<id>http://matt.eifelle.com/?p=560</id>
		<updated>2009-06-16T08:49:18+00:00</updated>
		<content type="html">&lt;p&gt;What an appetizing title! This book is part of an O&amp;#8217;Reilly serie that treats a lot of interesting topic. Contrary to &lt;a href=&quot;http://matt.eifelle.com/2008/09/16/book-review-beautiful-code-leading-programmers-explain-how-they-think/&quot;&gt;Beautiful Code&lt;/a&gt;, this one is much shorter but the title suggest it is much more pragmatic.&lt;br /&gt;
&lt;span id=&quot;more-560&quot;&gt;&lt;/span&gt;&lt;br /&gt;
Each time, the author has some thing to say, it starts with a small phrase that can be disturbing, and then a complete explanation follows. This means you should be ready to be shaken, what the author tries to teach you are sometimes things you have to think about twice (at least I had this feeling).&lt;br /&gt;
The book is plit in two parts, theory and pratice. The first one is the longest, with 4 chapters, still the second has more chapters, with 10 ones.&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;So the first part is about theory. A lot of things make sense, and even if you didn&amp;#8217;t read the book, you should know them. Acceleration is about how you can do things faster. Well, it&amp;#8217;s not much about developing than setting up you work environment (search utilities, shells, &amp;#8230;) so that you can access things faster. Focus is about maintaining focus during development. Less distractions so that you can keep be focused (you need 15 minutes until you achive maximum productivity, so if you&amp;#8217;re interrupted every 5 minutes, it&amp;#8217;s cumbersome), more space on your desktop with several monitors or virtual desktops (the book gives links to useful tools, like virtual desktops for Windows), &amp;#8230; Automation is linked to acceleration, but it is more, it is about doing the same thing several times. Different tools (bash, ruby, &amp;#8230;) are used in different examples. What I mainly remember is that you need to master several different tools. The last chapter is Canonality, or the DRY principle (Don&amp;#8217;t Repeat Yourself). There are several cases where you seem to need to have several times the same things (when maintaining UML diagrams, for instance), and then using automation, you can have canonality. This is spreading through several pages, and although it is natural to use automation to achieve canonality, you have to realize it first.&lt;/p&gt;
&lt;p&gt;The second part is about practice, and more exactly what tools and processes you should use, based on the author&amp;#8217;s experience. It seems to be mainly based on the agile patterns, with a start on test-driven development, and then several topics on software architecture, and they come regularly back in following chapters (a good thing INO). Two chapters are about the old times, one dedicated to what good can be extracted from past experiences, and one dedicated to bad experiences that keep on harming development (mainly people that think they know the truth, without questionning themselves, the so-called angry monkeys). The last two chapters are about using the right language for the application and using the right tool (the IDE in this case) for maximum productivity. This part about the actual ways of being more productive achieves, IMHO, its goal with good impulses for a productive programmer.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;A lot of the tools that are presented in the first part are not free or open source, and sometimes there exists alternatives in the free community, so you have to look for them. The secon part tends to look more towards those free tools.&lt;br /&gt;
The whole book is definitely about good practices, with some more controversial than others. Some of them are also difficult to apply to any language, as tools for this practice are missing. I think the book describes a good set of practices to try to apply personnally ; at least, I&amp;#8217;ve decided to try to and to better use the command-line and my IDEs (also fight angry monkeys).&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0596519788/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/61dx4Iu-fyL._SL75_.jpg&quot; width=&quot;57&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0596519788/masbl03-20&quot; target=&quot;_blank&quot;&gt;The Productive Programmer (Theory in Practice (O&amp;#8217;Reilly))&lt;/a&gt; (Paperback)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Neal Ford&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 0596519788&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 26.39&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;53 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 19.75&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.5.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4.5 | 20
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/TOjhBvKPlNqM2iqHBs1-2oKUcmM/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/TOjhBvKPlNqM2iqHBs1-2oKUcmM/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/TOjhBvKPlNqM2iqHBs1-2oKUcmM/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/TOjhBvKPlNqM2iqHBs1-2oKUcmM/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/nIjhZj9L7Vg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Fuzzy on OOP and the French</title>
		<link href="http://gael-varoquaux.info/blog/?p=103"/>
		<id>http://gael-varoquaux.info/blog/?p=103</id>
		<updated>2009-06-14T09:38:58+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.voidspace.org.uk/python/weblog/arch_d7_2009_06_13.shtml#e1097&quot;&gt;Fantastic&lt;/a&gt;:&lt;/p&gt;
&lt;address&gt;Haha - I shake my fuzzywuzzy beard at you in bewilderment. Do you people dislike OOP, the class statement is mere boilerplate to you, I mumble incoherent French obscenities in your general direction. (Did you know the French acronym for object-oriented programming is POO?).&lt;/address&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">June 19 Public Webinar on Python for Scientific Computing</title>
		<link href="http://blog.enthought.com/?p=121"/>
		<id>http://blog.enthought.com/?p=121</id>
		<updated>2009-06-12T16:27:58+00:00</updated>
		<content type="html">&lt;p&gt;I had such a blast at the last public webinar that we did to promote Python for Scientific Computing.  I am really looking forward to the next webinar which is only a week away (June 19).  We had 100 people attend the last one.  I know that some who wanted to attend could not because of a mix-up on times, or a problem with the fact that GoToMeeting doesn&amp;#8217;t support Linux (I&amp;#8217;m not very happy about that, but I don&amp;#8217;t see another option right now).    I apologize for all those problems, but hope you will try to attend again.  &lt;/p&gt;
&lt;p&gt;There is a lot that we could cover in these webinars, and I&amp;#8217;m anxious for your feedback about what you would like to see.  My plan is to put a schedule together so the topics are listed through the end of December after this next webinar.   Now is the chance to make your opinion known if you&amp;#8217;d like to steer these webinars in a particular direction.   Schedules are busy and varied, so I&amp;#8217;d like to give plenty of notice so that more people can attend the webinar they are most interested in.   &lt;/p&gt;
&lt;p&gt;In this upcoming webinar we are going to provide an introduction and demo of Chaco (which we didn&amp;#8217;t get to the last time).  If there is time, I will also continue the Mayavi demonstration (particular the mlab interface) that we started last time, but I also wanted to showoff EPDLab to a wider audience.  You can register for the webinar at &lt;a href=&quot;https://www1.gotomeeting.com/register/303689873&quot;&gt;https://www1.gotomeeting.com/register/303689873&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&quot;http://www.enthought.com/training/webinars.php&quot;&gt;EPD subscriber webinar&lt;/a&gt; on June 5th, we discussed EPDLab (an open-source interactive Python environment included as part of EPD).  Because EPDLab is a free and open-source project that anyone can participate in, contribute code to, and use as they would like, I think it deserves some attention at this next public webinar.   Not only does it provide an enhanced scientific computing environment, it also provides an introduction to the Enthought Tool Suite (a free and open-source collection of tools for building compelling scientific applications &amp;#8212; it goes by the abbreviation ETS).   &lt;/p&gt;
&lt;p&gt;I hope you will excuse a brief aside to clarify &lt;a href=&quot;http://code.enthought.com&quot;&gt;ETS&lt;/a&gt; and its relationship to &lt;a href=&quot;http://www.enthought.com/products/epd.php&quot;&gt;EPD&lt;/a&gt;.  Because we do sell a binary distribution of Python tools called the Enthought Python Distribution (EPD &amp;#8212; which also happens to contain ETS), there is sometimes some confusion regarding the license and availability of ETS.   ETS is a &lt;strong&gt;large&lt;/strong&gt; BSD-licensed open-source collection of tools with a public SVN repository that anyone can contribute to and participate in the development of.   Enthought has released a lot of code in that library which has made it possible for us to write sophisticated, compelling, and attractive scientific computing applications for our customers.   ETS contains multiple separate projects.   The most important and developed of these projects are Mayavi, Chaco, Traits, TraitsUI, and Envisage.  You can learn more about ETS at &lt;a href=&quot;http://code.enthought.com&quot;&gt;Enthought&amp;#8217;s open source portal&lt;/a&gt;.   &lt;/p&gt;
&lt;p&gt;But, Enthought is a small company and the majority of our marketing effort right now is centered around getting the word out about &lt;a href=&quot;http://www.enthought.com/products/epd.php&quot;&gt;EPD&lt;/a&gt; and our other products and services like &lt;a href=&quot;http://www.enthought.com/training/&quot;&gt;training&lt;/a&gt; and &lt;a href=&quot;http://www.enthought.com/consulting/&quot;&gt;custom software creation&lt;/a&gt;.    We don&amp;#8217;t have the man-power to advertise ETS very well at the same time, and it can be a little confusing that EPD the distribution does cost money for commercial use, but ETS is free and open-source.   Fortunately, people like Gael Varoquaux and Prabhu Ramachandran lead the internet charge to spread the word about the great tools in ETS. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m looking forward to seeing many of you on-line again at 1:00pm (Central Daylight Time) on &lt;a href=&quot;https://www1.gotomeeting.com/register/303689873&quot;&gt;Friday, June 19th&lt;/a&gt;.   Slides and a recording of the webinar will also be made available &lt;a href=&quot;http://www.enthought.com/training/webinars.php&quot;&gt;here&lt;/a&gt; after conclusion of the webinar. &lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">A great list of testing anti-patterns</title>
		<link href="http://ivory.idyll.org/blog/jun-09/a-great-list"/>
		<id>http://ivory.idyll.org/blog/2009/06/10/a-great-list</id>
		<updated>2009-06-11T00:07:43+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;This &lt;a class=&quot;reference&quot; href=&quot;http://blog.james-carr.org/2006/11/03/tdd-anti-patterns/&quot;&gt;TDD anti-pattern catalogue&lt;/a&gt; is truly excellent!&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Review of Intel Parallel Studio (beta)</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/qg6QVdr6vuA/"/>
		<id>http://matt.eifelle.com/?p=502</id>
		<updated>2009-06-09T08:33:01+00:00</updated>
		<content type="html">&lt;p&gt;Since this post, Intel has officially released Parallel Studio. This is why I&amp;#8217;ve published &lt;a href=&quot;http://matt.eifelle.com/2009/07/07/review-of-intel-parallel-studio/&quot;&gt;a new, up-to-date review here&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/pAjvL5rSV4A6dFMpYiKSEwucT_E/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/pAjvL5rSV4A6dFMpYiKSEwucT_E/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/pAjvL5rSV4A6dFMpYiKSEwucT_E/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/pAjvL5rSV4A6dFMpYiKSEwucT_E/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/qg6QVdr6vuA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Job offering for junior Python developer</title>
		<link href="http://gael-varoquaux.info/blog/?p=102"/>
		<id>http://gael-varoquaux.info/blog/?p=102</id>
		<updated>2009-06-07T18:53:36+00:00</updated>
		<content type="html">&lt;p&gt;Our lab is seeking to hire an engineer to work on porting our machine learning code to the scikit learn, adding tests and documentation and packaging it.&lt;/p&gt;
&lt;p&gt;We are looking for someone motivated by quality in software and open source. No prior scientific computing experience is required. You will be working in a highly stimulating research environment (&lt;a href=&quot;http://www-dsv.cea.fr/neurospin/&quot;&gt;Neurospin&lt;/a&gt;), near Paris and employed by the French research institute in computer science and applied math (&lt;a href=&quot;http://www.inria.fr/saclay/home/view?set_language=en&quot;&gt;INRIA&lt;/a&gt;), a prestigious institution.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www-dsv.cea.fr/neurospin/&quot;&gt;Neurospin&lt;/a&gt; is a research institute dedicated to the understanding of the brain. You will be working with computer-assisted neurology laboratory, the image-analysis and branch of Neurospin, in the small &amp;#8216;Parietal&amp;#8217; INRIA team embedded in NeuroSpin and dedicated to statistical modeling.&lt;/p&gt;
&lt;p&gt;Over the years, the lab has developed a set of tools for machine learning and statistical analysis in Python (with some C). There are some tools for this purpose available in the open-source world (BSD-licensed) in the scikit learn. We want to extract the good and unique parts of our internal library, and release it in the open source world through the scikit learn. Our code is fully Python code, using scipy and matlab, with some bindings to R. As we want the code to be BSD-licensed, we will remove the bindings with R, and replace when possible. The job does not involve developing new algorithms, but testing, improving, and documenting the existing one. There is a big quality assurance work to be done. The code needs to be put to the right coding standards; APIs should be cleaned; tests added. Dead code should be delete. There is some optimization work to be done. Also, if there is any duplicated funcitonnality with the scikit learn, you should analyse both code and determine which one to code. The job also involves working with the community, documentating the code, and releasing the project, including binary packages. And finally, all the original authors of the algorithms, and experts in the field, are in the lab. So you will be able to learn from them and pester them if there is a problem with the code.&lt;/p&gt;
&lt;p&gt;In one word, this is about transforming an internal project, into a leading open source project that will rock and live on!&lt;/p&gt;
&lt;p&gt;The job description is available &lt;a href=&quot;http://www.inria.fr/travailler/mrted/fr/jd/details.html?id=PGTFK026203F3VBQB6G68LONZ&amp;amp;LOV5=4510&amp;amp;ContractType=4545&amp;amp;LG=FR&amp;amp;Resultsperpage=20&amp;amp;nPostingID=3487&amp;amp;nPostingTargetID=7675&amp;amp;option=52&amp;amp;sort=DESC&amp;amp;nDepartmentID=10&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are to caveats: first it is a 2 year position. Second, you need to have graduated recently (how recently I don&amp;#8217;t know exactly, but I will inquire).&lt;/p&gt;
&lt;p&gt;If you are interested, or just want to ask questions, don&amp;#8217;t hesitate to send me an e-mail, I am _really_ looking forward to collaborate with someone motivated on this project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I have more details on the restrictions of the job offering: you need to have graduated in 2008 or 2009. This is a very hard restriction, and I am recieving many excellent CVs that I even consider because of this restriction. I am sorry, I cannot do anything about it&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">First EPD Webinar</title>
		<link href="http://blog.enthought.com/?p=120"/>
		<id>http://blog.enthought.com/?p=120</id>
		<updated>2009-06-05T22:11:14+00:00</updated>
		<content type="html">&lt;p&gt;I wanted to thank everybody who came to the first EPD Webinar which was held today at 1:00pm CDT in our offices at Austin.  We had a few technical glitches which our team resolved quickly.  I then spent about 30 minutes showing off new features of EPD such as EPDLab, indexed searching of docstrings with Whoosh, and the new curve_fit function from scipy.optimize.  Dave Peterson then spent about 30 minutes showing the use of enpkg which is a command in EPD to allow update, upgrade, and rollback service for egg-packages.    This tool should allow subscribers to EPD to keep up to date without having to download and install new installers every time a release is made.  &lt;/p&gt;
&lt;p&gt;A packaging tool like enpkg has been on the roadmap since the beginning, and it was encouraging to see it in action.  There are still a few speed and &amp;#8220;verbosity&amp;#8221; issues that we are cleaning up, but it looks like a good start to what should be a very useful feature for EPD.&lt;/p&gt;
&lt;p&gt;In the future, the EPD webinars will contain about 30-45 minutes of training material drawn from the 7-days of course material on scientific computing with Python that we teach regularly.   If there are particular points you would like to see covered, please let us know at &lt;a href=&quot;mailto:info@enthought.com&quot;&gt;info@enthought.com&lt;/a&gt;.   The current plan for the next EPD Webinar is to provide training on the statistical capabilities of SciPy.&lt;/p&gt;
&lt;p&gt;All who attended had the chance to ask questions directly of the Enthought attendees.  We look forward to answering more of your questions in the future.   The next EPD webinar is scheduled for &lt;a href=&quot;https://www1.gotomeeting.com/register/271908016&quot;&gt;Friday, July 3 at 1:00pm CDT&lt;/a&gt;.   If you are an EPD Subscriber at the &lt;a href=&quot;http://www.enthought.com/products/support_level_table.php&quot;&gt;Basic level&lt;/a&gt;, please &lt;a href=&quot;https://www1.gotomeeting.com/register/271908016&quot;&gt;register&lt;/a&gt;.   We look forward to your attendance and questions.  Feel free to send pre-webinar questions to &lt;a href=&quot;mailto:info@enthought.com&quot;&gt;info@enthought.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The next public webinar for general scientific computing with Python is&lt;br /&gt;
&lt;a href=&quot;https://www1.gotomeeting.com/register/303689873&quot;&gt;Friday, June 19 at 1:00pm CDT&lt;/a&gt;.   This webinar is open to all that would like to attend.    Right now the plan is to show-off the open-source EPDLab and give an overview of all the tools that are brought together in EPD.   You can sign up now for the event.   I look forward to seeing many of you attend.&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">EPD: Aiming for x86_64 OS X builds</title>
		<link href="http://blog.enthought.com/?p=119"/>
		<id>http://blog.enthought.com/?p=119</id>
		<updated>2009-06-04T17:09:03+00:00</updated>
		<content type="html">&lt;p&gt;We&amp;#8217;ve recently made the decision to start applying resources to generating x86_64 OS X builds of EPD.  Because of limited resources, this means we&amp;#8217;re officially dropping PPC support in EPD.  It also means that it may take us months to get things released for the x86_64 (also known as amd64) architecture.&lt;/p&gt;
&lt;p&gt;As an example of some of the issues we&amp;#8217;ll face, we&amp;#8217;ll need to decide how to handle the GUI backend situation.  You see, the wxWidgets project hasn&amp;#8217;t yet released 64-bit build support for OS X&amp;#8217;s Cocoa framework, and the Carbon framework isn&amp;#8217;t 64-bit, so we&amp;#8217;re stuck either starting with a &amp;#8220;server&amp;#8221; / console build of EPD, shipping on an unreleased version of wxWidgets, delaying the release while we help finalize x86_64 Cocoa builds of wxWidgets and wxPython, or switching to a different backend like Qt.&lt;/p&gt;
&lt;p&gt;While Qt and the PyQt (Python bindings for Qt) seems like a no-brainer technology-wise, the license situation is a hurdle for us to overcome.  We&amp;#8217;ve tried hard, but haven&amp;#8217;t always succeeded, to avoid GPL licensed projects in EPD in order to make it more palatable to commercial users, like even our own consulting projects.  And, yes, Qt itself recently came out with an LGPL license option that would suit EPD&amp;#8217;s needs, but PyQt isn&amp;#8217;t similarly licensed (yet).  So now we have to decide whether such a core capability (the only GUI backend of OS X x86_64) would be acceptable to be GPL licensed.&lt;/p&gt;
&lt;p&gt;If any one has any thoughts or suggestions on how to resolve this issue, please don&amp;#8217;t hesitate to let us know!&lt;/p&gt;
&lt;p&gt;By the way, regarding the PPC situation, we have effectively already started to drop PPC support with the EPD Py25 v4.3.0 release.  We made a good faith effort to build in the PPC support but simply didn&amp;#8217;t do significant testing of the results.  In the end, it turns out that at least one core module, SciPy, ended up with binaries that don&amp;#8217;t fully support PPC.  Sorry, but we do not plan to issue fixes for this.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re a PPC user, the last working version of EPD for PPC was EPD Py25 v4.2.30201.&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: Game Guru: Strategy Games</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/4GleC6DtS-8/"/>
		<id>http://matt.eifelle.com/?p=489</id>
		<updated>2009-06-04T08:03:54+00:00</updated>
		<content type="html">&lt;p&gt;Strategy games are the type of games I prefer. Turn-based or real-time, they share some common ground. This book tries to explain them.&lt;br /&gt;
&lt;span id=&quot;more-489&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;The book is split in three parts: war, peace and design.&lt;/p&gt;
&lt;p&gt;War is generally at the center of a strategy game (war, or tensions that can lead to it). War consists of units fighting together. Equilibrium is something that is not easy to achieve, and the game must suggest different strategies with those units to remain interesting. Relevant facts about those topics are introduced.&lt;/p&gt;
&lt;p&gt;The Peace chapter is not only about peace, perhaps only truce before the war. It&amp;#8217;s about resources, technologies or stuff like that. It is not mentioned that too many different resources can lead to a bad game as well (too complicated to handle, an AI that cannot cope with it can ruin the game, &amp;#8230;)&lt;/p&gt;
&lt;p&gt;Finally, almost half of the book is dedicated to design. Not only interface design, but also game and gameplay design. Do I need a hero? How far does the world strech? These kind of questions can make really different games, and also a game that wanted things to big can in the end be a failure because of these.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;This small book can be read in a few hours. It is mainly based on actual game images, but their legends are too small, especially when they convey useful information. This problem put aside, the book is really enjoyable, it does not go into too many details, only to give a first overview of what a strategy game should be.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1592002536/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/61BI5lYAbAL._SL75_.jpg&quot; width=&quot;66&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1592002536/masbl03-20&quot; target=&quot;_blank&quot;&gt;Game Guru: Strategy Games&lt;/a&gt; (Paperback)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Dave Morris&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 1592002536&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt; &amp;#8212;&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;21 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 8.95&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4 | 1
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/TUcmaY1_h7aUceVcgbW5UmYfwMk/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/TUcmaY1_h7aUceVcgbW5UmYfwMk/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/TUcmaY1_h7aUceVcgbW5UmYfwMk/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/TUcmaY1_h7aUceVcgbW5UmYfwMk/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/4GleC6DtS-8&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Seeking: independent study student for tech reporting on Python</title>
		<link href="http://ivory.idyll.org/blog/jun-09/python-reporter"/>
		<id>http://ivory.idyll.org/blog/2009/06/03/python-reporter</id>
		<updated>2009-06-03T14:12:31+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;I'd like to find an MSU student to report semi-monthly on python-dev.
The student would be responsible for monitoring the python-dev mailing
list and active PEPs, summarizing substantive discussions in a public
forum, and integrating feedback from the community.  This would be a 1
credit CSE independent study course (CSE 490).  Additional effort (for
more credits) could be applied towards building and maintaining a CMS
site to store and reference past and present summaries, or integrating
reviews of new modules.&lt;/p&gt;
&lt;p&gt;The ideal student would be someone who communicates well in writing,
is interested in technical reporting, and has some basic experience
with programming.  Python experience (CSE 231) is a plus.&lt;/p&gt;
&lt;p&gt;Please send a brief summary of interests together with a sample of
writing to &lt;a class=&quot;reference&quot; href=&quot;mailto:ctb&amp;#64;msu.edu&quot;&gt;ctb&amp;#64;msu.edu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Hey look, it works!</title>
		<link href="http://ivory.idyll.org/blog/jun-09/hey-look-it-works"/>
		<id>http://ivory.idyll.org/blog/2009/06/02/hey-look-it-works</id>
		<updated>2009-06-03T02:57:18+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;Apparently the &lt;a class=&quot;reference&quot; href=&quot;http://docs.python.org/dev/py3k/library/ipaddr.html&quot;&gt;ipaddr module&lt;/a&gt; in Python 3.1
is disliked by some, and there was a &lt;a class=&quot;reference&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2009-June/089809.html&quot;&gt;reasonably robust discussion&lt;/a&gt;
on python-dev about how it's wrong, wrong, wrong.  &lt;a class=&quot;reference&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2009-June/089840.html&quot;&gt;Guido finally
ruled&lt;/a&gt;:
ixnay on the addr-pay.&lt;/p&gt;
&lt;p&gt;This is pretty relevant given the twitstorm caused by Zed
Shaw's &lt;a class=&quot;reference&quot; href=&quot;http://www.zedshaw.com/blog/2009-05-29.html&quot;&gt;ludicrously self-confident rants&lt;/a&gt; about &lt;a class=&quot;reference&quot; href=&quot;http://www.zedshaw.com/blog/2009-05-30.html&quot;&gt;how he always
knows best and is a kickass programmer&lt;/a&gt; and oh, by the way,
the Python stdlib is kinda lousy in places.  I think the thing to take
away from Zed's rant is that the Python module addition process is, in
fact, moderately FUBARed, with some people able to add perhaps
ill-considered modules while others have to struggle to get the time
of day.  (Aahz's &lt;a class=&quot;reference&quot; href=&quot;http://mail.python.org/pipermail/python-dev/2009-June/089843.html&quot;&gt;solution&lt;/a&gt;
is good -- require a PEP.)&lt;/p&gt;
&lt;p&gt;It's relevant personally, too, as I dig my way through some of pygr's
modules.  It's &lt;em&gt;way&lt;/em&gt; easier to add code than it is to refactor it,
especially if you don't have a lot of unit tests; if you want to
retain backwards compatibility, you're basically doomed.  DOOOMED, I
say!  And that's why the Python stdlib has so many issues.&lt;/p&gt;
&lt;p&gt;(Incidentally, nothing against Zed Shaw -- obnoxiousness is his public
persona, and he's definitely worth listening too -- but it is funny to
realize that all his articles contain arguments that boil down to &amp;quot;he
always knows best and is a kickass programmer.&amp;quot;  I especially liked
&lt;a class=&quot;reference&quot; href=&quot;http://www.zedshaw.com/essays/programmer_stats.html&quot;&gt;his statistics rant&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">A quick hack to use the MKL with numpy/scipy on Linux</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/DoQyZdEg6Uo/"/>
		<id>http://matt.eifelle.com/?p=513</id>
		<updated>2009-06-02T08:17:00+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;ve promised to make an update whenever I would find a solution to &lt;a href=&quot;http://matt.eifelle.com/2008/11/03/i-used-the-latest-mkl-with-numpy-and.../&quot;&gt;the problem I had some months ago&lt;/a&gt; when I tried to use the latest MKL with numpy. Well, there was a simple hack that did the trick. It is far from being perfect, but at least, the tests pass now.&lt;br /&gt;
So the only thing you have to do is to export the &lt;strong&gt;LD_PRELOAD&lt;/strong&gt; variable:&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot;&gt;View Code&lt;/a&gt; SHELL&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot;&gt;&lt;tr id=&quot;p5136&quot;&gt;&lt;td class=&quot;code&quot; id=&quot;p513code6&quot;&gt;&lt;pre class=&quot;shell&quot;&gt;export LD_PRELOAD=/path/to/the/MKL/lib/libmkl_core.so&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/ZKPq5n4LFarY311AO3XS2Fo25nI/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/ZKPq5n4LFarY311AO3XS2Fo25nI/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/ZKPq5n4LFarY311AO3XS2Fo25nI/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/ZKPq5n4LFarY311AO3XS2Fo25nI/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/DoQyZdEg6Uo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">The EPD repository has RSS feeds</title>
		<link href="http://blog.enthought.com/?p=118"/>
		<id>http://blog.enthought.com/?p=118</id>
		<updated>2009-06-01T21:18:51+00:00</updated>
		<content type="html">&lt;p&gt;We&amp;#8217;ve just updated the EPD product website with links to a new EPD repository RSS feed: &lt;a href=&quot;http://www.enthought.com/products/epd-rss.xml&quot;&gt;http://www.enthought.com/products/epd-rss.xml&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feed is updated every time we release an update / upgrade to a project included in EPD, and soon everytime we publish a new installer.  All entries into the feed specify the platform the update / upgrade was released for, the date and time of release, the name of the thing being updated / upgraded, and a short description of the project being updated.&lt;/p&gt;
&lt;div&gt;&lt;img src=&quot;http://www.enthought.com/img/epdlogosm.png&quot; height=&quot;149&quot; width=&quot;150&quot; /&gt;&lt;/div&gt;
&lt;p&gt;We&amp;#8217;ve added this feed to both the main EPD product page, and also the &amp;#8216;Download&amp;#8217; page &amp;#8212; they&amp;#8217;re the same feed so no need to subscribe twice!  For those with browsers that recognize RSS declarations in the page/HTML headers, you&amp;#8217;ll see the RSS feed icon in your browser&amp;#8217;s URL field when visiting these pages.   For others, simply click on the explicit RSS link on the main page right under the big, red, &amp;#8220;Download Now&amp;#8221; button.&lt;/p&gt;
&lt;p&gt;As an alternative to this all-platforms feed which is available to everyone, even those without an EPD subscription at all, current EPD subscribers with access to the repository can subscribe to a filtered RSS feed for their target platform(s).  These can be found within the  various platform-specific directories under the top-level &amp;#8216;eggs&amp;#8217; directory.  Note that only those with &amp;#8216;Basic&amp;#8217; subscriptions and above can access the repository.&lt;/p&gt;
&lt;p&gt;Please don&amp;#8217;t hesitate to send us suggestions on how we can continue to improve EPD!&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Webinar recording available</title>
		<link href="http://blog.enthought.com/?p=117"/>
		<id>http://blog.enthought.com/?p=117</id>
		<updated>2009-05-26T20:58:55+00:00</updated>
		<content type="html">&lt;p&gt;Enthought&amp;#8217;s &lt;a href=&quot;http://blog.enthought.com/?p=116&quot;&gt;first public webinar&lt;/a&gt; was a success, despite a few technical glitches. The large attendance in spite of the short notice was gratifying. Travis was able to cover only a fraction of the material he had hoped to cover, so there is plenty of material for future sessions (such as Chaco and Mayavi).&lt;/p&gt;
&lt;p&gt;The recording of the webinar is now &lt;a href=&quot;http://www.enthought.com/training/webinars.php&quot;&gt;available for download&lt;/a&gt;. While the native recording format of GoToWebinar is Windows Media Player, we have converted it to &lt;a href=&quot;http://en.wikipedia.org/wiki/Matroska&quot;&gt;Matroska &lt;/a&gt;format, so we hope that folks on all platforms will be able to view it. Please let us know if you have problems getting or playing it.&lt;/p&gt;
&lt;p&gt;The next public webinar will be &lt;a href=&quot;https://www1.gotomeeting.com/register/303689873&quot;&gt;Friday, June 19 at 1:00 CDT&lt;/a&gt;. Specific topics TBD.&lt;/p&gt;
&lt;p&gt;Meanwhile, we are launching a second webinar series, exclusively for subscribers to the Enthought Python Distribution at the &lt;a href=&quot;http://www.enthought.com/products/epd_sublevels.php&quot;&gt;Basic support level or higher&lt;/a&gt;.  Those subscribers will receive an e-mail announcement shortly.&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: IronPython in Action</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/a09SkdFkNhA/"/>
		<id>http://matt.eifelle.com/?p=505</id>
		<updated>2009-05-26T08:30:30+00:00</updated>
		<content type="html">&lt;p&gt;IronPython is the first dynamic language developed for the .Net plateform. At first, .Net didn&amp;#8217;t support this kind of language. This is something that keeps on coming back througout the book: you have to use some additional tricks to unleash the power of .Net dynamic and static languages.&lt;br /&gt;
&lt;span id=&quot;more-505&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;The book starts with a general introduction to IronPython. A quick review of the language itself is followed by the use of the .Net assemblies. At the end of this part, one is comfortable enough to do some small IronPython programs.&lt;br /&gt;
The next part is dedicated to what IronPython offers thanks to Python and to its .Net affiliation. The authors go through standard Python (battery included) and the somewhat associated .Net assemblies (some arguments on using one or the other could have been a big plus to the explanations), depending on what must be done. Because or (or thanks to) .Net, several pages are dedicated to XML, as it is needed to simplify the description of UIs. Also several useful designed patterns are presented with the .Net approach.&lt;br /&gt;
The next part starts with WPF, the official graphical interface, with several ways of using it (bridge from C#, XAML, &amp;#8230;). Then WMI (used for system administration) is handled, but from my point of view, it is the weirdest part. WMI has its own language which does not seem like C# or Python. Besides, PowerShell, presented as well as a way of doing system administration, has its own language. There is a book dedicated to PowerShell, so only the communication between IronPython and PowerShell is handled. So two additional languages in this chapter, perhaps too many (they are limited to this chapter).&lt;br /&gt;
IronPython is a .Net language, so it is possible to do ASP with it. A chapter deals with this approach, chapter well written but it needs to follow the associated example in your favorite IDE if you want to follow what&amp;#8217;s happening. Web means also web services and databases, handled in one chapter. The basis of SQL tools addressed, as well as basic webservces (mainly REST). I have to say that there are some mistakes there, as SOAP is not only used with POST HTTP requests but also with GET requests (it can be seen in the official w3c specification) and also with other transport protocols than HTTP. Perhaps these are .Net implementation&amp;#8217;s limitation, in which case it should have been mentioned Finally Silverlight integration allows developping light clients that can interact with other langages as well as the web page.&lt;br /&gt;
Throughout the book, complete interaction with other .Net languages was not addressed. It is the goal of the last part to show how assemblies can be used in IronPython and how IronPython scripts can be used from .Net static languages. As I&amp;#8217;ve said, the interaction does not go completely smoothly, there are several solutions to accomplish it. At least, the book does not only speak about the upcoming .Net 4.0 that will help this interaction.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;As a conclusion, those who need a dynamic language (to script an application) can go for IronPython, th first dynamic language for the .Net framework, compatible with the langage Python 2.5, and in that case, go for &lt;a href=&quot;http://www.manning.com/affiliate/idevaffiliate.php?id=1061_152&quot;&gt;this book&lt;/a&gt; that will help you for anything.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1933988339/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/5100iL6V3uL._SL75_.jpg&quot; width=&quot;60&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1933988339/masbl03-20&quot; target=&quot;_blank&quot;&gt;IronPython in Action&lt;/a&gt; (Paperback)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Michael Foord, Christian Muirhead&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 1933988339&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 29.69&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;44 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 21.50&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.5.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4.5 | 7
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/MQXHtf-Dq0oVIe05S2FFA4p5jGw/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/MQXHtf-Dq0oVIe05S2FFA4p5jGw/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/MQXHtf-Dq0oVIe05S2FFA4p5jGw/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/MQXHtf-Dq0oVIe05S2FFA4p5jGw/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/a09SkdFkNhA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">cournape</title>
		<link href="http://cournape.wordpress.com/2009/05/25/the-every-linux-distribution-should-have-the-same-package-manager-fallacy/"/>
		<id>http://cournape.wordpress.com/2009/05/25/the-every-linux-distribution-should-have-the-same-package-manager-fallacy/</id>
		<updated>2009-05-25T11:16:44+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I have heard several times that every linux distribution should have the same package manager (where it is understood that there is one-too-many within the rpm vs deb), and it was mentioned once again recently in a well publicized video (see on &lt;a href=&quot;http://linuxhaters.blogspot.com/2009/05/poser-hater.html&quot;&gt;linux hater blog&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The argument goes as follows: doing packaging takes time, and making packages for every distribution is a waste of time. If every distribution used the same package system, it would be much better for 3rd party distributors. Many people answer that competition is good, having many distributions is what makes Linux great &amp;#8211; [insert usual stuff about how good Linux is]. &lt;/p&gt;
&lt;p&gt;While it is true that multiple packages systems means more work, saying that there should only be one is kinda clueless &amp;#8211; I wonder if anyone pushing for this has even done any rpm/deb pacaking. What makes deb vs rpm a problem is not that they are different formats, like say zip vs gunzip, but that they are deployed on different systems. A RHEL rpm won&amp;#8217;t work great on Mandrake, and even if a lot of debian .deb work on Ubuntu, it is not always ideal. The problem is that each distribution-specific package needs to be designed for the target distribution. To build a rpm or a deb package, you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To decide where to put what&lt;/li&gt;
&lt;li&gt;To encode the exact versions for the dependencies&lt;/li&gt;
&lt;li&gt;To decide how to handle configuration files, set up start/stop scripts for servers, etc&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basically, almost everything which makes the difference between a distribution A and B ! For file locations, the LSB tries to standardize on this, but some things are different, like where to put 64 vs &lt;br /&gt;32 bits libraries. One distribution may have libfoo 1.2, another one 1.3, so even if they are compatible, you can&amp;#8217;t use the same for every distribution. Or some libraries do not have the same name under different distributions.&lt;/p&gt;
&lt;p&gt;So requesting the &lt;b&gt;same package manager&lt;/b&gt; for every distribution &lt;b&gt;is almost equivalent to asking that every distribution should be the same. You can&amp;#8217;t have one without the other. &lt;/b&gt;You can argue that there should be only one distribution, but don&amp;#8217;t forget that Ubuntu appeared like 5 years ago.&lt;/p&gt;
&lt;p&gt;
&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img class=&quot;zemanta-pixie-img&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=19849173-fe67-858b-aff8-241f152a6cd7&quot; /&gt;&lt;/div&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cournape.wordpress.com/159/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cournape.wordpress.com/159/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cournape.wordpress.com/159/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cournape.wordpress.com/159/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cournape.wordpress.com/159/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cournape.wordpress.com/159/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cournape.wordpress.com/159/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cournape.wordpress.com/159/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cournape.wordpress.com/159/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cournape.wordpress.com/159/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=cournape.wordpress.com&amp;amp;blog=2210763&amp;amp;post=159&amp;amp;subd=cournape&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/p&gt;&lt;/div&gt;</content>
		<author>
			<name>David Cournapeau</name>
			<uri>http://cournape.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Nothing to say</title>
			<subtitle type="html">some personal notes</subtitle>
			<link rel="self" href="http://cournape.wordpress.com/feed/"/>
			<id>http://cournape.wordpress.com/feed/</id>
			<updated>2009-06-29T09:06:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Python for Scientific Computing Webinar</title>
		<link href="http://blog.enthought.com/?p=116"/>
		<id>http://blog.enthought.com/?p=116</id>
		<updated>2009-05-20T23:10:25+00:00</updated>
		<content type="html">&lt;p&gt;We are trying something new at Enthought.  I&amp;#8217;m going to host the first Enthought Webinar on Scientific Computing.   This webinar is free for people interested in showing up.   You should plan to come with a bit of patience as we may not have all the wrinkles worked out of the technology and what it means for having a discussion.   &lt;/p&gt;
&lt;p&gt;I want to spread the word about all the very cool tools that the Open Source community has produced for using Python in Science.  The first webinar will be on Friday at 3:00pm CDT.   You can attend via your computer by registering at the following link: &lt;a href=&quot;https://www1.gotomeeting.com/register/422340144&quot;&gt;Python for Scientific Computing Webinar&lt;/a&gt;.   I will be talking about NumPy, structured data-types, and memory mapped arrays (and how to use them for reading data quickly from files).  I will also be showing off Chaco for 2-d interactive visualization and Mayavi for 3-d visualization.   Come with questions as you will have the opportunity to ask them if you would like.   &lt;/p&gt;
&lt;p&gt;We will start 15 minutes early for people who want to get help setting up with the Webinar technology from GotoMeeting.   If you have never attended a Webinar before, you may want to come and try it out.   I look forward to seeing many of you online this Friday.&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Interactive RayTracer</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/n1FJMnNtnBU/"/>
		<id>http://matt.eifelle.com/?p=248</id>
		<updated>2009-05-19T08:28:02+00:00</updated>
		<content type="html">&lt;p&gt;Some months ago, I&amp;#8217;ve decided to dig into raytracing, and more exactly interactive raytracing. So I&amp;#8217;ve started writting my own library, based on several publications.&lt;br /&gt;
nVidia announced recently its own framework, Intel wants also to do raytracing on Larrabee, it is the current trend.&lt;br /&gt;
&lt;span id=&quot;more-248&quot;&gt;&lt;/span&gt;&lt;br /&gt;
First, raytracing is a tool to draw a picture from a scene. It&amp;#8217;s like a camera observing the scene, and to know the content of each pixel on the film, a ray is cast through the scene. Depending on the objects, rays will propagate to other objects or lights, and then the actual color of the camera pixel can then be computed.&lt;/p&gt;
&lt;p&gt;A raytracer is in fact really easy to write. The math formulae are simple for a version that will return satisfactory results. On the contrary, an interactive or &amp;#8220;real-time&amp;#8221; one is more complicated. This is why I started my small project and why I will blog from time to time about it.&lt;/p&gt;
&lt;p&gt;Interactive or real-time means that the drawing must be fast, really fast. This also means that realistic drawing is out of the question. I&amp;#8217;ve started with a simple raytracer, with some optimizations, and then I&amp;#8217;ve added some algorithmic optimizations. I will talk about all this in several posts.&lt;/p&gt;
&lt;h4&gt;How does a raytracer actually work?&lt;/h4&gt;
&lt;p&gt;In physical vision, light rays travel around the world from the sources, hitting objects, then reflected or transmitted and finally arriving at the eye (or camera). The principle of raytracing is to do it backwards, from the camera to the light sources. The camera film, or the retina, is symbolized by a screen.&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;div id=&quot;attachment_483&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://matt.eifelle.com/wp-content/uploads/2009/05/irt.png&quot;&gt;&lt;img src=&quot;http://matt.eifelle.com/wp-content/uploads/2009/05/irt-300x180.png&quot; alt=&quot;How a raytracer works&quot; title=&quot;Interaction of a ray with the scene&quot; width=&quot;300&quot; height=&quot;180&quot; class=&quot;size-medium wp-image-483&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;How a raytracer works&lt;/p&gt;&lt;/div&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;In this case, the emitted ray hits object 1 with some angle to the normal (the normal vector is the vector orthogonal to the tangent plane of the object). Object 1 gets some light and so the color ray depends on this light, the object and the angle between the normal and the direction of the light.&lt;br /&gt;
The ray is then reflected to object 2 and hits it with another angle. As for object 2, it gets some light and the reflected ray carries a specific color. This color is then blended with the color of the primary ray, and this final color is the color of the pixel on the screen.&lt;/p&gt;
&lt;h4&gt;Coming next&lt;/h4&gt;
&lt;p&gt;I&amp;#8217;ve written my library in C++, tested it with several compilers on different platforms. So as to test the code, to profile it and to create a scene in an elegant manner, I&amp;#8217;ve added a small Python wrapper. This will be the subject of my next post.&lt;/p&gt;
&lt;p&gt;Then, I&amp;#8217;ll go through secondary and shadow rays, a GUI for the raytracer, acceleration structures, &amp;#8230;&lt;/p&gt;
&lt;p&gt;The code is released under the LGPL on &lt;a href=&quot;https://launchpad.net/irt&quot;&gt;Launchpad&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Additional links&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;http://software.intel.com/en-us/articles/interactive-ray-tracing&quot;&gt;Interactive Raytracer on Intel website&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://software.intel.com/en-us/articles/architecture-of-a-real-time-ray-tracer-1&quot;&gt;An Intel article on real-time raytracer architecture&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://developer.nvidia.com/object/nvision08-IRT.html&quot;&gt;nVidia presentation on raytracing&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/1kf951H0DpYtfQOve6JpWKyBCFo/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/1kf951H0DpYtfQOve6JpWKyBCFo/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/1kf951H0DpYtfQOve6JpWKyBCFo/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/1kf951H0DpYtfQOve6JpWKyBCFo/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/n1FJMnNtnBU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry>
		<title type="html">Moving...</title>
		<link href="http://physionconsulting.blogspot.com/2009/05/moving.html"/>
		<id>tag:blogger.com,1999:blog-705646438436706806.post-3966800222141267582</id>
		<updated>2009-05-18T10:39:46+00:00</updated>
		<content type="html">The Physion Consulting blog will be moving to &lt;a href=&quot;http://blog.physionconsulting.com&quot;&gt;blog.physionconsulting.com&lt;/a&gt;. Please join us 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/705646438436706806-3966800222141267582?l=physionconsulting.blogspot.com&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Barry</name>
			<email>noreply@blogger.com</email>
			<uri>http://physionconsulting.blogspot.com/search/label/scipy</uri>
		</author>
		<source>
			<title type="html">Mad science</title>
			<link rel="self" href="http://physionconsulting.blogspot.com/feeds/posts/default/-/scipy"/>
			<id>tag:blogger.com,1999:blog-705646438436706806</id>
			<updated>2009-06-30T09:06:54+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Upgrading PlanetPlanet.</title>
		<link href="http://ivory.idyll.org/blog/may-09/planet-planet-planet"/>
		<id>http://ivory.idyll.org/blog/2009/05/17/planet-planet-planet</id>
		<updated>2009-05-17T19:53:01+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;OK Folks, I know that planet.python.org and planetpython.org underwent a
merger, and during the merger a new, or patched, or somehow &lt;em&gt;upgraded&lt;/em&gt; version
of planet went into effect on both.  However, I cannot find a link to the info
post any more.&lt;/p&gt;
&lt;p&gt;I would like to put the latest stable version of PlanetPlanet into effect
on the &lt;a class=&quot;reference&quot; href=&quot;http://soc.python.org/&quot;&gt;Google Summer of Code/Python site&lt;/a&gt; but
I am wary of using the devel repo without any inside info.  (I am
currently running 2.0, which is the latest official release.)&lt;/p&gt;
&lt;p&gt;Should I use the dev repo, or should I track down whatever version
planet.python.org is using?&lt;/p&gt;
&lt;p&gt;thanks!&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Pycon FR: presentations and tutorials</title>
		<link href="http://gael-varoquaux.info/blog/?p=101"/>
		<id>http://gael-varoquaux.info/blog/?p=101</id>
		<updated>2009-05-16T15:25:18+00:00</updated>
		<content type="html">&lt;p&gt;May 30th and 31st the French Python conference, &lt;a href=&quot;http://fr.pycon.org&quot;&gt;Pycon FR&lt;/a&gt;, will be held at &amp;#8216;la citée des sciences&amp;#8217;, la Villette, in Paris.&lt;/p&gt;
&lt;p&gt;The first day, I will be giving a one-hour-long tutorial (in French) on numpy, scipy, and all the Python for Science jazz. On the following day, I will be giving a half-hour-long talk to ilustrate the use of Python in my current work: statistical analysis and modelling of brain activity.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll be giving my tutorial in one room, while David Larlet (the famous Biologeek) will be giving one on Django in another room. Tough competition &lt;img src=&quot;http://gael-varoquaux.info/blog/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:-P&quot; class=&quot;wp-smiley&quot; /&gt; .&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://fr.pycon.org/sessions&quot;&gt;program&lt;/a&gt; of the conference is very eclectic, ranging from general programming talks, to GUIs or web development. While this might deter the pure scientific computing folks, I strongly encourage you to attend. Indeed, a lot of the development, packaging, quality assurance, &amp;#8230; problems encountered in scientific computing are universal in computing.&lt;/p&gt;
&lt;p&gt;You might think that you are only interested in writing algorithms,or processing data, but this code will have to live on. My experience is that it is terribly hard to have code in a lab that can be somewhat shared and live on when people move away to another lab, or stop having time to maintain the code. Talks like&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/correction_d'un_bug_et_naissance_d'une_nouvelle_fonctionnalité_dans_cpython&quot;&gt;Correction d&amp;#8217;un bug et naissance d&amp;#8217;une nouvelle fonctionnalité dans CPython&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/contrôle_de_versions_de_source%3A_pourquoi%3F_comment%3F&quot;&gt;Contrôle de versions de source: pourquoi? comment?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/de_la_qualité_dans_un_projet_en_python&quot;&gt;De la qualité dans un projet en Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/amusez-vous_à_tester_avec_les_objets_farceurs_(mock)&quot;&gt;Amusez-vous à tester avec les objets farceurs (mock)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;can probably be of some use.&lt;/p&gt;
&lt;p&gt;Also, don&amp;#8217;t underestimate the fact that some other communities might have solved some of the issues you struggle with. When dealing with real-world problems, and not only developing algorithms on a few set of test data, a large fraction of the code lines and related to IO, interfaces, data massaging&amp;#8230; Two years ago, I remember that I was not terribly interested in the web-development talks. I tried to be open-minded and listen to them, but&amp;#8230; Now I have done a bit of web development myself, and I have played with some of the famous &amp;#8216;web frameworks&amp;#8217;. I can tell you, there are some really interesting concepts there. The web guys have managed to extract a set of patterns from the problems they face and provide excellent abstracts to data handling and display. Can we learn from them? I am especially interested in getting more insight from things like ORMs (object relational mappers), and understanding better the web frameworks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/django-roa_pour_une_architecture_orient%C3%A9e_ressources&quot;&gt;Django-ROA pour une architecture orientée ressources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/django-roa_pour_une_architecture_orient%C3%A9e_ressources&quot;&gt;PyQt4: Un exemple de sur-mesure en Model/View/Delegate&lt;/a&gt; (this is not about web, but MVC/MVD pattern has been used in web a lot and is universal and very important, IMHO).&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/oubliez_le_sql_avec_sqlalchemy&quot;&gt;Oubliez le sql avec SQLAlchemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/developpement_d'applications_maintenables_avec_django&quot;&gt;Developpement d&amp;#8217;applications maintenables avec Django&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/turbogears_2%2C_présentation_et_introduction_(tutoriel)&quot;&gt;Turbogears 2, présentation et introduction (tutoriel)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/programmer_couchdb_avec_couchdbkit&quot;&gt;Programmer CouchDB avec couchdbkit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/réflexion_sur_l'utilisation_de_python_pour_le_développement_d'une_plateforme_web_d'annotation_génomique&quot;&gt;Réflexion sur l&amp;#8217;utilisation de python pour le développement d&amp;#8217;une plateforme web d&amp;#8217;annotation &lt;/a&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/réflexion_sur_l'utilisation_de_python_pour_le_développement_d'une_plateforme_web_d'annotation_génomique&quot;&gt;génomique&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/django_par_la_pratique%2C_premiers_pas&quot;&gt;Oubliez le sql avec SQLAlchemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/django_par_la_pratique%2C_premiers_pas&quot;&gt;Django par la pratique&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.pycon.org/sessions/seances/python_et_les_bases_de_données_non_sql.&quot;&gt;Python et les bases de données non sql.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And finally, one more reason to come: it is so nice to actually get to meet in real life people, and have a chat.&lt;/p&gt;
&lt;p&gt;So, see you there, for those who live in France.&lt;/p&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Easily Accessible Web-Based Tools For Analyzing Next-Generation Sequencing Data From Agricultural Animals</title>
		<link href="http://ivory.idyll.org/blog/may-09/nextgen-sequencing-proposal"/>
		<id>http://ivory.idyll.org/blog/2009/05/15/nextgen-sequencing-proposal</id>
		<updated>2009-05-16T04:34:48+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;Just submitted this on Thursday:&lt;/p&gt;
&lt;blockquote&gt;
Next generation sequencers are beginning to impact agricultural
biology.  Over the next few years, next generation sequencing will
produce incredibly large datasets that will address structural
(e.g., SNPs, CNVs, indels, methylation, translocations) and
functional (e.g., RNA expression, transcription factor binding
sites) variation in genomes that will provide detailed insights that
could explain phenotypic variation.  Despite this immense power,
next generation sequencing in agricultural animals will not be used
effectively due to the lack of easy-to-use computational tools to
support data analysis, and the unique needs of agricultural animal
genomes.  We propose to build an easy-to-use Web interface that
incorporates several existing mapping and post-mapping analysis
programs for next generation sequencing data that will greatly
empower agricultural researchers.  We will also provide solutions to
issues such as unfinished and unannotated assemblies, private data
sets, private annotations, etc.  Our tools will give individual
investigators or small groups with no computational support the
power to utilize and interpret next generation sequencing data.&lt;/blockquote&gt;
&lt;p&gt;Any guess as to the funding agency?  &lt;a class=&quot;reference&quot; href=&quot;http://www.csrees.usda.gov/fo/animalgenomegeneticsandbreedingafri.cfm&quot;&gt;Yep...&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The exciting life of a professor continues!&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Proposal: the Python Buildhaus</title>
		<link href="http://ivory.idyll.org/blog/may-09/buildhaus-proposal"/>
		<id>http://ivory.idyll.org/blog/2009/05/15/buildhaus-proposal</id>
		<updated>2009-05-15T18:39:07+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;I just submitted a &lt;a class=&quot;reference&quot; href=&quot;http://matc.mellon.org/&quot;&gt;Mellon Award for Tech Collaboration nomination&lt;/a&gt; for the Python Buildhaus.  What's that, you ask?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Python Buildhaus is a project to systematically build, test and
release Open Source Python packages on Windows, Mac OS X, and a
wide array of other UNIX architectures and operating systems (see
snakebite.org for list). In addition to providing machine access,
software support, and process support, we hope to create a set of
best practices and process documentation to help the community
address cross-platform compatibility issues. We will also build
tools to extend the impact of this effort beyond Michigan State by
providing longer-lasting developer resources, e.g. tools to
auto-build Python eggs and installers across multiple platforms.&lt;/p&gt;
&lt;p&gt;This will be an open resource for the Python community.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;See &lt;a class=&quot;reference&quot; href=&quot;http://moss.wikidot.com/buildhaus&quot;&gt;the Python Buildhaus&lt;/a&gt; and
&lt;a class=&quot;reference&quot; href=&quot;http://moss.wikidot.com/buildhaus:mellon09-proposal&quot;&gt;our proposal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is basically an attempt to use Snakebite to push specifically to
help with the cross-platform distribution problem.&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Enthought and Economic Science</title>
		<link href="http://blog.enthought.com/?p=115"/>
		<id>http://blog.enthought.com/?p=115</id>
		<updated>2009-05-12T23:36:12+00:00</updated>
		<content type="html">&lt;p&gt;A few of us at Enthought (Peter Wang, Robert Kern, and I) traveled to Toronto two weeks ago to attend a very interesting summit of scientists and others connected to finance and economics to discuss whether and how science can provide assistance in understanding economics sufficiently to prevent or at least mitigate economic breakdowns such as the one we&amp;#8217;ve just experienced (and are still dealing with).   The conference was titled &lt;a href=&quot;http://www.perimeterinstitute.ca/Events/The_Economic_Crisis_and_Implications_for_Science/The_Economic_Crisis_and_its_Implications_for_The_Science_of_Economics/&quot;&gt;The Economic Crisis and its Implications for the Science of Economics&lt;/a&gt;.   Some background material for the conference can be read at &lt;a href=&quot;http://www.edge.org/3rd_culture/brown08/brown08_index.html&quot;&gt;Edge.org&lt;/a&gt;, and at least two blog-posts covering the conference can be read: one by &lt;a href=&quot;http://www.technologyreview.com/blog/post.aspx?bid=354&amp;#038;bpid=23499&quot;&gt;Stephen Hsu&lt;/a&gt; and another by &lt;a href=&quot;http://econospeak.blogspot.com/2009/05/do-we-need-economic-manhattan-project.html&quot;&gt;Barkley Rosser&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;We were invited because Eric Weinstein is a fan of Python and the tools in the &lt;a href=&quot;http://www.enthought.com/products/epd.php&quot;&gt;Enthought Python Distribution&lt;/a&gt; (including NumPy, SciPy, SymPy, MayaVI, and Chaco).  Robert Kern produced some very nice visualizations for Eric&amp;#8217;s talks in the conference using MayaVi and Chaco which can be seen in Eric Weinstein&amp;#8217;s two talks: 30 minutes into &lt;a href=&quot;http://pirsa.org/09050047&quot;&gt;the first one&lt;/a&gt; and 45 minutes and again 1:30 minutes into &lt;a href=&quot;http://pirsa.org/09050022&quot;&gt;the second one&lt;/a&gt; (Actually, the second talk was Pia Malaney&amp;#8217;s talk and Eric enthusiastically joined her half-way through &amp;#8212; I guess being married has its advantages for getting more air time.)&lt;/p&gt;
&lt;p&gt;The conference was intellectually stimulating and very enjoyable.   I enjoyed all of the conversations I personally had with the participants which ranged from probability theory to cognitive neuroscience to quantum mechanics to computer platforms for agent-based modeling.    I encourage you to read and listen in more depth to what the participants had to say in their talks because I won&amp;#8217;t be able to provide sufficient summary to the conference.    All of the conference talks are &lt;a href=&quot;http://pirsa.org/C09006&quot;&gt;online&lt;/a&gt;.  What isn&amp;#8217;t shown in the videos, though, are the break-out discussions that took place between sessions and at meal-time.   &lt;/p&gt;
&lt;p&gt;In these break-out discussions I enjoyed getting to know all four members of the &lt;a href=&quot;http://www.herriot.com/partecon/&quot;&gt;PartEcon team&lt;/a&gt;.  Apparently, Mike Brown organized this group after an agent-based model (discussed at the conference by Alexander (Sasha) Outkin) predicted some useful results of changing the tick-size to decimals on the NASDAQ.    They have incorporated principles of double-entry book-keeping into their agent-based model.    They also stayed after the conference to continue comparing notes with another team from the Perimeter Institute that had written about an agent-based model using a more formal setup (by Samuel Vazquez and Simone Severini).  &lt;/p&gt;
&lt;p&gt;While there was one early talk on the first day by Richard Alexander that touched on the genetic component of human agents, the impact of having evolutionary biologists present (like him and one of his students, Bret Weinstein) was much larger than their presentation footprint.   They provided insightful discussions during several break-out sessions (Peter Wang even commented that in another life he might have become a biologist). &lt;/p&gt;
&lt;p&gt;Lee Smolin sent around a very nice summary of the conference and suggested a unifying theme of &amp;#8220;path-dependence in economic dynamics.&amp;#8221;   Eric and Lee were both there to explain how gauge theory provides the tools to solve the problem of changing preferences that has plagued traditional academic economics.     Eric did a great job of showing how this manifestly untrue concept of unchanging preferences has at least been put forward by several leading economists.  It&amp;#8217;s still unclear to me whether or not gauge theory actually provides new results, but it definitely seems like a more useful mathematical toolbox to use and build from. &lt;/p&gt;
&lt;p&gt;I was disappointed that amidst all the discussion of the failure of economic modeling there was not at least some discussion about the Mises-Rothbardian ideas of fiat currency and fractional-reserve banking being the primary source of the booms and resulting busts.   I wanted to learn from the people there rather than try and debate this one particular theory of economics so I pretty much stayed quiet.   One gentleman sitting next to me during the first day asked the panel whether the crises shows the failure of fiat currency and and got a very unsatisfying answer from Nouriel Roubini that simply dismissed the question, but did not really address it.&lt;/p&gt;
&lt;p&gt;Given that the economic experts have basically shown repeatedly they don&amp;#8217;t know what they are doing, intellectual honesty would seem to me to require listening to all sides of a debate, instead of dismissing a whole theory of economics (such as the Austrian school) primarily because it doesn&amp;#8217;t use math as its starting point.   Fortunately, there are very good texts that argue against fractional-reserve banking and the role it may actually play in causing economic instability.   One of them is &lt;a href=&quot;http://mises.org/books/desoto.pdf&quot;&gt;&amp;#8220;Money, Bank Credit, and Economic Cycles&amp;#8221;&lt;/a&gt; by Jesus Huerta de Soto. &lt;/p&gt;
&lt;p&gt;I really enjoyed the conference because it seemed to combine all of the interests I&amp;#8217;ve developed over the years:  math, probability theory, neuroscience, economics, and computers.    I&amp;#8217;ve had a hobbyist interest in Economics ever since graduate school at the Mayo Clinic when I was learning about Linux and Python.  I fell in love with open source software but wanted to understand how &amp;#8220;giving software away&amp;#8221; could work sustainably in a society.  It was this question that led to me finally reading Mises and Rothbard and a whole host of other non main-stream economists.     I can&amp;#8217;t say I&amp;#8217;ve figured anything out, but I have very much enjoyed the ride. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;m also very hopeful in some of the ideas I saw at the conference that may help us inch closer to an understanding of the truth of an economic system (mathematically modeling changing preferences,  using agent-based models, and even the idea of local currencies that was discussed among some at the conference). &lt;/p&gt;
&lt;p&gt;In the more immediate future.   It looks like there is some discussion afoot for building a platform for agent-based modeling that I hope Python plays prominently in.    There is a real power in using an expressive and dynamic language like Python that allows for rapid development.   It is a general-purpose language that scientists and engineers can actually get excited about.  In addition, the work of Paul Borrill&amp;#8217;s company (&lt;a href=&quot;http://www.replicus.com/REPLICUS/Home.html&quot;&gt;Replicus&lt;/a&gt;) in creating an agent-based storage solution looks immediately promising.  Perhaps Enthought can provide some tools to assist in managing such a system.    I&amp;#8217;m enthused and anxious to continue to support the improvement of using computers to help solve some of the world&amp;#8217;s most challenging problems.    There is much more that could be said, but I&amp;#8217;m sure this blog (with no photos) is long enough.&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">cournape</title>
		<link href="http://cournape.wordpress.com/2009/05/12/why-people-should-stop-talking-about-git-speed/"/>
		<id>http://cournape.wordpress.com/?p=150</id>
		<updated>2009-05-12T12:02:11+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;As I have already written in a previous post, I have moved away from bzr to git for most of my software projects (I still prefer bzr for documents, like my research papers). A lot if not most of the comparison of git vs other tools focus on speed. True, git is quite fast for source code management, but I think this kinds of miss the point of git. It took me time to appreciate it, but one of the git&amp;#8217;s killer feature for source code control is the notion of &lt;span&gt;content tracking&lt;/span&gt;. Bzr (and I believe hg although I could not find good information on that point) use file id, i.e. they track files, and a tree is a set of files. Git, on the contrary, tracks content, not files. In other words, it does not treat files individually, but always internally consider the whole tree.&lt;/p&gt;
&lt;p&gt;This may seem like an internal detail, and an annoyance because it leaks at the UI level quite a lot (the so-called index is linked to this). But this means that it can record the history of &lt;strong&gt;code&lt;/strong&gt; instead of &lt;strong&gt;files&lt;/strong&gt; quite accurately. This is especially visible with git blame. One example: I recently started a massive surgery on the numpy C source code. Because of some C limitations, the numpy core C code was in a couple of giantic source files, and I split this into more logical units. But this breaks svn blame heavily. If you just rename a file, &lt;span&gt;svn blame is lost&lt;/span&gt; can follow renames. But if you split one file into two, it becomes useless. Because git tracks the whole tree, the blame command can be asked to detect code moves&lt;strong&gt; across files&lt;/strong&gt;. For example, git blame with rename detections gives me the following on one file in numpy:&lt;/p&gt;
&lt;pre&gt;dc35f24e numpy/core/src/arrayobject.c         1) #define PY_SSIZE_T_CLEAN
dc35f24e numpy/core/src/arrayobject.c         2) #include &amp;lt;Python.h&amp;gt;
dc35f24e numpy/core/src/arrayobject.c         3) #include &quot;structmember.h&quot;
dc35f24e numpy/core/src/arrayobject.c         4)
65d13826 numpy/core/src/arrayobject.c         5) /*#include &amp;lt;stdio.h&amp;gt;*/
5568f288 scipy/base/src/multiarraymodule.c    6) #define _MULTIARRAYMODULE
2f91f91e numpy/core/src/multiarraymodule.c    7) #define NPY_NO_PREFIX
2f91f91e numpy/core/src/multiarraymodule.c    &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;wp-smiley&quot; /&gt; #include &quot;numpy/arrayobject.h&quot;
dc35f24e numpy/core/src/arrayobject.c         9) #include &quot;numpy/arrayscalars.h&quot;
38f46d90 numpy/core/src/multiarray/common.c  10)
38f46d90 numpy/core/src/multiarray/common.c  11) #include &quot;config.h&quot;
0f81da6f numpy/core/src/multiarray/common.c  12)
71875d5c numpy/core/src/multiarray/common.c  13) #include &quot;usertypes.h&quot;
71875d5c numpy/core/src/multiarray/common.c  14)  
0f81da6f numpy/core/src/multiarray/common.c  15) #include &quot;common.h&quot;
5568f288 scipy/base/src/arrayobject.c        16)
65d13826 numpy/core/src/arrayobject.c        17) /*
65d13826 numpy/core/src/arrayobject.c        18)  * new reference
65d13826 numpy/core/src/arrayobject.c        19)  * doesn't alter refcount of chktype or mintype ---
65d13826 numpy/core/src/arrayobject.c        20)  * unless one of them is returned
65d13826 numpy/core/src/arrayobject.c        21)  */&lt;/pre&gt;
&lt;p&gt;You can notice that the original file can be found for every line of code in the new file. The original author and date may be found as well, I just removed them for the blog post.&lt;/p&gt;
&lt;p&gt;This is truely impressive, and is one of the reason why git is so far ahead of the competition IMHO. This kind of features is extremely useful for open source projects, much more than rename support. I am ready to deal with quite a few (real) Git UI annoyances for this.&lt;/p&gt;
&lt;h3&gt;Edit&lt;/h3&gt;
&lt;p&gt;It looks like my example was not very clear. I am not interested in following the renames of the file: in the example above, the file was not arrayobject.c first, then renamed to multiarraymodules.c, and later to common.c. The file was created from scratch, with content taken from those files at some point. You can try the following simplified example. First, create two files prod.c and sum.c:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;c&quot;&gt;

#include &amp;lt;math.h&amp;gt;
double sum(const double* in, int n)
{
 int i;
 double acc = 0;

 for(i = 0; i &amp;lt; n; ++i) {
 acc += in[i];
 }

 return acc;
}
&lt;/pre&gt;
&lt;pre name=&quot;code&quot; class=&quot;c&quot;&gt;

#include &amp;lt;math.h&amp;gt;

double prod(const double* in, int n)
{
 int i;
 double acc = 1;

 for(i = 0; i &amp;lt; n; ++i) {
 acc *= in[i];
 }

 return acc;
}
&lt;/pre&gt;
&lt;p&gt;Commit to your favorite VCS. Then, you reorganize the code, and in particular you put the code of both files into a new file common.c. So you create a new file common.c:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;c&quot;&gt;
#include &amp;lt;math.h&amp;gt;

double prod(const double* in, int n)
{
 int i;
 double acc = 1;

 for(i = 0; i &amp;lt; n; ++i) {
 acc *= in[i];
 }

 return acc;
}

double sum(const double* in, int n)
{
 int i;
 double acc = 0;

 for(i = 0; i &amp;lt; n; ++i) {
 acc += in[i];
 }

 return acc;
}
&lt;/pre&gt;
&lt;p&gt;And commit. Then, try blame. Rename tracking won&amp;#8217;t help at all, since nothing was renamed. On this very simple example, you could improve things by first renaming say sum.c to common.c, then adding the content of prod.c to common.c, but you will still loose that the prod function comes from prod.c. git blame -C -M gives me the following:&lt;/p&gt;
&lt;pre&gt;^ae7f28a prod.c  1) #include &amp;lt;math.h&amp;gt;
^ae7f28a prod.c  2)
^ae7f28a prod.c  3) double prod(const double* in, int n)
^ae7f28a prod.c  4) {
^ae7f28a prod.c  5)         int i;
^ae7f28a prod.c  6)         double acc = 1;
^ae7f28a prod.c  7)
^ae7f28a prod.c  8)         for(i = 0; i &amp;lt; n; ++i) {
^ae7f28a prod.c  9)                 acc *= in[i];
^ae7f28a prod.c 10)         }
^ae7f28a prod.c 11)
^ae7f28a prod.c 12)         return acc;
^ae7f28a prod.c 13) }
^ae7f28a sum.c  14)
^ae7f28a sum.c  15) double sum(const double* in, int n)
^ae7f28a sum.c  16) {
^ae7f28a sum.c  17)         int i;
^ae7f28a sum.c  18)         double acc = 0;
^ae7f28a sum.c  19)
^ae7f28a sum.c  20)         for(i = 0; i &amp;lt; n; ++i) {
^ae7f28a sum.c  21)                 acc += in[i];
^ae7f28a sum.c  22)         }
^ae7f28a sum.c  23)
^ae7f28a sum.c  24)         return acc;
^ae7f28a sum.c  25) }&lt;/pre&gt;
&lt;p&gt;hg blame on the contrary will tell me everything comes from common.c. Even when using the rename trick, I cannot get more than the following with hg blame -f -c:&lt;/p&gt;
&lt;pre&gt;81c4468e59f9    sum.c: #include &amp;lt;math.h&amp;gt;
81c4468e59f9    sum.c:
81c4468e59f9    sum.c: double sum(const double* in, int n)
81c4468e59f9    sum.c: {
81c4468e59f9    sum.c:         int i;
81c4468e59f9    sum.c:         double acc = 0;
81c4468e59f9    sum.c:
81c4468e59f9    sum.c:         for(i = 0; i &amp;lt; n; ++i) {
81c4468e59f9    sum.c:                 acc += in[i];
81c4468e59f9    sum.c:         }
81c4468e59f9    sum.c:
81c4468e59f9    sum.c:         return acc;
81c4468e59f9    sum.c: }
3c1ac7db76ba common.c:
3c1ac7db76ba common.c: double prod(const double* in, int n)
3c1ac7db76ba common.c: {
3c1ac7db76ba common.c:         int i;
3c1ac7db76ba common.c:         double acc = 1;
3c1ac7db76ba common.c:
3c1ac7db76ba common.c:         for(i = 0; i &amp;lt; n; ++i) {
3c1ac7db76ba common.c:                 acc *= in[i];
3c1ac7db76ba common.c:         }
3c1ac7db76ba common.c:
3c1ac7db76ba common.c:         return acc;
3c1ac7db76ba common.c: }&lt;/pre&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cournape.wordpress.com/150/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cournape.wordpress.com/150/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cournape.wordpress.com/150/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cournape.wordpress.com/150/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cournape.wordpress.com/150/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cournape.wordpress.com/150/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cournape.wordpress.com/150/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cournape.wordpress.com/150/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cournape.wordpress.com/150/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cournape.wordpress.com/150/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=cournape.wordpress.com&amp;amp;blog=2210763&amp;amp;post=150&amp;amp;subd=cournape&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>David Cournapeau</name>
			<uri>http://cournape.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Nothing to say</title>
			<subtitle type="html">some personal notes</subtitle>
			<link rel="self" href="http://cournape.wordpress.com/feed/"/>
			<id>http://cournape.wordpress.com/feed/</id>
			<updated>2009-06-29T09:06:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: Game Coding Complete</title>
		<link href="http://feedproxy.google.com/~r/eifelle/CPPV/~3/WlBsUF933to/"/>
		<id>http://matt.eifelle.com/?p=466</id>
		<updated>2009-05-12T08:05:53+00:00</updated>
		<content type="html">&lt;p&gt;I got my hand on an old edition of this book second edition, now the third is available), and it seemed to me a good place for game developers to start.&lt;br /&gt;
Mike McShaffry has a lot of experience from the game field, and his goal is to share it with the readers. In every chapter, there are some anecdots of his past, and it is a lot of fun to see studios falling in the same pitfalls than we do when we start coding.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-466&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;The book is split in four different parts. The first one starts with the fun you can get coding a game, but also the troubles you will have. And what technology will you use? 2D? 3D? And what do they imply? As for every code, there is a set of general good pratices, as memory handling, scripts, &amp;#8230; that need to be address. The author sometimes did not use them, and there are examples where they caused troubles.&lt;/p&gt;
&lt;p&gt;As to get the game running on a computer, another set of rules is needed. Without them, it is just hard to have a running game in the end. How is the game built (not everybody uses a tool to automaticaly build the game)? How to interact with the game? A lot is written about this last issue, and as the author is used to Direct X, the clues are explained with it. But the advice can be used with other technologies. One just has to find the equivalent functions in the other framework. Obviously, it is not possible for the book to express this in every available framework, and it is also not the purpose of the book (it is not a book on a game engine, not a book on Direct X, &amp;#8230;).&lt;/p&gt;
&lt;p&gt;The third part is also mainly about Direct X, more exactly the 3D part. It lays down the basis for any 3D game engine, but it is not the book&amp;#8217;s goal to be exhaustive about the design of a 3D engine. Also Microsoft imposes a set of rules to get the appropriate &amp;#8220;Windows compatible&amp;#8221; logo, which is needed if you want to sell the game. The last chapter in this part tacklesdebugging the game. I have to say this is much needed and too often it doesn&amp;#8217;t appear in game programming books, although it is one of the pillar of programming. Different debugging techniques are addressed.&lt;/p&gt;
&lt;p&gt;Finally, the last part tackles how the coding must be driven. Scheduling and milestones, testing and fixing the bugs or how the game will finally be published (what needs to be done at the end or after the end), all you need if you are in the game industry and you have to handle a commercial release.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;My edition of the book is several years old, and I felt it, as different examples are outdated (the requirements needed for a today game, the Direct X version, Windows versions that need to be supported, ..). I couldn&amp;#8217;t check in the thirs edition if this was updated, but it should have: the whole point of a new edition is to update these facts. So if you want to code a game, buy the last edition of this book.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1584506806/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51Gakoj6DSL._SL75_.jpg&quot; width=&quot;61&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/1584506806/masbl03-20&quot; target=&quot;_blank&quot;&gt;Game Coding Complete&lt;/a&gt; (Paperback)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Mike McShaffry&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 1584506806&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 37.79&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;31 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 34.14&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.5.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4.5 | 26
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/YPGmT507Yx8qHP2YoehayOp8uBw/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/YPGmT507Yx8qHP2YoehayOp8uBw/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/YPGmT507Yx8qHP2YoehayOp8uBw/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/YPGmT507Yx8qHP2YoehayOp8uBw/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/eifelle/CPPV/~4/WlBsUF933to&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Minimum spanning tree</title>
		<link href="http://gael-varoquaux.info/blog/?p=100"/>
		<id>http://gael-varoquaux.info/blog/?p=100</id>
		<updated>2009-05-10T22:52:55+00:00</updated>
		<content type="html">&lt;p&gt;Gary Ruben came up with the excellent idea of visualizing the minimum spanning tree of a Delaunay tesselation in addition to Delaunay tessalation itself. After he sent me his code, I spent some times playing with it, because I found out that, with the right choice of visualization parameter, it gave me a nice understanding of what a minimum spanning tree was: a tree structure of minimal total length connecting all the vertices of the graphs, and embedded in the graph. On the visualization, the Delaunay graph is displayed in grey, and the minimum spanning tree in thick and colors.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://gael-varoquaux.info/blog/wp-content/uploads/2009/05/mst.jpg&quot; alt=&quot;Minimmum spanning tree&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The minimum spanning tree is calculated using Prim&amp;#8217;s algorithms, on the fullly-connected distance-weighted graph of all points. One can clearly see that is it embedded in the Delaunay graph. In fact I have tested that calculating a minimum spanning tree on the Delaunay graph, or on the complete graph, gave the same result.&lt;/p&gt;
&lt;p&gt;The code to create this picture can be found &lt;a title=&quot;Python code&quot; href=&quot;http://gael-varoquaux.info/blog/wp-content/uploads/2009/05/mst_py&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">My experience with running an opensource project</title>
		<link href="http://ondrejcertik.blogspot.com/2009/05/my-experience-with-running-opensource.html"/>
		<id>tag:blogger.com,1999:blog-6568744196982634289.post-5063369088540210715</id>
		<updated>2009-05-10T13:47:29+00:00</updated>
		<content type="html">Nir Aides, the author of the excellent &lt;a href=&quot;http://winpdb.org/&quot;&gt;winpdb&lt;/a&gt; debugger, sent me the following email on September 21, 2008, so I asked him if I can copy his email and reply in form of a blog post (so that other people can comment and join the discussion) and he agreed. It took me almost a year to reply, but I made it. :)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hi Ondrej,&lt;br /&gt;&lt;br /&gt;How are you?&lt;br /&gt;&lt;br /&gt;I am about to publish a new free software project, a new simple PHP framework, and I am interested in your advice.&lt;br /&gt;&lt;br /&gt;You started &lt;a href=&quot;http://sympy.org/&quot;&gt;SymPy&lt;/a&gt; and were able to make other people join you and develop it with you.&lt;br /&gt;How did you do it?&lt;br /&gt;How did it happen?&lt;br /&gt;Did you actively call for other people or they spontaneously showed interest and joined you?&lt;br /&gt;Are the other major contributor people who were your friends before you started the project?&lt;br /&gt;Did you need to create or manage the project in a particular way to make it attractive to other people?&lt;br /&gt;Are there things you are aware of that promote collaboration or demote it?&lt;br /&gt;&lt;br /&gt;I was never successful in doing the same with Winpdb, which while it became reasonably popular, no one has ever joined me to develop it, except for a notable tutorial contribution by Chris Lasher which was developed independently.&lt;br /&gt;&lt;br /&gt;Now with the new project, I am wondering what are my chances of making other people try it and take it on. On the one hand it is a new and fresh code base in an interesting field, on the other hand, why would anyone bother to spend their energy on this new project when they have Symfony or Drupal?&lt;br /&gt;&lt;br /&gt;What do you think?&lt;br /&gt;&lt;br /&gt;BTW, Ohloh believes you have a median of 19,000 lines of changed code per month since the start of their log. Can this be true? Is this humanly possible? According to it SymPy has over 1,000,000 lines of code? I can't understand these numbers. Winpdb has about 25,000 lines after 3 years of development. And from my experience 1,000,000 lines of code projects need about 20-50 full time developers to work on for 2-5 years which is about 40-250 man years. And as if this is not enough you are listed as owner in a dozen other projects in Google code and have enough time to become an awarded scientist. How is this possible?&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ohloh.net/p/sympy/contributors/&quot;&gt;http://www.ohloh.net/p/sympy/contributors/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;BTW2, do you still use Winpdb? If you find yourself using it less, can you say what are the reasons, or what it would take to make it more useful?&lt;br /&gt;&lt;br /&gt;BTW3, How is SymPy doing?&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Nir&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So my most honest answer how to run a successful opensource project is: I don't know.&lt;br /&gt;&lt;br /&gt;But nevertheless I tried to summarize some of my ideas and experience and some guidelines that I try to follow, maybe it will be useful to you Nir, or anyone else.&lt;br /&gt;&lt;br /&gt;First of all, there has to be a public mailinglist (easily accessible), public bug tracker, nice webpage, easy to find downloads, frequent releases (once a month is good, but in the worst case at least 4 times a year) and a set of guidelines to follow in order to contribute. So that's a must, if the project doesn't have the above, it's almost impossible to become successful. However, that is just a start, just a playground. There are still many projects that have the above and yet they totally fail to attract developers.&lt;br /&gt;&lt;br /&gt;So I think the most important principle is that I always think how to employ other people in what I do. If I have some plan in my head how to do something, e.g. how to move some things forward, I always create exact steps and put it to issues, or our mailinglist, so that each step can be done by someone who is completely new to sympy. So I try to look at things from other people's perspective and think -- ok, I quite like this SymPy project and I'd like to get this done (for example a new release, or something fixed, or implemented), but I have no idea how to start and what exactly needs to be done.&lt;br /&gt;&lt;br /&gt;So what I try to do if someone comes to our list and asks for something, is that I create a new issue for it and think how I would fix it if I had time.  Then write the necessary steps in the issue and invite the submitter to fix it and I offer help with explaining anything and guiding. Now there are two things that can happen. Either the submitter has time and a will to go forward and in this case he starts wrestling with it and whenever he has some code or a question, I need to find time, review it and offer some way out. Or the submitter is too busy, in which case the instructions simply rest in the issues and the next time someone asks for the feature, the instructions are already there. I don't have estimates how frequent either case is.&lt;br /&gt;&lt;br /&gt;When I am working on something myself, I try not to code privately, but also put up issues first and put the steps needed in the issues, so that it's easy for other people to join in.&lt;br /&gt;&lt;br /&gt;In general, the most precious value for me is the fact that someone else had to sit down at his computer and wrote the patch. So I do everything possible to get new (or more) people interested in the development. Some people think that only super programmers can do a decent job and it's useless to invest time in people that may just have started with Python. They are wrong. Among the SymPy developers (around 65 people total have contributed patches so far at the time of writing this post), we have all kinds of people. We have people from high school, we have a retired US army engineer, we have physicists, mathematicians, biologists, engineers, teachers, or just hobbyists, who do it for fun.  Unfortunately, we do not have many women (I think no patch that made it into sympy was contributed by a woman, but I may be wrong), so if anyone has any ideas how to get more women involved, let me know (I know we have several women fans, so that's a good start:). We have people whose first open source project they ever contributed to was sympy and people who are new to Python.&lt;br /&gt;&lt;br /&gt;Many times the first patch that a new potential developer submits is not perfect, usually it's faster for me to write it myself, than to help with the first patch, however my rule is to always help the submitter do that. Sometimes he sends a second patch, or a third, and usually it needs less and less work on my side and it already pays off, because he is then able to fix things himself, if he discovers a bug and sympy has just won a one more contributor.&lt;br /&gt;&lt;br /&gt;So I came to the conclusion that all that is needed is an enthusiasm. You don't even have to know Python (as you can learn all these things on the way) and you can still do useful things for us and really spare our time.&lt;br /&gt;&lt;br /&gt;To answer another question from Nir's email, SymPy has about 130000 lines of code and another about 20000 lines of tests, so I think those stats are wrong. Also the changed lines of code is in my opinion wrong, we usually have about 250 new patches per release (this depends how often we release and other things).&lt;br /&gt;&lt;br /&gt;Yes, I am involved in couple other projects, e.g. Debian, Sage, ipython, scipy, &lt;a href=&quot;http://hpfem.org/&quot;&gt;hpfem.org&lt;/a&gt; (and couple more), basically everything that has to do with numeric simulation and Python, but my activity there varies. The most time consuming thing in the last couple years was definitely school, I was finishing my master in Theoretical Physics in Prague and then moved to the Nevada/Reno and I just finished my first semester here at PhD in Chemical Physics, and sometimes it was just crazy, e.g. I finished teaching at 7pm and instead of going home and sleep, I stayed in my office, fixed 10 sympy issues that were holding off a release, finished at 1am, went home (by bike, since I don't have a car yet), slept couple hours and then did just school again for a week, other people reviewed the issues in the meantime, and then I made the release (instead of sleeping again). In the last semester it was not unusual that I got home at 1am every week day, then slept most of Saturday to catch up, on Sunday I did some laundry and shopping, and the rest of time I did grading and homeworks for all my classes and teaching, no time for anything else (e.g. no friends, no girls, no rest, no hobby, no opensource stuff, nothing). So sometimes one has to work pretty hard to get through it, but fortunately it's behind me finally, if all goes well, I should be just doing research from now on and have a real life too. Also I am sorry I didn't manage to reply sooner. :)&lt;br /&gt;&lt;br /&gt;To answer the other questions: &lt;blockquote&gt;Are the other major contributor people who were your friends before you started the project?&lt;/blockquote&gt; No, not a single major contributor was my friend before I started the project. Every single one of them become a developer using the procedure I described above, e.g. first showed on the list or in the issues, and maybe even the very first patch was not a high quality one (and if I was stupid and arrogant, or didn't see the big potential, I would just ignore them). But when given a chance, they became extremely good developers and sympy would simply just not be here without them.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Did you actively call for other people or they spontaneously showed interest and joined you?&lt;/blockquote&gt; I very much encourage everyone to contribute, but the initial interest must be in them, e.g. they at least have to show around the mailinglist/issues, so that I know about them. But once I know they are interested in some issue, yes, I try to invite them to fix it, with my help.&lt;br /&gt;&lt;br /&gt;One observation I made is that I have to always think in the spirit &quot;how to earn new money, not how to spare the money I already have&quot;, e.g. when applied to sympy, how to get new developers, how to develop the new great things etc.  Even if I am super busy as I was, I still have to think this way. Once I start thinking how to conserve and preserve what we already have, I am done, finished and that's the road to hell.&lt;br /&gt;&lt;br /&gt;If I am open, positive, full of energy, I can see people joining me and we can do great things together. It probably sounds obvious, but it was not for me, when for example some people I worked with, started their own projects, when I got busy, and started to compete, instead of helping sympy out. And I felt betrayed, after so much work that I invested into it and started to become protective. And then I realised that's wrong. I can never stop other people do what they want to do. If they want to have their own project, they will have it. If they don't want to help sympy out, they won't (and what is more important, there is nothing wrong with either of that). It's that simple and being protective only makes things worse.&lt;br /&gt;&lt;br /&gt;There is also a question of the license that you use for the project, e.g. one should basically only choose between BSD (maybe also MIT or Apache), LGPL and GPL (there are also several versions of the GPL licenses). Unfortunately the fact is, that there are people who will never contribute a code under a permissive BSD license (because it's not protecting their work enough) and there are also other people who really want to code to be BSD (or other permissive license) so they can sell it and they don't need to consult with lawyers what they are or aren't allowed to do and also so that they can combine it with any other code (opensource or not). It also depends if one wants to combine (and distribute) other codes together. So choosing a license is also important. I believe that for sympy BSD is the best and for other projects (like Sage) GPL is the best and one has to decide on a case by case basis.  For Winpdb, I would make it BSD too, since you can get more people using it.&lt;br /&gt;&lt;br /&gt;To conclude, SymPy is a little more than 2 years old, and it has been a great ride so far and more things are coming, e.g. this summer we have 5 Google Summer of Code students and people are starting it to use in their research and we plan to use it in our codes at &lt;a href=&quot;http://hpfem.math.unr.edu/&quot;&gt;our group&lt;/a&gt; here in Reno too, so things look promising. I am really glad, we managed to build such a community, so that when I am busy, as I was the last semester, other people help out with patches, reviews and other things, so that the project doesn't stall and when I got rid of my school duties now, we can move things forward a lot.&lt;br /&gt;&lt;br /&gt;So maybe you can get inspired by some of the ideas above. I am also interested in any discussion about this (feel free to post a comment below, or send me an email, or just write to a sympy list about what you think).&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/6568744196982634289-5063369088540210715?l=ondrejcertik.blogspot.com&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Ondřej Čertík</name>
			<email>noreply@blogger.com</email>
			<uri>http://ondrejcertik.blogspot.com/search/label/scipy</uri>
		</author>
		<source>
			<title type="html">Ondřej Čertík</title>
			<link rel="self" href="http://ondrejcertik.blogspot.com/feeds/posts/default/-/scipy"/>
			<id>tag:blogger.com,1999:blog-6568744196982634289</id>
			<updated>2009-07-01T09:08:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">cournape</title>
		<link href="http://cournape.wordpress.com/2009/05/08/first-steps-toward-c-code-coverage-in-numpy/"/>
		<id>http://cournape.wordpress.com/?p=146</id>
		<updated>2009-05-08T05:04:52+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;For quite some time, I wanted to add code coverage to the C part of numpy. The upcoming port to python 3k will make this even more useful, and besides, Stefan Van Der Walt promised me a beer if I could do it.&lt;/p&gt;
&lt;p&gt;There are several tools to do code coverage of C code &amp;#8211; the most well known is gcov (I obviously discard non-free tools &amp;#8211; those tend to be fairly expensive anyway). The problem with gcov is its inability to do code coverage for dynamically loaded code such as python extensions. The solution is thus to build numpy and statically link it into python, which is not totally straightforward.&lt;/p&gt;
&lt;h3&gt;Statically linking simple extensions&lt;/h3&gt;
&lt;p&gt;I first looked into simpler extensions: the basic solution is to add the source files of the extensions into Modules/Setup.local in python sources. For example, to build the zlib module statically, you add&lt;br /&gt;
&lt;span&gt;&lt;br /&gt;
*static*&lt;br /&gt;
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;And run make, this will statically link the zlib module to python. One simple way to check whether the extension is indeed statically link is to look into the  __file__ attribute of the extension. In the dynamically loaded case, the __file__ returns the location of the .so, but the attribute does not exist in the static case.&lt;/p&gt;
&lt;h3&gt;Code coverage&lt;/h3&gt;
&lt;p&gt;To use gcov, two compilation flags are needed, and one link flag:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;gcc -c -fprofile-arcs -ftest-coverage &amp;#8230;&lt;br /&gt;
gcc &amp;#8230; -lgcov&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Note that -lgcov must be near the end of the link command (after other libraries flags). To do code coverage of e.g. the zlib module, the following works in Modules/Setup.local:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;*static*&lt;br /&gt;
zlib zlibmodule.c -I$(prefix)/include -fprofile-arcs -ftest-coverage -L$(exec_prefix)/lib -lz -lgcov&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If everything goes right after a make call, you should have two files zlibmodule.gcda and zlibmodule.gcno into your Modules directory. You can now run gcov in Modules to get code coverage:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;cd Modules &amp;amp;&amp;amp; gcov zlibmodule&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Of course, since nothing was run yet, the code coverage is 0. After running the zlib test suite, things are better though:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;./python Lib/test/test_zlib.py &amp;amp;&amp;amp; gcov -o Modules Modules/zlibmodule&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The -o tells gcov where to look for gcov data (the .gcda an .gcno files), and the output is&lt;br /&gt;
&lt;span&gt;&lt;br /&gt;
File &amp;#8216;./Modules/zlibmodule.c&amp;#8217;&lt;br /&gt;
Lines executed:74.55% of 448&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;Build numpy statically&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;I quickly added a hack to build numpy C code statically instead of dynamically in numscons, static_build branch, available on &lt;a href=&quot;http://github.com/cournape/numscons/tree/static_build&quot;&gt;github&lt;/a&gt;. As it is, numpy will not work, some source code modifications are needed to make it work. The modifications reside in the static_link branch on &lt;a href=&quot;http://github.com/cournape/numpy/tree/static_link&quot;&gt;github&lt;/a&gt; as well.&lt;/p&gt;
&lt;p&gt;Then, to statically build numpy with code coverage:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;LINKFLAGSEND=&amp;#8221;-lgcov&amp;#8221; CFLAGS=&amp;#8221;-pg -fprofile-arcs -ftest-coverage&amp;#8221; $PYTHON setupscons.py scons &amp;#8211;static=1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;where $PYTHON refers to the python you build from sources. This will build every extension as a static library. To link them to the python binary, I simply added a fake source file and link the numpy as libraries to the fake source in Modules/Setup.local&lt;br /&gt;
&lt;span&gt;&lt;br /&gt;
*static*&lt;br /&gt;
multiarray fake.c -L$LIBPATH -lmultiarray -lnpymath&lt;br /&gt;
umath fake.c -L$LIBPATH -lumath -lnpymath&lt;br /&gt;
_sort fake.c -L$LIBPATH -l_sort -lnpymath&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;where LIBPATH refers to the path where to find the static numpy libraries (e.g. build/scons/numpy/core in your numpy source tree). To run the testsuite, one has to make sure to import a numpy where multiarray, umath and _sort extensions have been removed, it will crash otherwise (as the extesions would be present twice in the python process, one for the dynamically loaded code, one for the statically linked code). The test suite kind of run (~1500 tests), and on can get code coverage afterwards. For multiarray extension, here is what I get:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/common.c&amp;#8217;&lt;br /&gt;
Lines executed:52.56% of 293&lt;br /&gt;
build/scons/numpy/core/src/multiarray/common.c:creating &amp;#8216;common.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/include/numpy/npy_math.h&amp;#8217;&lt;br /&gt;
Lines executed:50.00% of 12&lt;br /&gt;
build/scons/numpy/core/include/numpy/npy_math.h:creating &amp;#8216;npy_math.h.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/arraytypes.c&amp;#8217;&lt;br /&gt;
Lines executed:62.23% of 1030&lt;br /&gt;
build/scons/numpy/core/src/multiarray/arraytypes.c:creating &amp;#8216;arraytypes.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/hashdescr.c&amp;#8217;&lt;br /&gt;
Lines executed:68.38% of 117&lt;br /&gt;
build/scons/numpy/core/src/multiarray/hashdescr.c:creating &amp;#8216;hashdescr.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/numpyos.c&amp;#8217;&lt;br /&gt;
Lines executed:81.48% of 189&lt;br /&gt;
build/scons/numpy/core/src/multiarray/numpyos.c:creating &amp;#8216;numpyos.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/scalarapi.c&amp;#8217;&lt;br /&gt;
Lines executed:47.43% of 350&lt;br /&gt;
build/scons/numpy/core/src/multiarray/scalarapi.c:creating &amp;#8217;scalarapi.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/descriptor.c&amp;#8217;&lt;br /&gt;
Lines executed:61.96% of 1028&lt;br /&gt;
build/scons/numpy/core/src/multiarray/descriptor.c:creating &amp;#8216;descriptor.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/flagsobject.c&amp;#8217;&lt;br /&gt;
Lines executed:42.31% of 208&lt;br /&gt;
build/scons/numpy/core/src/multiarray/flagsobject.c:creating &amp;#8216;flagsobject.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/ctors.c&amp;#8217;&lt;br /&gt;
Lines executed:64.69% of 1583&lt;br /&gt;
build/scons/numpy/core/src/multiarray/ctors.c:creating &amp;#8216;ctors.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/iterators.c&amp;#8217;&lt;br /&gt;
Lines executed:70.41% of 774&lt;br /&gt;
build/scons/numpy/core/src/multiarray/iterators.c:creating &amp;#8216;iterators.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/mapping.c&amp;#8217;&lt;br /&gt;
Lines executed:77.95% of 721&lt;br /&gt;
build/scons/numpy/core/src/multiarray/mapping.c:creating &amp;#8216;mapping.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/number.c&amp;#8217;&lt;br /&gt;
Lines executed:51.80% of 361&lt;br /&gt;
build/scons/numpy/core/src/multiarray/number.c:creating &amp;#8216;number.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/getset.c&amp;#8217;&lt;br /&gt;
Lines executed:44.09% of 372&lt;br /&gt;
build/scons/numpy/core/src/multiarray/getset.c:creating &amp;#8216;getset.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/sequence.c&amp;#8217;&lt;br /&gt;
Lines executed:50.00% of 60&lt;br /&gt;
build/scons/numpy/core/src/multiarray/sequence.c:creating &amp;#8217;sequence.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/methods.c&amp;#8217;&lt;br /&gt;
Lines executed:47.35% of 942&lt;br /&gt;
build/scons/numpy/core/src/multiarray/methods.c:creating &amp;#8216;methods.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/convert_datatype.c&amp;#8217;&lt;br /&gt;
Lines executed:56.11% of 442&lt;br /&gt;
build/scons/numpy/core/src/multiarray/convert_datatype.c:creating &amp;#8216;convert_datatype.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/convert.c&amp;#8217;&lt;br /&gt;
Lines executed:66.67% of 183&lt;br /&gt;
build/scons/numpy/core/src/multiarray/convert.c:creating &amp;#8216;convert.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/shape.c&amp;#8217;&lt;br /&gt;
Lines executed:76.81% of 345&lt;br /&gt;
build/scons/numpy/core/src/multiarray/shape.c:creating &amp;#8217;shape.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/item_selection.c&amp;#8217;&lt;br /&gt;
Lines executed:55.07% of 937&lt;br /&gt;
build/scons/numpy/core/src/multiarray/item_selection.c:creating &amp;#8216;item_selection.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/calculation.c&amp;#8217;&lt;br /&gt;
Lines executed:59.08% of 523&lt;br /&gt;
build/scons/numpy/core/src/multiarray/calculation.c:creating &amp;#8216;calculation.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/usertypes.c&amp;#8217;&lt;br /&gt;
Lines executed:0.00% of 111&lt;br /&gt;
build/scons/numpy/core/src/multiarray/usertypes.c:creating &amp;#8216;usertypes.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/refcount.c&amp;#8217;&lt;br /&gt;
Lines executed:66.67% of 129&lt;br /&gt;
build/scons/numpy/core/src/multiarray/refcount.c:creating &amp;#8216;refcount.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/conversion_utils.c&amp;#8217;&lt;br /&gt;
Lines executed:59.49% of 316&lt;br /&gt;
build/scons/numpy/core/src/multiarray/conversion_utils.c:creating &amp;#8216;conversion_utils.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/buffer.c&amp;#8217;&lt;br /&gt;
Lines executed:56.00% of 25&lt;br /&gt;
build/scons/numpy/core/src/multiarray/buffer.c:creating &amp;#8216;buffer.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/scalartypes.c&amp;#8217;&lt;br /&gt;
Lines executed:42.42% of 877&lt;br /&gt;
build/scons/numpy/core/src/multiarray/scalartypes.c:creating &amp;#8217;scalartypes.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/ucsnarrow.c&amp;#8217;&lt;br /&gt;
Lines executed:89.36% of 47&lt;br /&gt;
build/scons/numpy/core/src/multiarray/ucsnarrow.c:creating &amp;#8216;ucsnarrow.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/arrayobject.c&amp;#8217;&lt;br /&gt;
Lines executed:58.75% of 514&lt;br /&gt;
build/scons/numpy/core/src/multiarray/arrayobject.c:creating &amp;#8216;arrayobject.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;File &amp;#8216;build/scons/numpy/core/src/multiarray/multiarraymodule.c&amp;#8217;&lt;br /&gt;
Lines executed:49.12% of 1134&lt;br /&gt;
build/scons/numpy/core/src/multiarray/multiarraymodule.c:creating &amp;#8216;multiarraymodule.c.gcov&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;The figures themselves are not that meaningful ATM, since the test suite does not run completely, and the built numpy is a quite bastardized version of the real numpy.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;The numpy modifications, although small, are very hackish &amp;#8211; I just wanted to see if that could work at all. If time permits, I hope to be able to automate most of this, and have a system where it can be integrated in the trunk. I am still not sure about the best way to build the extensions themselves. I can see other solutions, such as producing a single file per extension, with every internal numpy header/source integrated, so that they could be easily build from Setup.local. Or maybe a patch to the python sources so that make in python sources would automatically build numpy.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;span&gt;&lt;img class=&quot;zemanta-pixie-img&quot; src=&quot;http://img.zemanta.com/pixy.gif?x-id=c5a8c771-ca1a-8bf5-ac24-7f146187ce6e&quot; alt=&quot;&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cournape.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cournape.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cournape.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cournape.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cournape.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cournape.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cournape.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cournape.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cournape.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cournape.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=cournape.wordpress.com&amp;amp;blog=2210763&amp;amp;post=146&amp;amp;subd=cournape&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>David Cournapeau</name>
			<uri>http://cournape.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Nothing to say</title>
			<subtitle type="html">some personal notes</subtitle>
			<link rel="self" href="http://cournape.wordpress.com/feed/"/>
			<id>http://cournape.wordpress.com/feed/</id>
			<updated>2009-06-29T09:06:30+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Python in the humanities?</title>
		<link href="http://ivory.idyll.org/blog/may-09/lazyweb-python-in-hum"/>
		<id>http://ivory.idyll.org/blog/2009/05/06/lazyweb-python-in-hum</id>
		<updated>2009-05-06T18:41:23+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;I'm writing some proposals to expand support for Python infrastructure
(think cross-platform build and test farms a la Snakebite) and for the
Mellon Foundation application, I'd like to find out how Python is
being used in the humanities.  I found NLTK, the Natural Language Toolkit;
what else is big?&lt;/p&gt;
&lt;p&gt;thanks,
--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: Refactoring to patterns</title>
		<link href="http://matt.eifelle.com/2009/05/05/book-review-refactoring-to-patterns/"/>
		<id>http://matt.eifelle.com/?p=399</id>
		<updated>2009-05-05T08:04:41+00:00</updated>
		<content type="html">&lt;p&gt;After last week &lt;a href=&quot;http://matt.eifelle.com/2009/04/28/book-review-refactoring-improving-the-design-of-existing-code/&quot;&gt;book review on Martin Fowler&amp;#8217;s Refactoring&lt;/a&gt;, I&amp;#8217;d like to review another book, more oriented towards patterns and refactoring.&lt;br /&gt;
&lt;span id=&quot;more-399&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;First, this book could be seen as a follow up of &lt;em&gt;Refactoring&lt;/em&gt;, as almost all the described processes use steps from it. The first chapters explain what to expect from refactoring (how it affect software architecture), patterns and how to detect code that needs refactoring. The catalog is split like the original &lt;a href=&quot;http://matt.eifelle.com/2009/04/14/book-review-design-patterns-elements-of-reusable-object-oriented-software/&quot;&gt;Design Patterns book&lt;/a&gt; in different categories (Creation, Simplification, Generaliation, Protection, Accumulation or Utilities), and each of them is described as in the GoF book (which suits me quite well).&lt;/p&gt;
&lt;p&gt;The code language is Java, so it may be sometimes difficult to find the equivalent construction in your favorite language, but it is doable if you known Java basics.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;This book quotes several times Martin Fowler, but this is not related to the fact that this book is in the &amp;#8220;Fowler signature&amp;#8221; collection of the publisher. &lt;em&gt;Refactoring to Patterns&lt;/em&gt; addresses what &lt;em&gt;Refactoring&lt;/em&gt; couldn&amp;#8217;t and goes firther, without imposing, just by suggesting.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0321213351/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/516pPX8YmvL._SL75_.jpg&quot; width=&quot;55&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0321213351/masbl03-20&quot; target=&quot;_blank&quot;&gt;Refactoring to Patterns (Addison-Wesley Signature Series)&lt;/a&gt; (Hardcover)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Joshua Kerievsky&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 0321213351&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 49.63&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;52 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 34.98&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4 | 44
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Extracting the data from the Delaunay triangulation</title>
		<link href="http://gael-varoquaux.info/blog/?p=99"/>
		<id>http://gael-varoquaux.info/blog/?p=99</id>
		<updated>2009-05-01T15:42:41+00:00</updated>
		<content type="html">&lt;p&gt;Gary Ruben just asked me if it was possible to retrieve the triangulation information from my previous Delaunay example. Actually the reason I came up with this example is that Emanuelle Gouillart, my partner[*], needed to do Delaunay triangulation on some data. She was kind enough to extract that code from her code base. &lt;a href=&quot;http://gael-varoquaux.info/blog/wp-content/uploads/2009/05/extract_delaunay_edges_py&quot;&gt;Here&lt;/a&gt; it is.&lt;/p&gt;
&lt;p&gt;[*] The various languages do not seem to have evolved quickly enough to cope with the fact that people can now have a stable long-term relationship with someone you are not married to. What word should I be using here: &amp;#8216;girlfriend&amp;#8217;, &amp;#8216;partner&amp;#8217;&amp;#8230; ?&lt;/p&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">EPD 4.2.30201 released</title>
		<link href="http://blog.enthought.com/?p=114"/>
		<id>http://blog.enthought.com/?p=114</id>
		<updated>2009-04-30T20:16:00+00:00</updated>
		<content type="html">&lt;p&gt;I am pleased to announce that EPD (Enthought Python Distribution) version&lt;br /&gt;
4.2.30201 has been released.  You may find more information about EPD, as&lt;br /&gt;
well as download a 30 day free trial here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.enthought.com/products/epd.php&quot;&gt;http://www.enthought.com/products/epd.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can check out the release notes here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://svn.enthought.com/epd/wiki/Py25/4.2.30201/RelNotes&quot;&gt;https://svn.enthought.com/epd/wiki/Py25/4.2.30201/RelNotes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Enthought Python Distribution (EPD) is a &amp;#8220;kitchen-sink-included&amp;#8221;&lt;br /&gt;
distribution of the Python Programming Language, including over 80&lt;br /&gt;
additional tools and libraries. The EPD bundle includes NumPy, SciPy,&lt;br /&gt;
IPython, 2D and 3D visualization, database adapters, and a lot of&lt;br /&gt;
other tools right out of the box.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.enthought.com/products/epdlibraries.php&quot;&gt;http://www.enthought.com/products/epdlibraries.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is currently available as a single-click installer for Windows XP (x86),&lt;br /&gt;
Mac OS X (a universal binary for OS X 10.4 and above),&lt;br /&gt;
RedHat 3, 4 and 5 (x86 and amd64), as well as Solaris 10 (x86).&lt;/p&gt;
&lt;p&gt;EPD is free for academic use.  An annual subscription including installation&lt;br /&gt;
support is available for individual and commercial use.  Additional&lt;br /&gt;
support options, including customization, bug fixes and training classes&lt;br /&gt;
are also available:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.enthought.com/products/support_level_table.php&quot;&gt;http://www.enthought.com/products/support_level_table.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- Ilan&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: Refactoring: Improving the design of existing code</title>
		<link href="http://matt.eifelle.com/2009/04/28/book-review-refactoring-improving-the-design-of-existing-code/"/>
		<id>http://matt.eifelle.com/?p=397</id>
		<updated>2009-04-28T08:15:50+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;ve read this book when I started my PhD thesis. It helped me laying down the basis of software conception.&lt;/p&gt;
&lt;p&gt;It was the first book where I found the &lt;em&gt;code smell&lt;/em&gt; concept. And my former code really smelt&amp;#8230;&lt;br /&gt;
&lt;span id=&quot;more-397&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;This book became a reference for me. The patterns catalog (because I consider them as patterns) seems almost exhaustive for me. Some of the steps described are too easy (as inlining a function). It may be more difficult at first to extract a method from another, but it is still the basis of refactoring.&lt;/p&gt;
&lt;p&gt;The main use of the book isn&amp;#8217;t saying what one already know (inling, splitting a function, &amp;#8230;), it is showing a new step, one one didn&amp;#8217;t think about and that solves the problem at hand. Stating the problem, the smell, is also a main focus of the book, where &lt;u&gt;Martin Fowler&lt;/u&gt; gives hints to distinguish between the different smells.&lt;/p&gt;
&lt;p&gt;The author is one of the world-known unitary tests herald, so it is no wonder they have a central place in the different patterns. This way, the refactoring cannot change the code behavior. The given examples are also clear and simple enough, completely described step by step (mainly as the book goes forward, new patterns use preceding ones).&lt;/p&gt;
&lt;p&gt;Finally, the code is written in Java, but it isn&amp;#8217;t a problem for someone used to object-oriented  language. Useful tools are also exposed, but they are old, dating from the time when the book was written (and they are mainly geared toward Java).&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;This was a really simple book. Since I closed it, I didn&amp;#8217;t have to open it again, as the patterns are pretty simple. But still, as for every pattern, you first have to understand it (and read it) to acknowledge it. And I tend to refactor regularly following the ideas behind this book.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201485672/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/21ZceZ5jBTL._SL75_.jpg&quot; width=&quot;58&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201485672/masbl03-20&quot; target=&quot;_blank&quot;&gt;Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)&lt;/a&gt; (Hardcover)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 0201485672&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 46.79&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;85 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 30.40&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.5.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4.5 | 138
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">hash() differences for 32bit and 64bit systems</title>
		<link href="http://blog.enthought.com/?p=113"/>
		<id>http://blog.enthought.com/?p=113</id>
		<updated>2009-04-28T05:19:44+00:00</updated>
		<content type="html">&lt;p&gt;I was working on a client/server project where we send collections of data across the wire. I needed a method of matching datasets on the client and server, and the python hash function seemed ideal. I suspected that the hash function might have different behaviour on different systems, but conveniently forgot to test it until after I tried to deploy it.&lt;/p&gt;
&lt;p&gt;I expected differences, but I didn&amp;#8217;t really know to what extent, so I did a little research. So far, ints are the only thing I have found that hash the same, because int&amp;#8217;s __hash__ function just returns the int value. Otherwise, Python&amp;#8217;s hash functions depend on multiplication using long ints.&lt;/p&gt;
&lt;p&gt;While doing my research, I found a &lt;a href=&quot;http://effbot.org/zone/python-hash.htm&quot;&gt;page discussing hashing in Python 2.3&lt;/a&gt;. The algorithms are similar to the C implementations in Python 2.6.&lt;/p&gt;
&lt;p&gt;Of course, I got bit because Python 2.5 on OS X 10.4 and 64bit RedHat 5 didn&amp;#8217;t hash my objects the same. In the end, I serialized the data&amp;#8217;s metadata and performed a md5 instead, which requres more CPU cycles, but at least it works&amp;#8230;&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Mayavi image of the … month</title>
		<link href="http://gael-varoquaux.info/blog/?p=98"/>
		<id>http://gael-varoquaux.info/blog/?p=98</id>
		<updated>2009-04-27T21:42:28+00:00</updated>
		<content type="html">&lt;p&gt;Tonight I sat down and played a bit with VTK&amp;#8217;s Delaunay tessalation filter. I wanted to inspect the local structure of a graph created by Delaunay tessalation of random points. To see better the structure, I selected a slab of the resulting unstructured grid. I think the image is not only instructive to explain what a Delaunay tessalation is, it also looks pretty cool. Here is the image and the Mayavi &lt;a href=&quot;http://gael-varoquaux.info/blog/wp-content/uploads/2009/04/delaunay_py&quot;&gt;script&lt;/a&gt; that creates it.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://gael-varoquaux.info/blog/wp-content/uploads/2009/04/delaunay.jpg&quot; alt=&quot;Delaunay interpolation&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Try out the Beta2 of the next version of EPD</title>
		<link href="http://blog.enthought.com/?p=112"/>
		<id>http://blog.enthought.com/?p=112</id>
		<updated>2009-04-27T19:34:26+00:00</updated>
		<content type="html">&lt;p&gt;I missed a date with my wife on Friday to help push the beta release of EPD out for all 10 platforms we are currently supporting (WinXP, WinVista, Mac OS X 10.5(10.4)-intel(ppc), RH3 (x86, amd64), RH5 (x86, amd64)).  The 6 different binaries were uploaded to our download servers early Saturday morning (4:00 am Central Time).    I&amp;#8217;m excited for people to try the new release as it brings together recent NumPy, SciPy, matplotlib, and Ipython together with many additional tools.   &lt;/p&gt;
&lt;p&gt;One of the things I&amp;#8217;m very enthused to have people try is an alpha version of EPDLab which comes in the distribution.   EPDLab is an open-source Envisage application which offers an IPython shell along with a linked code editor to allow highly interactive development.     EPDLab also contains a &amp;#8220;search documentation strings&amp;#8221; widget which uses Whoosh and some Robert Kern indexing Fu to provide a very useful search for all of the powerful tools pre-packaged with EPD.   &lt;/p&gt;
&lt;p&gt;Get the beta2 today and start using a very full-featured distribution of Python across your organization today.   &lt;a href=&quot;http://www.enthought.com/products/epdearlyaccess.php&quot;&gt;Download Beta2.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you try this recent beta, I&amp;#8217;d love to hear from you about any feedback you may have (both positive and negative).   Email me at &lt;a href=&quot;mailto:info@enthought.com&quot;&gt;info@enthought.com&lt;/a&gt;.  The final version of the next release of EPD (4.2.30201) should be out by early next week. &lt;/p&gt;
&lt;p&gt;-Travis&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">TALK: Open Source at Microsoft: The Past, Present, and Future</title>
		<link href="http://ivory.idyll.org/blog/apr-09/ramji-talk"/>
		<id>http://ivory.idyll.org/blog/2009/04/27/ramji-talk</id>
		<updated>2009-04-27T19:18:09+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;I'd like to invite you to attend the last of the Michigan State
University CSE colloquia for the 2008-2009 academic year: jointly
sponsored as an AT&amp;amp;T Visiting Lecturer by the MSU LCT, and the CSE
department, Sam Ramji will speak about&lt;/p&gt;
&lt;blockquote&gt;
Open Source at Microsoft: The Past, Present and Future&lt;/blockquote&gt;
&lt;p&gt;in CommArts room 147, Friday May 1, at 11:00am.  I encourage you all to
attend and to forward this on to others who might be interested!  As you
know, open source software is playing an increasingly big part in
education, academia, science, and business, and so I expect this to be
a very interesting talk.&lt;/p&gt;
&lt;p&gt;Contact me at &lt;a class=&quot;reference&quot; href=&quot;mailto:ctb&amp;#64;msu.edu&quot;&gt;ctb&amp;#64;msu.edu&lt;/a&gt; for further information.&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;Abstract:&lt;/p&gt;
&lt;p&gt;Since Microsoft established its Open Source Lab in Redmond more than
five years ago, it has worked with many open source players to make
Windows the best platform for all applications to run on. But this has
not been without its challenges and there is a lot more work to be done
on this front. This talk will cover the thinking behind Microsoft's
current open source strategy and what this means for the software
engineers of the future. It will also spotlight some innovative Open
Source projects the company is supporting at universities across the
world.&lt;/p&gt;
&lt;p&gt;Biography:&lt;/p&gt;
&lt;p&gt;Sam Ramji is the Senior Director of Platform Strategy leading
Microsoft's platform strategy efforts across the company, including
long-term strategic planning in the Windows Server and Tools
organization. Sam's primary focus is to drive Microsoft's Linux and Open
Source Strategy, working together with Microsoft technology development
teams and open source communities to build interoperable solutions.&lt;/p&gt;
&lt;p&gt;Prior to his current role at Microsoft, Sam was a Director of Emerging
Business working on the Silicon Valley Campus where he managed
relationships with Venture Capitalists and entrepreneurs. Prior to
joining Microsoft, Sam led technical product strategy at BEA Systems,
engineering teams building large-scale applications on Open Source
software (at Ofoto.com) as well as hands-on development of client,
client-server, and distributed applications on Unix, Windows, and
Macintosh at prior companies.&lt;/p&gt;
&lt;p&gt;Sam holds a Bachelor of Science degree in Cognitive Science from the
University of California at San Diego, and is a member of the Institute
for Generative Leadership.&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Open Source is like a mistress</title>
		<link href="http://ivory.idyll.org/blog/apr-09/open-source-is-my-mistress"/>
		<id>http://ivory.idyll.org/blog/2009/04/22/open-source-is-my-mistress</id>
		<updated>2009-04-23T05:46:04+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;Open source coding is like a not-so-demanding mistress: I work on it at night,
surreptitiously, after my wife and daughter are asleep.  twill and figleaf are
like bastard children, who only get attention when I can spare it from my
&amp;quot;real&amp;quot; family (my teaching, research or my actual family, depending ;)&lt;/p&gt;
&lt;p&gt;Sigh.&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: Head First Design Patterns</title>
		<link href="http://matt.eifelle.com/2009/04/21/book-review-head-first-design-patterns/"/>
		<id>http://matt.eifelle.com/?p=403</id>
		<updated>2009-04-21T08:13:05+00:00</updated>
		<content type="html">&lt;p&gt;If &lt;a href=&quot;http://matt.eifelle.com/2009/04/14/book-review-design-patterns-elements-of-reusable-object-oriented-software/&quot;&gt;last week&amp;#8217;s book review&lt;/a&gt; was too complicated for you, perhaps this book is more suited for you. Less design patterns, but a funnier way to describe them.&lt;br /&gt;
&lt;span id=&quot;more-403&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;Only twelve patterns are explained, but more important is the fact that each of them is detailled, with examples and exercices, as well as important phrases displayed as images. With humor, these are the caracteristics of the &amp;#8220;Head First&amp;#8221; collection.&lt;/p&gt;
&lt;p&gt;Instead of using the same example throughout the book, each chapter has more or less its own concrete example. The latest chapters explain how they can interact to create complex applications, or how they can define new design patterns (as MVC for instance), then how it will change your way of thinking software architecture.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;This book focuses on the most used and perhaps useful design patterns. This way, it can present them differently than a simple catalog, but I have to say that this approach will not be suited for everyone. For instance, I appreciate books that go straight to the point.&lt;/p&gt;
&lt;p&gt;This kind of book is well suited for people that want to start with design patterns, but not for people familiar with them: they should go for catalogs.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0596007124/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51K9sS3dc1L._SL75_.jpg&quot; width=&quot;66&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0596007124/masbl03-20&quot; target=&quot;_blank&quot;&gt;Head First Design Patterns&lt;/a&gt; (Paperback)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 0596007124&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 29.67&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;77 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 19.94&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.5.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4.5 | 273
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">What is disco?</title>
		<link href="http://ivory.idyll.org/blog/apr-09/what-is-disco"/>
		<id>http://ivory.idyll.org/blog/2009/04/20/what-is-disco</id>
		<updated>2009-04-20T19:43:59+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;Anyone out there used &lt;a class=&quot;reference&quot; href=&quot;http://discoproject.org/&quot;&gt;disco (http://discoproject.org/)&lt;/a&gt;?  Comments, good/bad/neutral?&lt;/p&gt;
&lt;p&gt;From the page:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Disco is an open-source implementation of the Map-Reduce framework for distributed computing. As the original framework, Disco supports parallel computations over large data sets on unreliable cluster of computers.&lt;/p&gt;
&lt;p&gt;The Disco core is written in Erlang, a functional language that is designed for building robust fault-tolerant distributed applications. Users of Disco typically write jobs in Python, which makes it possible to express even complex algorithms or data processing tasks often only in tens of lines of code. This means that you can quickly write scripts to process massive amounts of data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;thanks!&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Book review: Design patterns: Elements of Reusable Object-Oriented Software</title>
		<link href="http://matt.eifelle.com/2009/04/14/book-review-design-patterns-elements-of-reusable-object-oriented-software/"/>
		<id>http://matt.eifelle.com/?p=401</id>
		<updated>2009-04-14T08:09:47+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://matt.eifelle.com/2008/06/03/to-translate-or-not-to-translate/&quot;&gt;As I&amp;#8217;ve said before&lt;/a&gt;, I&amp;#8217;ve done several book reviews in the past. I will start with a small serie on design patterns books.&lt;/p&gt;
&lt;p&gt;This book is one of the &amp;#8220;must-have&amp;#8221; in your library. If you write some code or if you manage some IT or Computer Science projects, you will have this book to lay down the basic software architecture.&lt;br /&gt;
&lt;span id=&quot;more-401&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Content and opinions&lt;/h4&gt;
&lt;p&gt;The first two chapters are an introduction and explain the reasons of the existence of design patterns, how they should be used, good and bad pratices, &amp;#8230; Design patterns without rules to apply them are useless (as the original architectural patterns are useless without drawings skills). A practical example is the object of the second chapter.&lt;/p&gt;
&lt;p&gt;Design patterns are exposed in a three parts catalog. Each pattern each described by a complete explanation, an UML diagram, the interactions between the pattern elements, as well as some implementation solutions (all solutions cannot be written, as it is language-dependent).&lt;br /&gt;
Creational patterns are about creating new objects. They include the abstract factory (constructing several objects of different kinds), the builder (a more elaborate constructor), the factory method (overloading a class method to create objects based on different classes), the prototype (creating new objects by cloning an instance) and the singleton (creating only one instance of a given class).&lt;br /&gt;
Structural patterns are more about the actual software architecture. They include the adapter (translating an interface to another one), the bridge (separating an interface from different implementations), the composite (allowing several objects of a hierarchy to be composed together), the decorator (adding characteristics to an object), the facade (offering an interface to several classes), the flyweight (sharing the same objects between instances so as to reduce memory overhead) or the proxy (using another object to access another, potentially hidden, one).&lt;br /&gt;
Behavioral patterns enable a software to change its own behavior. They include the chain of responsibility (allowing processing requests by whoever can), the command (creating complex requests), the interpreter (describing how a language can be processed), the iterator (providing a way of browing the content of a data container), the mediator (allowing communication between different classes), the memento (enabling restoring the state of an object), the observer (sometimes also called listener, creating a way for instances to be updated/called by another one), the state (allowing changing behavior on the fly), the strategy (providing several ways of doing something), the template method (providing a skeletton for an algorithm) or the visitor (allowing execution of code for every the content of an object). This patterns set is perhaps the most heterogeneous one (although the state and the strategy are in fact exactly the same, the only difference being the interpretation of their actions).&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;This book, sometimes refered ad the GoF book, lays down the basis of software conception. These 23 patterns are not the only ones you may use (some of them are also seldom used), but they are used to make the more complicated ones. If you have one design patterns book you should buy, it is this one.&lt;/p&gt;
&lt;div class=&quot;subcolumns&quot;&gt;
&lt;div&gt;
&lt;div&gt;
		&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201633612/masbl03-20&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51Rs5KgdLTL._SL75_.jpg&quot; width=&quot;60&quot; height=&quot;75&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
	&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201633612/masbl03-20&quot; target=&quot;_blank&quot;&gt;Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)&lt;/a&gt; (Hardcover)&lt;br /&gt;
		&lt;span&gt;by &lt;strong&gt;Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
		ISBN: 0201633612&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; &lt;span&gt;USD 38.96&lt;/span&gt;&lt;br /&gt;
		&lt;strong&gt;124 used &amp;#038; new&lt;/strong&gt; available from &lt;span&gt;USD 23.06&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;		&lt;img src=&quot;http://matt.eifelle.com/wp-content/plugins/amazonsimpleadmin/img/stars-4.5.gif&quot; class=&quot;asa_rating_stars&quot; /&gt; | 4.5 | 261
	&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Twill lives!</title>
		<link href="http://ivory.idyll.org/blog/apr-09/twill-lives-still"/>
		<id>http://ivory.idyll.org/blog/2009/04/12/twill-lives-still</id>
		<updated>2009-04-12T14:17:42+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;One of the advantages of this year's PyCon was that it was (again)
held in Chicago, the home town of Leapfrog Online.  Since they use
twill quite a bit, and were bothered by some of the poor design
decisions and bugginess, they were keen to get together with me to
move twill forward.  So we scheduled a sprint for the Monday after
PyCon.&lt;/p&gt;
&lt;p&gt;In preparation for the sprint, I did a bit of research into how widely
twill was being used.  Downloads only roughly correlate, but I was
surprised to discover that in just the last year, there were over
6,000 downloads from my site; this doesn't count Debian users, who can
install it from one of the Debian dists.  I'd also been surprised by
the number of people at PyCon who came up to me and told me that they
were using twill internally in their companies -- at least two very
expert groups had settled on it for some of their internal monitoring
and testing.  Very cool!  What this told me is that twill is very
nice, simple and usable for many people and we shouldn't get too
adventuresome; good thing to know ;).&lt;/p&gt;
&lt;p&gt;The sprint basically consisted of us talking through a few fundamental
issues like bundling and future development, then fixing a few items,
while I forwarded on all of the bug reports I've gotten over the last
two years.&lt;/p&gt;
&lt;p&gt;The source code has now moved to &lt;a class=&quot;reference&quot; href=&quot;http://code.google.com/p/twill/&quot;&gt;code.google.com/p/twill&lt;/a&gt; and you can see &lt;a class=&quot;reference&quot; href=&quot;http://code.google.com/p/twill/issues/list&quot;&gt;all of the
issues in the usual place&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During the sprint we made a few decisions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;0.9.2 is Coming Real Soon, as a largely feature/API-stable release
that fixes a number of simple bugs and integrates the latest
mechanize.&lt;/li&gt;
&lt;li&gt;for 0.9.2 and 1.0 we will provide both bundled and unbundled
versions of twill; the bundled versions will contain BeautifulSoup,
mechanize, ClientForm, and pyparsing.  The unbundled version will
simply specify what versions of those packages it needs.  This
unbundling will help packagers out while letting individuals (like,
say, Windows users) install twill easily.&lt;/li&gt;
&lt;li&gt;1.0 is further down the road, but will only add a few features.
The main goal of 1.0 is to be nice &amp;amp; stable.&lt;/li&gt;
&lt;li&gt;2.0 and beyond is on the table but exactly what it will be is
unclear.  I have my own ideas but since I'm not doing much Web
developing I may let others take over.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since the sprint, Pam Z. finished putting the issues into the tracker
and we've been slowly trying to work through them.&lt;/p&gt;
&lt;p&gt;Props to Pam Z., Nat W., Kevin B., and Jesse for coming to the sprint,
and to Terry Peppers and Leapfrog for pushing it!  And thanks to
Leapfrog for an excellent steak dinner afterwards ;)&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">We may drop OS X 10.4 and PPC support from future EPD releases</title>
		<link href="http://blog.enthought.com/?p=111"/>
		<id>http://blog.enthought.com/?p=111</id>
		<updated>2009-04-09T18:00:50+00:00</updated>
		<content type="html">&lt;p&gt;We&amp;#8217;ve had a number of recent internal discussions about EPD during which the phrases &amp;#8220;that won&amp;#8217;t work on OS X 10.4&amp;#8243; or &amp;#8220;does upstream have PPC support?&amp;#8221; came up quite often.  For example, a recent discussion about the importance of relocatable EPD egg installs sputtered because we realized Mac OS X 10.4 doesn&amp;#8217;t support RPATH settings in binary headers, which meant we&amp;#8217;d have to do something special just for that platform.&lt;/p&gt;
&lt;p&gt;Once we realized this commonality, we next wondered how important OS X 10.4 and PPC support actually is for the EPD user community.  Thus the point of this blog post: to get some community input.  This is your chance to speak up if you need OS X 10.4 and/or PPC support.  I can&amp;#8217;t promise that a single &amp;#8216;yes&amp;#8217; will sway our decision making, but certainly the more people who speak up, the more likely we are to try to continue the support.&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Long sys.path and consequences, one more reason not to use easy_install</title>
		<link href="http://gael-varoquaux.info/blog/?p=97"/>
		<id>http://gael-varoquaux.info/blog/?p=97</id>
		<updated>2009-04-09T07:43:14+00:00</updated>
		<content type="html">&lt;p&gt;For those who don&amp;#8217;t know, sys.path is the path that the Python interpreter traverse at each module import to look for the module file imported.&lt;/p&gt;
&lt;p&gt;This blog post is about the consequences of having a long sys.path. I&amp;#8217;ll try and make it short, but I would have a lot to say. I am just reacting on &lt;a href=&quot;http://artificialcode.blogspot.com/2009/04/short-circuiting-python-module-lookup.html&quot;&gt;Noah Gift&amp;#8217;s post on performance improvement&lt;/a&gt;, not making a full essay on why overloading sys.path is considered harmful.&lt;/p&gt;
&lt;p&gt;When using easy_install (or setuptools), each new project is installed in a different directory, and the directory is added at runtime to the sys.path (the addition at runtime confuses many users who are not aware of it). As a result, you quickly end up with more than 40 directory on your sys.path. These directories are &amp;#8217;stat-ed&amp;#8217; one after the other on each module import. Thus if you have a long sys.path, there are a large amount of system calls to read directories. To check this out, simply try:&lt;/p&gt;
&lt;pre&gt;strace python -c &quot;import foobar&quot; 2&amp;gt;&amp;amp;1 | less&lt;/pre&gt;
&lt;p&gt;You can see the amount of noise created by a simple (failing) import statement. On a system with high latency (such as an NFS, as we use at work), this is very costly.&lt;/p&gt;
&lt;p&gt;Noah joyfully reports performance improvements by hijacking the Python import mechanism. I claim that part of what Noah has done is not really hijacking the import mechanism, it is undoing the hijacking performed by setuptools.&lt;/p&gt;
&lt;p&gt;I know I am being rude, but many people raised this point before, and it is not getting any traction from the setuptools maintainer. I claim that you should not be using setuptools or easy_install if you want performance or control. I claim that you should not be using setuptools unless you understand well what you are doing (which defeats the name easy_install).&lt;/p&gt;
&lt;p&gt;The way I install packages when I want good control via easy_install is in a virtual environment to discovered the dependencies, and then:&lt;/p&gt;
&lt;pre&gt;easy_install -Zeab . package_name&lt;/pre&gt;
&lt;p&gt;to download the package for each required package, and&lt;/p&gt;
&lt;pre&gt;python setup.py install --&lt;em&gt;single&lt;/em&gt;-&lt;em&gt;version&lt;/em&gt;-&lt;em&gt;externally&lt;/em&gt;-managed &amp;#8211;record ./foobar&lt;/pre&gt;
&lt;p&gt;if the package itself is using setuptools.&lt;/p&gt;
&lt;p&gt;As you can see, setuptools make it really hard to do a clean install. Its a design choice :(.&lt;/p&gt;
&lt;p&gt;Another alternative is to use &lt;a href=&quot;http://pypi.python.org/pypi/pip&quot;&gt;pip&lt;/a&gt; which I strongly encourage.&lt;/p&gt;</content>
		<author>
			<name>Ga&amp;#235;l Varoquaux</name>
			<uri>http://gael-varoquaux.info/blog</uri>
		</author>
		<source>
			<title type="html">Gaël Varoquaux » scientific computing</title>
			<subtitle type="html">Of science and computers (and mostly Pythons)</subtitle>
			<link rel="self" href="http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2"/>
			<id>http://gael-varoquaux.info/blog/?cat=3&amp;feed=rss2</id>
			<updated>2009-07-02T09:08:19+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Intro to Scientific Computing in Python, June 15-19, Austin TX</title>
		<link href="http://blog.enthought.com/?p=110"/>
		<id>http://blog.enthought.com/?p=110</id>
		<updated>2009-04-08T23:21:50+00:00</updated>
		<content type="html">&lt;p&gt;Enthought is offering &amp;#8220;Introduction to Scientific Computing in Python&amp;#8221; at our offices in Austin, Texas from June 15th to June 19th. This course is intended for scientists and engineers who want to learn to use Python for day-to-day computational tasks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Day 1: Introduction to the Python Language&lt;/li&gt;
&lt;li&gt;Day 2: Array Calculations with NumPy&lt;/li&gt;
&lt;li&gt;Day 3: Numeric Algorithms with SciPy&lt;/li&gt;
&lt;li&gt;Day 4: Interfacing Python with Other Languages&lt;/li&gt;
&lt;li&gt;Day 5: Interactive 2D Visualization with Chaco&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The cost for the course is $2500. Please see &lt;a href=&quot;http://www.enthought.com/training/intro_to_sci_comp.php&quot; title=&quot;Intro to Scientific Computing in Python course description&quot; target=&quot;_blank&quot;&gt;the course description on the Enthought website&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;Space is still available in our course on &lt;a href=&quot;http://www.enthought.com/training/python_for_financial_analysis.php&quot;&gt;Python for Science, Engineering, and Financial Analysis&lt;/a&gt;, May 18th to 21st, in New York City&lt;/p&gt;</content>
		<author>
			<name>Enthought</name>
			<uri>http://blog.enthought.com</uri>
		</author>
		<source>
			<title type="html">enthought blog</title>
			<subtitle type="html">News and information about Enthought, Inc. and Enthought's open source software.</subtitle>
			<link rel="self" href="http://blog.enthought.com/?feed=rss2"/>
			<id>http://blog.enthought.com/?feed=rss2</id>
			<updated>2009-07-01T09:08:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Profiling with Valgrind</title>
		<link href="http://matt.eifelle.com/2009/04/07/profiling-with-valgrind/"/>
		<id>http://matt.eifelle.com/?p=372</id>
		<updated>2009-04-07T08:29:43+00:00</updated>
		<content type="html">&lt;p&gt;Profiling comes in three different flaviors. The first is emulation, where a processor behavior is emulated, the second is sampling, where at regular intervals, the profiler samples the status of a program, and fianlly instrulentation, where the profiler gets information when a subroutine is called and when it returns. As with the Heisenberg uncertainty, profiling changes the exact behavior of your program. This is something you have to remember when analyzing a profile.&lt;/p&gt;
&lt;p&gt;Valgrind is an Open Source emulation profiler. It is freely available on standard Linux platforms. As it is an emulation, it is far slower than the actual program. This means that the I/O are underestimated. The advantage is that you can have every detail on the memory behavior (cache misses for instance). Valgrind does not emulate all processors, but you can tweak it to approach your own one.&lt;br /&gt;
&lt;span id=&quot;more-372&quot;&gt;&lt;/span&gt;&lt;br /&gt;
This is more or less a translation of my &lt;a href=&quot;http://matthieu-brucher.developpez.com/tutoriels/cpp/profil-valgrind-visual-studio/?page=valgrind&quot;&gt;French tutorial on Valgrind profiling&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Calling Valgrind&lt;/h4&gt;
&lt;p&gt;Calling the profiler is really easy:&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot;&gt;View Code&lt;/a&gt; SHELL&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot;&gt;&lt;tr id=&quot;p3724&quot;&gt;&lt;td class=&quot;code&quot; id=&quot;p372code4&quot;&gt;&lt;pre class=&quot;shell&quot;&gt;valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes program arguments&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here, I ask valgrind to use the callgrind profiler plugin, and it is supposed to dump the executed instructions (which will help knowing which part of a function really costs, not only which function), simulate the cache (to help enhancing the processor usage) and collect jumps (to have a dynamic view of the program behavior). Of course, the program must have been compiled with the appropriate compilation options (at least &lt;strong&gt;-g&lt;/strong&gt;).&lt;/p&gt;
&lt;h4&gt;Analyzing profiles&lt;/h4&gt;
&lt;p&gt;KCacheGrind is probably the best tool to visualize ad analyze valgrind results (it can also display other profilers results).&lt;/p&gt;
&lt;p&gt;When opening a profile, KCacheGrind may not recognize the associated source files. You may add their folder to the annotations folders.&lt;br /&gt;
&lt;center&gt;&lt;a href=&quot;http://matt.eifelle.com/wp-content/uploads/2009/03/valgrind-source-annotations.png&quot;&gt;&lt;img src=&quot;http://matt.eifelle.com/wp-content/uploads/2009/03/valgrind-source-annotations-300x204.png&quot; alt=&quot;Add source folders for better annotations&quot; title=&quot;Add source folders for better annotations&quot; width=&quot;300&quot; height=&quot;204&quot; class=&quot;aligncenter size-medium wp-image-385&quot; /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;I think the most important graph KCacheGrind provides is the Callee Map. It can be colorized by different means (files, classes, &amp;#8230;), the main point being that Callee Map provides an image where the surface of a function represents its weight in the program execution (weight being number of instructions, cache misses, &amp;#8230;). Unfortunately it appears that in some cases, KCacheGrind is not able to create everything Callee related. I don&amp;#8217;t know why, but I got this on a RedHat 4, the associate KCacheGrind and the latest valgrind.&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;/center&gt;&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-map-graph-01.png&quot;&gt;&lt;img src=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-map-graph-01-300x179.png&quot; alt=&quot;Callee Map colorized by class&quot; title=&quot;Callee Map colorized by class&quot; width=&quot;300&quot; height=&quot;179&quot; class=&quot;aligncenter size-medium wp-image-387&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-map-graph-02.png&quot;&gt;&lt;img src=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-map-graph-02-300x179.png&quot; alt=&quot;Callee Map colorized by source file&quot; title=&quot;Callee Map colorized by source file&quot; width=&quot;300&quot; height=&quot;179&quot; class=&quot;aligncenter size-medium wp-image-388&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Call graphs can also provide intel on how much each function consumes. When double-clicking on a function (in the call graph, in the Callee Map), it is &amp;#8220;activated&amp;#8221;. The original source code is shown (with jumps, if they were collected) with the cost for each instruction, which functions called the function and which functions are called. Another important thing is the difference between the self cost (sometimes called exclusive cost) and the inclusive cost. The former is the cost of the function alone, the latter is the cost of the function with the cost of the called functions.&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;/center&gt;&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-source-assembler.png&quot;&gt;&lt;img src=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-source-assembler-300x179.png&quot; alt=&quot;Source and assembler with displayed costs and jumps&quot; title=&quot;Source and assembler with displayed costs and jumps&quot; width=&quot;300&quot; height=&quot;179&quot; class=&quot;aligncenter size-medium wp-image-390&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-costs.png&quot;&gt;&lt;img src=&quot;http://matt.eifelle.com/wp-content/uploads/2009/04/valgrind-costs-300x179.png&quot; alt=&quot;Different proposed costs&quot; title=&quot;Different proposed costs&quot; width=&quot;300&quot; height=&quot;179&quot; class=&quot;aligncenter size-medium wp-image-392&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;Valgrind combined with KCacheGrind are free tools to make an application profile. It is far from perfect, but it provides valuable information. Instrumentation- and sample-based profiles need a patched kernel (for Linux) or administrator rights (for Windows and Linux), and they can&amp;#8217;t provide at the moment every cost, contrary to emulation.&lt;/p&gt;</content>
		<author>
			<name>Matthieu Brucher</name>
			<uri>http://matt.eifelle.com</uri>
		</author>
		<source>
			<title type="html">Matthieu Brucher's blog</title>
			<link rel="self" href="http://matt.eifelle.com/feed/"/>
			<id>http://matt.eifelle.com/feed/</id>
			<updated>2009-07-03T09:07:27+00:00</updated>
			<rights type="html">©</rights>
		</source>
	</entry>

	<entry>
		<title type="html">SymPy 0.6.4 released</title>
		<link href="http://sympy.blogspot.com/2009/04/sympy-0.html"/>
		<id>tag:blogger.com,1999:blog-2520472460430880330.post-2827963278986967174</id>
		<updated>2009-04-05T02:22:35+00:00</updated>
		<content type="html">SymPy 0.6.4 has been released on April 4, 2009. It is available at&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/sympy/&lt;br /&gt;&lt;br /&gt;About SymPy&lt;br /&gt;&lt;br /&gt;SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.&lt;br /&gt;&lt;br /&gt;Major changes in this release:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;robust and fast (still pure Python) multivariate factorization&lt;/li&gt;&lt;li&gt;sympy works with pickle protocol 2 (thus works in ipython parallel)&lt;/li&gt;&lt;li&gt;./sympy test now uses our testing suite and it tests both regular tests and doctests&lt;/li&gt;&lt;li&gt;examples directory tidied up&lt;/li&gt;&lt;li&gt;more trigonometric simplifications&lt;/li&gt;&lt;li&gt;polynomial roots finding and factoring vastly improved&lt;/li&gt;&lt;li&gt;mpmath updated&lt;/li&gt;&lt;li&gt;many bugfixes (more than 200 patches since the last release) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The following 21 people have contributed patches to this release (sorted by the number of patches):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ondrej Certik&lt;/li&gt;&lt;li&gt;Mateusz Paprocki&lt;/li&gt;&lt;li&gt;Fabian Seoane&lt;/li&gt;&lt;li&gt;Andy R. Terrel&lt;/li&gt;&lt;li&gt;Freddie Witherden&lt;/li&gt;&lt;li&gt;Robert Kern&lt;/li&gt;&lt;li&gt;Priit Laes&lt;/li&gt;&lt;li&gt;Riccardo Gori&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;/li&gt;&lt;li&gt;Aaron Meurer&lt;/li&gt;&lt;li&gt;Alan Bromborsky&lt;/li&gt;&lt;li&gt;Brian E. Granger&lt;/li&gt;&lt;li&gt;Felix Kaiser&lt;/li&gt;&lt;li&gt;Kirill Smelkov&lt;/li&gt;&lt;li&gt;Vinzent Steinberg&lt;/li&gt;&lt;li&gt;Akshay Srinivasan&lt;/li&gt;&lt;li&gt;Andrew Docherty&lt;/li&gt;&lt;li&gt;Andrew Straw&lt;/li&gt;&lt;li&gt;Henrik Johansson&lt;/li&gt;&lt;li&gt;Kaifeng Zhu&lt;/li&gt;&lt;li&gt;Ted Horst&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The following people helped review patches:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Riccardo Gori&lt;/li&gt;&lt;li&gt;Fabian Seoane&lt;/li&gt;&lt;li&gt;Vinzent Steinberg&lt;/li&gt;&lt;li&gt;Gael Varoquaux&lt;/li&gt;&lt;li&gt;Fredrik Johansson&lt;/li&gt;&lt;li&gt;Robert Kern&lt;/li&gt;&lt;li&gt;Alan Bromborsky&lt;/li&gt;&lt;li&gt;Ondrej Certik&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;There were 218 new patches since 0.6.3:&lt;br /&gt;&lt;br /&gt;$ git log --pretty=oneline sympy-0.6.3..sympy-0.6.4 | wc -l&lt;br /&gt;218&lt;br /&gt;&lt;br /&gt;Plans for the future:&lt;br /&gt;&lt;br /&gt;Our roadmap: &lt;a href=&quot;http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0&quot;&gt;http://wiki.sympy.org/wiki/Plan_for_SymPy_1.0&lt;/a&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/2520472460430880330-2827963278986967174?l=sympy.blogspot.com&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Ondřej Čertík</name>
			<email>noreply@blogger.com</email>
			<uri>http://sympy.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Official SymPy blog</title>
			<subtitle type="html">Official SymPy blog</subtitle>
			<link rel="self" href="http://sympy.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-2520472460430880330</id>
			<updated>2009-06-26T09:09:29+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">What should Titus talk about next year at PyCon?</title>
		<link href="http://ivory.idyll.org/blog/apr-09/next-years-fun-talk"/>
		<id>http://ivory.idyll.org/blog/2009/04/04/next-years-fun-talk</id>
		<updated>2009-04-04T17:40:06+00:00</updated>
		<content type="html">&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;My talk this year kinda sucked -- more on that later -- and I am
trying to come up with good and perhaps even &lt;em&gt;non-testing&lt;/em&gt; talk ideas
for next year.&lt;/p&gt;
&lt;p&gt;One intriguing idea contributed by Brian Dorsey is that of giving 5
lightning talks in a 30 minute session.  Since I like live demos, I could
give five completely different demos, e.g.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;building and testing CPython across the Snakebite network, 30+ machines&lt;/li&gt;
&lt;li&gt;Django's test framework, from an outsider/testing-fiend perspective&lt;/li&gt;
&lt;li&gt;time-series analysis of code coverage data&lt;/li&gt;
&lt;li&gt;N packages in 5 minutes - trying to easy_install audience-suggested
packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;and whatever else comes to mind.  Ideas welcome ;).&lt;/p&gt;
&lt;p&gt;I may submit a separate talk proposal on my Web development course, too, but
I have to see how it goes this fall.&lt;/p&gt;
&lt;p&gt;--titus&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Titus Brown</name>
			<email>titus+blog1@idyll.org</email>
			<uri>http://ivory.idyll.org/blog</uri>
		</author>
		<source>
			<title type="html">Daily Life in an Ivory Basement</title>
			<subtitle type="html">This Space Intentionally Left Empty</subtitle>
			<link rel="self" href="http://ivory.idyll.org/blog/tags/python?flav=atom"/>
			<id>http://ivory.idyll.org/blog/tags/python</id>
			<updated>2009-07-03T09:07:41+00:00</updated>
			<rights type="html">Copyright 2004-2009, C. Titus Brown</rights>
		</source>
	</entry>

</feed>
