New libmodbus 2.9.2 with win32 support and backends
OK, I don't care about Windows but I'm happy libmodbus offers a bit of Open Source to this platform so thank you to Tobias Doerffel for this contribution. The other major change is the use of an internal backend to isolate the transport layers (only serial RTU and TCP/IPv4 for now).
libmodbus 2.9.2 (2010-12-05)
- Fix segfault in bandwidth-server-many-up on inet_ntoa() call
- Fix unit test of report slave ID in RTU
- Fix GH-3. Remove inclusion of config.h in modbus.h
- Correctly detect if we are cross
- compiling for win32 by Kirill Smelkov.
- Rename modbus_[listen|accept] to modbus_tcp_[listen|accept]
- Fix setting of the broadcast address
- Remove slave argument from modbus_new_rtu()
- Win32 support by Tobias Doerffel
- Split source code around RTU and TCP (backends)
- Check received function code
So let's run your MinGW!
Travaux
Durant la rénovation de notre maison, j'ai souvent pensé au livre que j'avais lu peu de temps auparavant, « Travaux » de Georges Navel. Je n'ai jamais autant travaillé que durant cette année. Ayant un métier qui consiste essentiellement à produire du virtuel, la réalisation physique fut un véritable plaisir.
Nous avons ensemble réalisé un projet qui nous tenait à cœur et c'est formidable d'avoir pu atteindre notre objectif.
Current Tranformer
At home or at work, you probably have spotlights which indicate only 20W or 35W of power consumption, but sadly these spotlights are powered by a lower voltage and so they require a transformer (hidden in the ceiling, a cupboard or a hood) which in turn consumes around 40W.
I've recently designed an application (with libmodbus, glib and Django) to measure the power consumption from various sensors built by LEM. By doing some tests at home, I've confirmed my suspicions about a transformer permanently plugged into the mains (0.18 * 224 = 40.3W for total of 80W when both spotlights are turned on).
So, I've replaced the shunt plug with a switch between the main and the transformer and once again I have a perfect 0W when off!
Do you know how many electricity transformers do you have around you?
The perfect git workflow!
It's strangely hard to find documentation on the git workflow to follow to keep a clean commit history when you want to merge external contributions.
First enable rebasing by default
As it's written on live.gnome.org, many users find that they happen to do "git pull --rebase" most of the time. Would be nice if "git pull" simply did that by default. You can set that up for the master branch of all your repositories by:
git config --global branch.master.rebase true
An upstream project
For our example, we've an upstream project with only one commit called C1
mkdir upstream
cd upstream
git init
touch hello.c
git add hello.c
git commit -m "C1"
Your fork
As contributor, you can fork as usual and commits your changes on a specific branch (newfeature).
git clone upstream fork
cd fork
git checkout -b newfeature
edit hello.c
git commit -a -m "C2"
When you're ready to ask for a pull request, sync with upstream project with a final "git pull" to help the maintainer to merge your patches (it's not mandatory).
Back to upstream
In the meantime, it's possible some new commits have landed in upstream.
As maintainer, you receive an email: "Could you merge my branch, please?", so you add the repository to your remote list to fetch the content:
git remote add fork ../fork/
git fetch fork
and create a branch to rebase the contributor work in a separated branch:
git checkout -b fork fork/newfeature (and resolve if necessary)
git rebase master
You can now apply the fast-forward merge on your master branch
git checkout master
git merge fork
You're done with a nice commit history w/o ghost commits.
On the contributor side
Just delete your branch because after a rebase in upstream, your branch is certainly broken so it's time to cleanup:
git branch -D newfeature
Thanks to Staz and Dodji on #gnomefr chan.
Succès pour les premières rencontres Django FR !
Bravo aux organisateurs de la première édition des rencontres Django FR, qui avaient même prévu des activités pour les accompagnateurs (conjoints, conjointes et enfants). Le planning des conférences a été fidèlement respecté malgré les aléas de la restauration.
L'ambiance était chaleureuse et l'évènement idéal pour rencontrer et discuter avec les djangonautes français (dont un belge du projet GNOME).
Ma présentation sur l'i18n/l10n avec Django et les photos de l'évènement par Providenz.
FOSDEM 2010!
I will be at Brussels on 6-7th of February for the FOSDEM.
git tip of day with 1.6.6, forget about git checkout -t -b origin/onebranch, now a simple git checkout onebranch do the job.
Fedora user again
I was a Fedora user until Fedora Core 6 but the second Ubuntu distribution was a really nice experience so I made the jump (fast packaging system, huge repo, etc).
Since 9.04 (or just before) I have been annoyed by the notification system NotifyOSD, I find disturbing to blur (or hide w/o compositing) the message on mouseover and the popup doesn't provide contextual actions. The Ayatana project get Ubuntu away from the upstream development (many patches to integrate libindicate, etc).
The Fedora Core 12 releases notes caught my attention and so many of my GNOME heroes (such as Alexander or Owen) work for Red Hat so after one test I jump back. After one month, I'm still an happy Fedora user
What I like:
- yum is fast (for my needs)
- Eclipse packaging (CDT, valgrind, systemptap)
- all stable updates of GNOME
- good integration of PulseAudio with the kernel
- recent version of Empathy
- meta-package for development
- PackageKit
- rpmfusion is very useful to collect bytes from the dark side or for the freeworld (eg. font rendering)
What I don't like:
- wrong French keyboard by default
- easy_install is provided by setuptools-dev package not setuptools
- no sudo user by default
- the kernel updates doesn't update the default GRUB entry to the latest kernel
- SElinux (enabled by default on my desktop)
- no /etc/ld.so.conf.d/local.conf by default (for /usr/local/lib)
- gtags.el isn't in Emacs site-lisp directory
- you need to install control-center-extra to have access to Windows settings (that really sucks)!
Discover new features by translating
Last week, Fred (the Release Team member of course) has invited me to a famous radio show[1], "Good Morning, Stallman". During the show, I said the translating is good way to discover new features before the releases, sometimes it's also the only way!
For example, I've discovered a powerful feature of Tasks by translating some regular expressions, you can enter a task as:
![]()
then the date will be extracted from the message:

You can use days, weeks, months and various prepositions, eg. in 3 weeks, by w32, due 1st June.
Of course, this feature works fine in French too!
[1] http://www.radiopanik.org is the most famous radio in Brussels or in its street!
Damned Lies makes its road
Claude and me still continue to improve Damned Lies, we've just added the RSS feeds. Now, it's also possible to see the differences between the different uploaded PO files of a module. Claude has cooked a new feature to directly push an approved translation on its git repository (GNOME migration to git is in sight!).
This week, I was really happy when I saw the Adi's posts to introduce Damned Lies:
It's still confidential so don't talk about that around you but it seems the Enlightment project is evaluating DL:
Shut
Limitations of the Django ORM (1.0) in model inheritance
Vertimus has been merged with Damned-Lies and it's wonderful to see how a tiny project is able to receive as much coverage and talks (in geek circles only of course, GNOME Commit Digest 13, planet, GNOME i18n list). I've been spending more time that I've estimated because of Django ORM limitations.
Django is a nice framework with a really good documentation, what I miss the most is a powerful ORM as SQLAlchemy. To code the Design Pattern State in Vertimus, I used two classes StateDb and StateAbstract instead of one to avoid to have too many SQL tables and other drawbacks (same design for actions: ActionDb and ActionAbstract). I've tested many designs before to find the right one which fit my needs. The Django developers are aware of these current limitations and I found a useful document to understand the current Django ORM limitations in model inheritance:
http://www.slideshare.net/LorenDavie/model-inheritance/
I've read this document a bit late I hope you'll find it on time.

