I'm happy to announce that my contribution to TUG 2011, the next TeX
Users Group International conference, has been accepted. Please find the
title and abstract below.
LaTeX Coding Standards
Because LaTeX (and ultimately TeX) is only a macro-expansion system, the
language does not impose any kind of good software engineering practice,
program structure or coding style whatsoever. As a consequence, writing
beautiful code (for some definition of "beautiful") requires a lot of
self-discipline from the programmer.
Maybe because in the LaTeX world, collaboration is not so widespread
(most packages are single-authored), the idea of some LaTeX Coding
Standards is not so pressing as with other programming languages. Some
people may, and probably have developed their own programming habits,
but when it comes to the LaTeX world as a whole, the situation is close
to anarchy.
Over the years, the permanent flow of personal development experiences
contributed to shape my own taste in terms of coding style. The issues
involved are numerous and their spectrum is very large: they range from
simple code layout (formatting, indentation, naming schemes etc.),
mid-level concerns such as modularity and encapsulation, to very
high-level concerns like package interaction/conflict management and
even some rules for proper social behavior.
In this talk, I will report on all these experiences and describe what I
think are good (or at least better) programming practices. I believe
that such practices do help in terms of code readability,
maintainability and extensibility, all key factors in software
evolution. They help me, perhaps they will help you too.
--
Resistance is futile. You will be jazzimilated.
Scientific site: http://www.lrde.epita.fr/~didier
Music (Jazz) site: http://www.didierverna.com
EPITA/LRDE, 14-16 rue Voltaire, 94276 Le Kremlin-Bicêtre, France
Tel. +33 (0)1 44 08 01 85 Fax. +33 (0)1 53 14 59 22
The Vaucanson team is pleased to announce the release of Vaucanson 1.4.
Vaucanson is a platform for manipulating weighted finite state
automata. It includes a C++ generic library and a command-line
interface (TAF-Kit).
http://www.lrde.epita.fr/cgi-bin/twiki/view/Vaucanson/Vaucanson14
Vaucanson 1.4 is a major release featuring massive changes since our
last release 1.3.2 two years ago. The most important changes are
listed below. Please refer to the NEWS file for details.
- A user's manual that fully documents the algorithms and automata
available through the TAF-Kit command-line interface.
- As part of this documentation and specification effort, many
commands have been added, renamed, and generalized. So much in fact
that it makes more sense to ask you to scan the user manual rather
than list them here.
- More examples of automata are provided, and "factories" (i.e.,
programs that generate scalable families of automata) are installed.
- Two new fields have been implemented and can be used for weights:
Q (rational numbers represented by a pair of 64bit integers) and
F2 (a.k.a. Z/2Z).
You can find the new release here:
http://www.lrde.epita.fr/dload/vaucanson/1.4/vaucanson-1.4.tar.gz (55MB)
http://www.lrde.epita.fr/dload/vaucanson/1.4/vaucanson-1.4.tar.bz2 (50MB)
MD5:
6ba3b9e58fb55a88c4c655247d4901c6 vaucanson-1.4.tar.gz
108688a43c070156cfaad8905ce87510 vaucanson-1.4.tar.xz
Please send bug reports to <vaucanson-bugs(a)lrde.epita.fr> and other
inquiries to <vaucanson(a)lrde.epita.fr>.
The Olena Team is proud to announce the release of Olena 2.0.
Olena is a platform dedicated to image processing and pattern
recognition. Its core component is a generic and efficient C++
library called Milena. Milena provides a framework to implement
simple, fast, safe, reusable and extensible image processing tool
chains. The library provides many ready-to-use image data structures
(regular 1D, 2D, 3D images, graph-based images, etc.) and algorithms.
Milena's algorithms are built upon classical entities from the image
processing field (images, points/sites, domains, neighborhoods, etc.).
This design allows image processing developers and practitioners to
easily understand, modify, develop and extend new algorithms while
retaining the core traits of Milena: genericity and efficiency.
On top of Milena, the Olena platform also features optional modules
such as Swilena, a component exposing Milena to other languages thanks
to the Simplified Wrapper and Interface Generator (SWIG); and the
SCRIBO module for Document Image Analysis (see below).
The Olena platform is Free Software. It is distributed under the
conditions of the GNU General Public License (GPL) version 2. See the
file COPYING shipped with the Olena distribution.
Release notes are available at:
http://olena.lrde.epita.fr/Olena200
You can download packages of the Olena 2.0 distribution here:
http://www.lrde.epita.fr/dload/olena/2.0/olena-2.0.tar.gz (38 MB)
http://www.lrde.epita.fr/dload/olena/2.0/olena-2.0.tar.bz2 (32 MB)
The SHA1 digests of theses packages are:
d3a829fa56bff4edbca58af0c9a39c9569820c60 olena-2.0.tar.gz
0abae2a9bc751a8fb33acacd2dbe70635d5dd00b olena-2.0.tar.bz2
Here is a list of major changes since Olena 1.0:
* The biggest addition to Olena available in this new version is the
SCRIBO module for Document Image Analysis (DIA). This module has
been developed in the context of the SCRIBO project (see
http://www.scribo.ws). The SCRIBO module provides software
building blocks to create DIA tool chains, including routines for
preprocessing steps (such as binarization, show-through removal,
deskew and denoising), text lines identification, non-text objects
retrieval (tables, pictures, separators, etc.), line
reconstruction (rebuilding separators and tables), Optical
Character Recognition (OCR) integration and document
reconstruction (converting a document to XML, PDF and/or HTML
outputs). Dedicated data structures are also provided to handle
intermediate results. Some Graphical User Interface (GUI)
programs based on the Qt toolkit are also proposed.
* Several compilation issues have been addressed.
* New algorithms (especially in mathematical morphology), canvases
(or algorithmic patterns) and efficient algorithm variants have
been added to Milena, as well as some new data types (see NEWS for
more details).
* More conversion routines, especially regarding color values.
* Support for I/O routines (both built-in and depending on
third-party packages) has been improved.
* Various bug fixes and improvements.
The file NEWS, included in the archive, contains a more complete list
of user-visible changes.
Please report any problem by mail to <olena-bugs(a)lrde.epita.fr>.
--
Roland Levillain - LRDE/EPITA - A3SI/ESIEE/LIGM/UMLV-Paris Est
EPITA Research and Development Laboratory (LRDE)
14-16, rue Voltaire - FR-94276 Le Kremlin-Bicêtre Cedex - France
Phone: +33 1 53 14 59 45 - Fax: +33 1 53 14 59 22 - www.lrde.epita.fr