Hello, and welcome on my small web space. You will find here some software and documents I wrote.
Software
I wrote some pieces of free software, often closely related to Emacs, because this text editor is awesome, and often in Python, because it is soooooooo greeaaat a programming language.
In short, Python:
- has a crystal clear syntax and quite a nice design;
- is very powerful;
- is reasonably portable;
- can be easily extended with C or C++;
- can be easily embedded in C or C++;
- is very well documented;
- is free software.
Moreover, writing Python programs is quite fun. I hear you: “But hey, there are at least two other major interpreted languages that are quite fun to play with!” Naaaa! Python code is maintainable; that is, not only by its author and within the first month of its existence...
Well, enough spoken, here's the beef.
TDBSF, the Trivial Database Search Facility
TDBSF is a search engine targeted at small
“databases” in a very simple text format designed to replace an old
shareware tool that my father used during years (this tool had
severe limitations).
The engine is written in Python, and the only really usable user interface in ELisp, for Emacs. However, TDBSF is designed to ease the addition of interfaces, so this is only a matter of whether there are people wanting to use it outside Emacs or not.
Since version 2.0, TDBSF has full Unicode support. More precisely, database files may be written in any Unicode-compatible encoding supported by both Python and the interface in use (i.e., currently, Emacs). The encoding of a database file is simply indicated with an encoding declaration, a common practice for Emacs users and Python programmers.
Starting with version 3.0, TDBSF works with Python 3; Python 2 support is dropped. You can download TDBSF or read its documentation. This program is released under the GNU GPL version 2.
pythondialog
pythondialog is a Python wrapper for
the dialog utility originally written by Savio Lam, and later
rewritten by Thomas E. Dickey. Its purpose is to provide an easy to
use, pythonic and comprehensive Python interface to dialog.
This module is useful if you want to quickly and easily write text-mode1 interfaces in Python (screenshots here). The abstraction level is quite high: you can directly create text boxes, input boxes, radio lists, etc. You cannot do low-level stuff with this program. In that case, you should look at ncurses or slang. For sophisticated text-mode interfaces, the Urwid Python library looks rather interesting, too. Document yourself and make up your mind!
The first version of pythondialog was written by Robb Shecter. I made it more robust, complete and well-documented. During a few years (2004–2009), pythondialog has been in the hands of Peter Åstrand, who uploaded version 2.7 to SourceForge.
I resumed my work on pythondialog, and have uploaded several versions here as well as on SourceForge between 2009 and 2015. As SourceForge seems to be misbehaving since at least May 2015, I am going to move pythondialog away from that site (SourceForge). You can download new releases from here or from PyPI and browse the Git repository from GitHub. You can always check the integrity of a given release tarball using my OpenPGP key.
pythondialog is maintained in a Git repository that can be cloned with:
git clone https://github.com/frougon/pythondialog.git
I haven't yet set up a replacement home page for what was available on SourceForge. However, you can browse the pythondialog Manual from this site as usual.
pythondialog is distributed under the GNU LGPL (GNU Lesser General Public License).
CondConfigParser
CondConfigParser is a Python library designed to help Python application developers to parse configuration files. Compared to well-known modules such as configparser and json, the main specificity of CondConfigParser is that it allows the end user to define, in the configuration file, variables and conditions using boolean operators, as well as sections that are only applied when the corresponding condition is fulfilled. Here is an example of a configuration file that can be parsed with CondConfigParser (and understood by FFGo, which relies on CondConfigParser):
# Variable assignments { custom_start_pos = "parking" # "parking", "manual" or ... instruments = "IFR tutorial" # or "LOWI" or ... MERGED_OPTIONS = ["--airport=", "--aircraft=", "--parking-id=", "--runway=", "--carrier=", "--parkpos=", "--com1=", "--com2="] } # Default options (not subject to any condition) --enable-auto-coordination # not suitable for helicopters! --enable-terrasync --terrasync-dir=/path/to/your/TerraSync/directory # --timeofday=noon # --season=summer --enable-fullscreen # May be used to approach the selected airport or anything else (--fix, etc.) [ custom_start_pos == "manual" ] --offset-distance=80 --offset-azimuth=180 --altitude=8000 # initial altitude (in feet by default) --heading=180 # initial heading (in degrees) --vc=150 # initial speed (in knots) # Approach the Amsterdam Schiphol airport from the south [ custom_start_pos == "EHAM-appS" ] --offset-distance=10 --offset-azimuth=358 --altitude=4000 --heading=358 --vc=160 # Approach the Innsbruck airport from the northwest [ custom_start_pos == "LOWI-app" ] --fix=KTI08 --altitude=13000 --heading=137 --vc=120 # Instruments settings that may be useful when flying around LOWI [ custom_start_pos == "LOWI-app" or instruments == "LOWI" ] --prop:/instrumentation/nav/frequencies/selected-mhz=109.70 # OEJ #--prop:/instrumentation/nav/frequencies/standby-mhz= --prop:/instrumentation/nav/radials/selected-deg=66 --dme=nav1 --adf=413 # KÜHTAI (KTI) # Some radio frequencies used at Paris Charles-de-Gaulle airport [ airport == "LFPG" ] --com1=119.250 --com2=121.800 # Possible start place at a parking in LFPG [ custom_start_pos == "parking" and airport == "LFPG" ] --lat=49.0075192 --lon=2.5793183 --heading=220 # Instruments settings that can be used to follow the IFR tutorial of the # FlightGear manual [ instruments == "IFR tutorial" ] --prop:/instrumentation/comm/frequencies/selected-mhz=118.625 --prop:/instrumentation/comm/frequencies/standby-mhz=910.00 # FGCom self-test #--prop:/instrumentation/comm[1]/frequencies/selected-mhz= #--prop:/instrumentation/comm[1]/frequencies/standby-mhz= --prop:/instrumentation/nav/frequencies/selected-mhz=114.1 #--prop:/instrumentation/nav/frequencies/standby-mhz= --prop:/instrumentation/nav/radials/selected-deg=9 --prop:/instrumentation/nav[1]/frequencies/selected-mhz=116.8 --prop:/instrumentation/nav[1]/frequencies/standby-mhz=116.0 --prop:/instrumentation/nav[1]/radials/selected-deg=114 --dme=nav1
CondConfigParser is released under the BSD 2-clause “Simplified” License. For more information, you can visit CondConfigParser's home page.
FFGo
FFGo is a fork of the FGo! FlightGear
launcher. See FFGo's home page for
more information.
flo-check-homework
flo-check-homework is a program designed to help young children
in their learning process of basic calculus and conjugation (for
now). The general idea is that flo-check-homework is automatically run instead of
some game or whatever the administrator has configured, and only
grants access to the game after the “client” has given “good enough”
answers.
flo-check-homework is written in Python using the Qt graphical toolkit. It is distributed under the GNU GPL version 2. For more information, please refer to the README file. flo-check-homework can be downloaded here, or directly installed from PyPI with:
pip install flo-check-homework
provided you have pip and the required dependencies installed (as documented in the README file).
flo-check-homework is maintained in a Git repository that can be cloned with:
git clone https://github.com/frougon/flo-check-homework
Note: if you want to run flo-check-homework from a clone of this repository, please read the corresponding section of the README file.
Debian
During my free time, I like working with the
Debian distribution. You can
find a few packages, mostly for the amd64
architecture,
that I built or rebuilt myself below (most notably, some backports
for jessie). Use them at your own risk!
deb http://frougon.net/debian jessie main contrib non-free deb-src http://frougon.net/debian jessie main contrib non-free
FlightGear-related notes:
-
The flightgear package backported from unstable depends on flightgear-data-all, which in turn depends on several flightgear-data-* packages. These packages are not included here because they take more than 900 MB. However, all of these packages are architecture-independent and, as long as you respect the FlightGear version (not mixing up 2.10 with 2.12 packages, for instance), you should be able to download them from testing or unstable and install them with:
dpkg -i package.deb
or with APT pinning. You should do that before installing flightgear.
Note: you can also build these packages from this Debian flightgear-data Git repository using the “fgdata” upstream tarball available on the FlightGear mirrors.
-
The FFGo program provides a very convenient interface to start FlightGear.
PyXMMS and PyXMMS-remote [old!]
PyXMMS is a Python interface to
XMMS, a free multimedia player for
X-Window2. PyXMMS
consists of two components as of version 2.00:
-
a set of bindings for the
xmms_remote*
functions of the libxmms library, plus some higher-level functions - a Pythonic interface to manage (including reading and writing) the main configuration file for XMMS.
In other words, PyXMMS can be used to control XMMS or manage its main configuration file from a Python program.
You can download PyXMMS or read its documentation.
PyXMMS is distributed under the GNU GPL version 2.
PyXMMS-remote is a Python program that allows you to control XMMS from the command-line (or another program). Command-line interfaces are very handy when you want to interface several programs or automate some task. PyXMMS-remote needs PyXMMS to function properly.
You can download PyXMMS-remote or read its documentation.
PyXMMS-remote is distributed under the GNU GPL version 2.
In bulk
If you are curious, what about making a quick tour
through my projects directory and
my dumping ground for Python
code?
Documents
Emacs tutorial
I wrote an Emacs tutorial (in French). GNU Emacs is an extremely powerful text editor. It is also quite portable (it runs perfectly on most Unix flavours, on Windows, and at least in text mode on MacOS X—not to mention lots of older operating systems Emacs runs on).
If you are interested in this tutorial, you most probably can read French and will want to switch to this page's French version which is more complete on the subject.
LaTeX2e introduction
I wrote an introduction to LaTeX, a program based on TeX that is used to produce high quality documents, in a printable form or for screen reading (best accomplished with the PDF format nowadays). This document is written in French, therefore you most probably can read French if you are interested, and should switch to this page's French version, which is more complete on the subject.
Footnotes
1. Or even simple graphical interfaces with the Xdialog backend, as long as it is not too incompatible with dialog.
2. X-Window is the standard graphical layer of all Unix flavours (and therefore of GNU/Linux, which is today's most well-known Unix flavour).