<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>tlog (Posts about python)</title><link>https://tibonihoo.net/</link><description></description><atom:link href="https://tibonihoo.net/en/tag/python.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:thibauld(_à_)tibonihoo(_point_)net"&gt;Thibauld Nion&lt;/a&gt; &lt;a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png" /&gt;&lt;/a&gt; &lt;span xmlns:dct="http://purl.org/dc/terms/" property="dct:title"&gt;tlog&lt;/span&gt; by &lt;a xmlns:cc="http://creativecommons.org/ns#" href="https://tibonihoo.net" property="cc:attributionName" rel="cc:attributionURL"&gt;Thibauld Nion&lt;/a&gt; is licensed under a &lt;a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"&gt;Creative Commons Attribution-ShareAlike 4.0 International License&lt;/a&gt;.</copyright><lastBuildDate>Fri, 03 Apr 2026 11:45:45 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>7 years of Django in 7-ish days</title><link>https://tibonihoo.net/en/blog/2019/08/7-ans-de-django-en-1-semaine/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;div&gt;&lt;p&gt;Spring was quite an "interesting time" for my personal project: &lt;a class="reference external" href="https://github.com/tibonihoo/wateronmars"&gt;WaterOnMars&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Indeed I started to work on adding a new feature (a first in a while
but maybe the topic of another post) but each time I was pushing or
deploying code I was suddenly getting back warnings unrelated to my
changes but pointing at core components like, err... Python or Django
versions being deprecated.&lt;/p&gt;
&lt;p&gt;So kudos for Python and github developers for making a clever use of
warnings and, yes, I admit that using Python2.7 (ending its life
in 2020) and Django1.4 (published 7 years ago) in 2019 is lame.&lt;/p&gt;
&lt;p&gt;So... migrations !&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tibonihoo.net/en/blog/2019/08/7-ans-de-django-en-1-semaine/"&gt;Read more…&lt;/a&gt; (3 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>django</category><category>python</category><category>wateronmars</category><guid>https://tibonihoo.net/en/blog/2019/08/7-ans-de-django-en-1-semaine/</guid><pubDate>Thu, 29 Aug 2019 20:24:11 GMT</pubDate></item><item><title>Why leave Wordpress behind for Nikola ?</title><link>https://tibonihoo.net/en/blog/2019/07/pourquoi-abandonner-wordpress/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;div&gt;&lt;p&gt;In my previous post I announced my website's &lt;a class="reference external" href="https://tibonihoo.net/en/blog/2019/07/migrations-de-wordpress-a-un-site-statique-avec-nikola"&gt;migration from Wordpress
to Nikola&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Still, with Wordpress having been my site's engine for so many years,
I feel that I owe a few explanations to the community.&lt;/p&gt;
&lt;p&gt;In this post I'll enumerate what stands out in my (very good !)
experience with &lt;a class="reference external" href="https://en.wordpress.org"&gt;Wordpress&lt;/a&gt;, plus a few words about &lt;a class="reference external" href="https://www.zenphoto.org/"&gt;zenPhoto&lt;/a&gt; and what
makes the difference between those two and Nikola.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tibonihoo.net/en/blog/2019/07/pourquoi-abandonner-wordpress/"&gt;Read more…&lt;/a&gt; (3 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>getnikola</category><category>python</category><category>wordpress</category><category>zenphoto</category><guid>https://tibonihoo.net/en/blog/2019/07/pourquoi-abandonner-wordpress/</guid><pubDate>Tue, 30 Jul 2019 19:59:41 GMT</pubDate></item><item><title>Migrations: from Wordpress to a static site with Nikola</title><link>https://tibonihoo.net/en/blog/2019/07/migrations-de-wordpress-a-un-site-statique-avec-nikola/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;div&gt;&lt;p&gt;This is it ! My first post writen with &lt;a class="reference external" href="https://getnikola.com"&gt;Nikola&lt;/a&gt; and, even better, all
my website is now made only of static pages.&lt;/p&gt;
&lt;p&gt;After serving me well during the past 12 years, &lt;a class="reference external" href="https://en.wordpress.org"&gt;Wordpress&lt;/a&gt; (thanks to
&lt;a class="reference external" href="https://automattic.com/"&gt;Automattic&lt;/a&gt; and its community) will not power anymore my blog, which I
expect to consule less resource and to require only marginally less maintenance.&lt;/p&gt;
&lt;p&gt;The new software I'm using to replace it is called &lt;a class="reference external" href="https://getnikola.com"&gt;Nikola&lt;/a&gt; (a big
thank you to &lt;a class="reference external" href="https://ralsina.me/"&gt;Roberto Alsina&lt;/a&gt;, &lt;a class="reference external" href="https://chriswarrick.com/"&gt;Chris Warrick&lt;/a&gt; and other
contributors) and it generates my whole website as static HTML pages.&lt;/p&gt;
&lt;p&gt;The flexibility of &lt;a class="reference external" href="https://getnikola.com"&gt;Nikola&lt;/a&gt; allowed me to keep most of the organisation
of this site untouched with remarkably few change of addresses for the
content but still with a little bit of extra efforts that I'll
describe below.&lt;/p&gt;
&lt;p&gt;For the most important, though, you can find the &lt;a class="reference external" href="https://tibonihoo.net/blog"&gt;blog&lt;/a&gt; posts and the
&lt;a class="reference external" href="https://tibonihoo.net/photos"&gt;photos&lt;/a&gt; albums at the same places as they were before.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://tibonihoo.net/en/blog/2019/07/migrations-de-wordpress-a-un-site-statique-avec-nikola/"&gt;Read more…&lt;/a&gt; (3 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>blog</category><category>nikola</category><category>python</category><category>web</category><category>wordpress</category><guid>https://tibonihoo.net/en/blog/2019/07/migrations-de-wordpress-a-un-site-statique-avec-nikola/</guid><pubDate>Sun, 21 Jul 2019 15:30:17 GMT</pubDate></item><item><title>Long overdue release of Yapsy</title><link>https://tibonihoo.net/en/blog/2018/09/une-nouvelle-version-de-yapsy-qui-sest-faite-attendre/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;div&gt;&lt;strong&gt;TL;DR: &lt;/strong&gt;&lt;a href="https://sourceforge.net/projects/yapsy/"&gt;Yapsy&lt;/a&gt; v1.12 has been released with fixes for Python3.6 and multiprocessing on windows.

&lt;img class="size-full wp-image-648 alignleft" src="https://tibonihoo.net/blog/wp-content/uploads/2010/10/yapsy.png" alt="" width="48" height="48"&gt; So, after 3 years &lt;del&gt;sleeping&lt;/del&gt; busy with a fair bit of work and family &lt;del&gt;duties&lt;/del&gt; joyful activities, I eventually got some time to actually release Yapsy – the fat-free DIY python plugin management toolkit.

There was a fair bit of contributions (compared to the modest size of the project), that I'm sorry not to have released earlier but which bring some nice polishing to yapsy.

The most prominent news I think is a better compatibility with modern Python (esp. 3.6) and the resolution of a nasty bug that made the instantiation of plugins in their own (sub)processes (with the Multiprocessing Plugin Manager) impossible on Windows (changelog below).

&lt;p&gt;&lt;a href="https://tibonihoo.net/en/blog/2018/09/une-nouvelle-version-de-yapsy-qui-sest-faite-attendre/"&gt;Read more…&lt;/a&gt; (1 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>codes</category><category>github</category><category>plugin</category><category>python</category><category>sourceforge</category><category>yapsy</category><guid>https://tibonihoo.net/en/blog/2018/09/une-nouvelle-version-de-yapsy-qui-sest-faite-attendre/</guid><pubDate>Tue, 18 Sep 2018 22:27:46 GMT</pubDate></item><item><title>Wateronmars feature complete, soon ? What has been added can be edited !</title><link>https://tibonihoo.net/en/blog/2015/05/wateronmars-bientot-complet-ce-qui-a-ete-ajoute-peut-etre-modifie/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;a href="https://tibonihoo.net/blog/wp-content/uploads/2013/12/wom-logo-128.png"&gt;&lt;img class="alignleft size-full wp-image-1446" src="https://tibonihoo.net/blog/wp-content/uploads/2013/12/wom-logo-128.png" alt="wom-logo-128" width="128" height="128"&gt;&lt;/a&gt;&lt;a href="https://github.com/tibonihoo/wateronmars/"&gt;Wateronmars&lt;/a&gt; -- my news reader and bookmark saving web app -- has recently got some new features: every items (feed sources and bookmarks) can now be easily edited and removed.

Not too soon, right ? I've actually been using it&lt;a href="https://tibonihoo.net/blog/2014/01/wateronmars-a-lusage/"&gt; since a little more than 1 year&lt;/a&gt;  to consume my feeds and store some links and the need to edit a bookmark title or to un-subscribe from some feed wasn't a big urge, but eventually became big enough to motivate to add the missing forms and bit of REST API.

&lt;a href="https://tibonihoo.net/blog/wp-content/uploads/2015/05/wom_profile_2015.png"&gt;&lt;img class="aligncenter size-medium wp-image-1643" src="https://tibonihoo.net/blog/wp-content/uploads/2015/05/wom_profile_2015-300x136.png" alt="wom_profile_2015" width="300" height="136"&gt;&lt;/a&gt;

This was also the occasion to clean a little more some of the pages, which, in turn, is a just a prelude of the next big feature to come: internationalization (more on that later).

The result has a certain feeling of completeness and can be seen &lt;a href="http://wateronmars-demo.herokuapp.com/"&gt;on the demo site on heroku&lt;/a&gt; and&lt;a href="https://github.com/tibonihoo/wateronmars/"&gt; in the sources on github&lt;/a&gt;.</description><category>bookmarks</category><category>codes</category><category>django</category><category>feeds</category><category>python</category><category>wateronmars</category><guid>https://tibonihoo.net/en/blog/2015/05/wateronmars-bientot-complet-ce-qui-a-ete-ajoute-peut-etre-modifie/</guid><pubDate>Sun, 10 May 2015 20:20:19 GMT</pubDate></item><item><title>New releases and features for Yapsy</title><link>https://tibonihoo.net/en/blog/2015/05/nouvelle-sortie-et-nouvelle-fonctionnalite-pour-yapsy/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;a href="https://tibonihoo.net/blog/wp-content/uploads/2010/10/yapsy.png"&gt;&lt;img class=" size-full wp-image-648 alignleft" src="https://tibonihoo.net/blog/wp-content/uploads/2010/10/yapsy.png" alt="yapsy" width="48" height="48"&gt;&lt;/a&gt;&lt;a href="https://sourceforge.net/projects/yapsy/"&gt;Yapsy&lt;/a&gt; - my fat-free DIY python plugin management toolkit -- has recently jumped from 1.10 to 1.11 with a great new contribution: allowing plugins to run in their own processes separated from the plugin manager's (and presumably the application's) own process.

Adding brand new features is not very frequent for Yapsy (last time was 2 years and a half ago !) but it doesn't prevent people from using it and  contributing to it, which I find really nice.

Besides the features there has been also a fair number of bug fixes contributed which, I guess, can be interpreted as a good sign (even though I'd prefer to have it bug-free).

All of this was the occasion to improve a little more &lt;a href="http://yapsy.sourceforge.net/"&gt;the documentation&lt;/a&gt; (also on &lt;a href="https://yapsy.readthedocs.org/en/latest/"&gt;readthedoc&lt;/a&gt;) to be more helpful and make sure that people know how and where to contribute (spoiler: &lt;a href="https://github.com/tibonihoo/yapsy/"&gt;github&lt;/a&gt; pull requests are perfectly fine if you've lost your sourceforge credentials and don't intend to get them back ;) )

You can read more on the latest release notes:
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://sourceforge.net/p/yapsy/news/2015/04/new-feature-release-for-yapsy-111023/"&gt;Yapsy 1.11.023&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://sourceforge.net/p/yapsy/news/2015/05/new-bugfix-release-yapsy-111123/"&gt;Yapsy 1.11.123&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>codes</category><category>github</category><category>plugins</category><category>python</category><category>sourceforge</category><category>yapsy</category><guid>https://tibonihoo.net/en/blog/2015/05/nouvelle-sortie-et-nouvelle-fonctionnalite-pour-yapsy/</guid><pubDate>Sat, 09 May 2015 14:57:27 GMT</pubDate></item><item><title>Minor release for Yapsy 1.10.423</title><link>https://tibonihoo.net/en/blog/2014/06/livraison-mineure-de-yapsy-v1-10-423/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;a href="https://tibonihoo.net/blog/wp-content/uploads/2010/10/yapsy.png"&gt;&lt;img class="alignnone size-full wp-image-648" src="https://tibonihoo.net/blog/wp-content/uploads/2010/10/yapsy.png" alt="yapsy" width="48" height="48"&gt;&lt;/a&gt;&lt;a href="https://sourceforge.net/p/yapsy/news/2014/06/new-release-yapsy-110423/"&gt;I've just released a minor version of Yapsy&lt;/a&gt;, a small python library for plugin management.

Not a big deal actually, just a few adjustments to take into account the feedback from developers of the &lt;a href="http://getnikola.com/"&gt;Nikola project&lt;/a&gt; where yapsy is used as a support for the application's modular structure.

I also took from them the idea of registering yapsy to &lt;a href="https://coveralls.io/r/tibonihoo/yapsy"&gt;coveralls.io&lt;/a&gt; which motivated me to add some unit-test just to get the green badge reserved for a test coverage higher than 90%.</description><category>codes</category><category>python</category><category>yapsy</category><guid>https://tibonihoo.net/en/blog/2014/06/livraison-mineure-de-yapsy-v1-10-423/</guid><pubDate>Sat, 07 Jun 2014 22:20:23 GMT</pubDate></item><item><title>Bookmarklets: no-brainer integration of WaterOnMars on Android</title><link>https://tibonihoo.net/en/blog/2014/05/bookmarklets-lintegration-sans-souci-de-wateronmars-sous-android/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;div&gt;&lt;a href="https://tibonihoo.net/blog/wp-content/uploads/2014/05/bookmarklet1.png"&gt;&lt;img class="alignleft wp-image-1623" src="https://tibonihoo.net/blog/wp-content/uploads/2014/05/bookmarklet1-300x300.png" alt="bookmarklet" width="150" height="150"&gt;&lt;/a&gt;&lt;a href="https://github.com/tibonihoo/wateronmars"&gt;WaterOnMars&lt;/a&gt; provides bookmarklets to do basic actions like subscribing to an RSS feed or to bookmark a web page.

&lt;a href="https://en.wikipedia.org/wiki/Bookmarklet"&gt;Bookmarklets&lt;/a&gt; are very handy and they work pretty well with desktop browsers, but mobile browsers hardly support them. Unfortunately, since a few months I've been browsing the net and reading news on WaterOnMars almost exclusively from my (Android) tablet.

A common solution to get similar functionality as bookmarklets on mobile platform is to develop Android-specific applications.

However I did find an alternative solution, which may not be 100% user friendly, but remains quite handy: the &lt;a href="https://play.google.com/store/apps/details?id=com.kurtchen.android.bookmarklet.free"&gt;Bookmarklet Free app !&lt;/a&gt;

 &lt;p&gt;&lt;a href="https://tibonihoo.net/en/blog/2014/05/bookmarklets-lintegration-sans-souci-de-wateronmars-sous-android/"&gt;Read more…&lt;/a&gt; (1 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>android</category><category>bookmarklet</category><category>bookmarks</category><category>codes</category><category>python</category><category>rss</category><category>wateronmars</category><guid>https://tibonihoo.net/en/blog/2014/05/bookmarklets-lintegration-sans-souci-de-wateronmars-sous-android/</guid><pubDate>Mon, 05 May 2014 22:10:43 GMT</pubDate></item><item><title>WaterOnMars now runs on Bootstrap3</title><link>https://tibonihoo.net/en/blog/2014/05/wateronmars-a-migre-vers-bootstrap3/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;div&gt;&lt;a href="https://tibonihoo.net/blog/wp-content/uploads/2013/12/wom-logo-128.png"&gt;&lt;img class="alignleft wp-image-1446 size-full" src="https://tibonihoo.net/blog/wp-content/uploads/2013/12/wom-logo-128.png" alt="wom-logo-128" width="128" height="128"&gt;&lt;/a&gt;When I started developing &lt;a href="https://github.com/tibonihoo/wateronmars"&gt;WaterOnMars&lt;/a&gt;, the fashionable toolkit for web GUI work was &lt;a href="http://getbootstrap.com/2.3.2/"&gt;the version 2 of Twitter Bootstrap&lt;/a&gt;. Of course, by the time &lt;a title="Living with WaterOnMars" href="https://tibonihoo.net/en/blog/2014/01/wateronmars-a-lusage/"&gt;my project reached a truly usable state&lt;/a&gt;, the version 3 of bootstrap was released and the version 2 stopped being maintained. Another example of the perpetual obsolescence developers have had to face since the dawn of time (e.g the 70's).

&lt;a href="http://getbootstrap.com/css/#overview-mobile"&gt;Version 3's major feature being its first class support for mobile platform&lt;/a&gt; and my main usage of WaterOnMars being via a tablet, migrating was really tempting but I had no idea how much work I'd have to put into it.

I did it a few weeks a go though and the good news was that it's been much much easier that I thought.

 &lt;p&gt;&lt;a href="https://tibonihoo.net/en/blog/2014/05/wateronmars-a-migre-vers-bootstrap3/"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>bootstrap</category><category>codes</category><category>css</category><category>javascript</category><category>python</category><category>wateronmars</category><guid>https://tibonihoo.net/en/blog/2014/05/wateronmars-a-migre-vers-bootstrap3/</guid><pubDate>Sun, 04 May 2014 12:48:36 GMT</pubDate></item><item><title>fabric: a good assistant for the development of WaterOnMars</title><link>https://tibonihoo.net/en/blog/2014/05/fabric-une-aide-au-dev-de-wateronmars/</link><dc:creator>Thibauld Nion</dc:creator><description>&lt;div&gt;&lt;a href="https://tibonihoo.net/blog/wp-content/uploads/2013/12/wom-logo-128.png"&gt;&lt;img class="alignleft wp-image-1446 size-full" src="https://tibonihoo.net/blog/wp-content/uploads/2013/12/wom-logo-128.png" alt="wom-logo-128" width="128" height="128"&gt;&lt;/a&gt;Despite spending currently more time using my &lt;a href="https://github.com/tibonihoo/wateronmars"&gt;WaterOnMars&lt;/a&gt; feed reader than developing it, I'm still making small improvements to it. And to make my life easier I could count on a solid little project: &lt;a href="http://www.fabfile.org/"&gt;fabric&lt;/a&gt; !

&lt;a href="http://www.fabfile.org/"&gt;fabric&lt;/a&gt; is a Python based command-line utility designed to help running commands remotely: typically to deploy a web app on a remote server.

So I'm using it to deploy WaterOnMars on my personal server and also to deploy the&lt;a href="http://wateronmars-demo.herokuapp.com/"&gt; demo version on heroku&lt;/a&gt;. But more recently I added fabric's configuration file (the "fabfile") to the &lt;a href="https://github.com/tibonihoo/wateronmars"&gt;sources of the project&lt;/a&gt; as an officially maintained helper for development tasks ((well I didn't think of it in such a formal way obviously)). It's now usable to run the test suite, to launch the web app locally, to set-up the db and to deploy it on custom servers.

 &lt;p&gt;&lt;a href="https://tibonihoo.net/en/blog/2014/05/fabric-une-aide-au-dev-de-wateronmars/"&gt;Read more…&lt;/a&gt; (2 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>codes</category><category>deployment</category><category>development</category><category>fabfile</category><category>fabric</category><category>python</category><category>wateronmars</category><category>web app</category><guid>https://tibonihoo.net/en/blog/2014/05/fabric-une-aide-au-dev-de-wateronmars/</guid><pubDate>Thu, 01 May 2014 22:05:34 GMT</pubDate></item></channel></rss>