TerminalA.com es un servicio de reservas de vuelos, como muchos otros. El ser humano es un ser de costumbres, supongo, y como fué el primero que había empezado a usar, cuando aún me daba miedo hacer reservas y compras por Internet, supongo que me acostumbré a él.
Lo que hoy me ha pasado con ellos me ha parecido vergonzoso. He hecho una reserva de un vuelo, como muchas otras veces, y me han llamado por teléfono para decirme que tenían un problema administrativo con mis datos, y que no podian darme esa reserva. Tras solicitar que cambiaran lo que tuvieran que cambiar, me ha dicho la telefonista que ellos no cambian nada, que me anulan el vuelo lo quiera o no, y que si quiero que haga la reserva de nuevo. Todo ello, claro está, después de haberme cobrado el importe de mi VISA, que supongo me habrán devuelto.
Voy a la página web de ellos de nuevo, intento hacer la misma reserva en el mismo vuelo, y me doy cuenta de que el precio ¡ha subido bastante! Ya no es posible comprar los billetes que compré hace media hora, y que me han anulado por un problema interno de ellos con su propio sistema administrativo, y que no debería afectarme a mí. De hecho, el supuesto problema no fué tal en un vuelo totalmente semejante, comprado también con ellos 3 semanas antes, pero esta vez parece que sí lo es. Y la telefonista no atiende a razones.
Les escribo sin respuesta al servicio de atención al cliente, llamamos al teléfono de contacto (902 884 566), que por cierto es bastante difícil de localizar en su web, será para evitar que les llamen. Nos han dicho que no había nada que hacer, y nos han colgado todo bordes. Lógico, para ellos cuantos más problemas les den a sus usuarios, más les cobrarán la siguiente vez que intenten sacar el billete. Me parece que tienen mucho morro, y desde luego un servicio de atención al cliente pésimo.
Puesto que no tengo más remedio que aceptar lo que ha pasado, y tras comprar mis nuevos billetes con otra compañía (que, aunque el horario no me resulta tan afortunado como el otro, el precio es sensiblemente menor), ejerzo desde aquí mi derecho al pataleo y publicitar lo que me ha pasado con ellos.
gettext is the GNU internationalization (i18n) library, and it is one of the most important standards in Free Software about i18n of programs. Translators are used to it, and there are really lots of useful tools to work with gettext data, so I’d recommend anyone to avoid trying to invent their own yet-another-gettext-but-not-quite-as-the-real-one. Gettext also works for Windows, so no excuse.
It’s really easier than it sounds. Here goes the quite recipe:
Add this to the headers of the C module in which you have your main() function:
#ifdef USE_GETTEXT
#include "libintl.h"
#include "locale.h"
#define _(String) gettext (String)
#else
#define _(String) String
#endif
And add this at the beginning of your main() function:
#ifdef USE_GETTEXT
setlocale (LC_MESSAGES, "");
setlocale (LC_CTYPE, "");
setlocale (LC_COLLATE, "");
textdomain ("my-program");
bindtextdomain ("my-program", NULL);
#endif
That’s all for the initialization of gettext, lets go now with its usage from the rest of the modules. In each of them, you’d have to add this to the headers:
#ifdef USE_GETTEXT
#include "libintl.h"
#define _(String) gettext (String)
#else
#define _(String) String
#endif
After all that stuff, you should be able to i18n for whichever texts you want, just write _(“whatever”) instead of just “whatever”:
printf(_("whatever");
Don’t forget to compile your program with -DUSE_GETTEXT if you use the same #defines as I do, or at least to #define USE_GETTEXT somewhere. Now, lets go to the second part, generating the .pot templates, and installing the .mo translation modules in your system:
xgettext -k_ -o my-program.pot *.c *.h --from-code=iso-8859-1
If you prefer, you can create different .pot files for the different parts of your programs instead a really big one to help translators, and then joining all the .po files inside a single one before converting it to .mo with msgcat:
msgcat -o my-program.es.po my-program.part1.es.po my-program.part2.po my-program.part3.es.po
To compile the .po files into .mo, just do:
msgfmt my-program.es.po -o my-program.es.mo
Then, don’t forget to install it in the proper directory of your system:
cp my-program.es.mo /usr/share/locale/es/LC_MESSAGES/my-program.mo
Of course, you can tell your program to look for the .mo file in a different directory, even a relative one, instead. Just read the man pages, this is only a quick recipe on how to do it
Note: Please, use #include [smaller than]whatever.h[bigger than] instead of #include “whatever.h”, as I have put in my examples. My WordPress weblog seems to be having problems with the those symbols. That’s the magic of HTML.
Now for the real world applications. While internationalizing some programs with gettext, I found that some of them tend to use global defined variables for handling the menus (for example fluid, or hex-a-hop), usually defining some lists of structures globally, with the texts directly written on them. Something like:
const char *lines[] = {
"Line 1n",
"Line 2n",
NULL
};
In this case we have a problem, because if we just replace the strings by _(“string”), it won’t directly work. Remember that _ is a macro for the function gettext. In C, it just won’t let us call it from the constructor, because the string should have to be assigned statically. In C++ it will let us, but the resulting program will happen to call gettext() on them before our initialization in main(), and thus it will simply not work. I’ve made available an example on how those situations could be handled both in C and C++.
Cerise Magazine publishes an interview from Ariel Wetzel with me in this month’s edition.
Cerise is a magazine made by and for women gamers, and they are dedicated to increasing the voices of underrepresented identities in the game develop industries and in gamer communities. It is a monthly publication released in the form on an online magazine that covers video games, tabletop games, and live action role-playing.
Quoting from their web page: “We are dedicated to creating an inclusive space for individuals of all identities traditionally underrepresented in the mainstream, and for our allies who support our movement to increase our presence and representation in the game industry. We are a feminist publication and oppose all forms of oppression and the ways in which that oppression manifests itself in game communities“. Yay for them!
My old tutorial “How to make a Debian package without using a helper” seems to be getting a lot of clicks, so I’ve decided to upgrade it a bit and put it up to date. There are not many changes anyway, but just in case someone is interested in downloading it: roaddemo_1.0.1-2.dsc, roaddemo_1.0.1-2.diff.gz and roaddemo_1.0.1.orig.tar.gz are available.
The Chaos Communication Camp is an international, five-day open-air event for hackers and associated life-forms. The Camp features two conference tracks with interesting lectures, workshops and other stuff. It will take place from August 8th to 12th 2007 in Finowfurt near Berlin. You can participate! Bring your tent and join our villages. The Camp has everything you need: power, internet, food and fun.
It’s somehow funny how some people are totally insensitive to anything other that their own problems. Stephan Hermann seems to keep blaming us for commenting out how things can be improved. It’s interesting to see how some guys just get on the deffensive side, and sometimes totally aggressive, when they’re pointed out how things could be done better. Of course, this has nothing to do with political correctness, but with the correct usage of words and their meaning. All the discussion is about the wrong usage of the word “wives” instead of “spouses” (implying that the active members were the male, and the non-involved partners were the females) in an UWN issue. It might not be a big deal in itself, if it wasn’t for the fact that the hostile reaction of many people when this was pointed out. \sh comments in elkubuntu’s weblog that “The only thing we can to do is just to ignore them or to tell them they should go away”. Amazing. It would be so easy to admit that that could have been be an improvement, instead of being stubborn in an “I’m perfect, whatever you critisize is that the problem is in you” attitude. If the reaction would have been an “hey, thanks for the comment, we didn’t think about it but you have a point” nothing would have happened and everyone would be happy. Instead, the reaction being “it’s perfect the way it is, why don’t you shut up, we don’t want to know your opinion or what your feelings are” just shows that there’s a problem there far beyond the usage of certain words. Or is it offensive to some guys to consider that some women can be active in a FLOSS project while their husbands are just there accompanying them?
I guess I won’t use either “wives” nor “spouses” from now on, I’ll use “husbands” whenever I have to describe a situation like this. Lets go for a politically incorrect situation on purpose.
Update: To tell the whole truth, I’ve been told that in this certain event all the spouses happened to be females. I don’t know about it, but I guess that, in any case, all this situation could have been handled without so much aggresivity. We all seem to still have a lot to learn about listening to each others and living and working together.
A cellular automaton (plural: cellular automata), according to the Wikipedia, is a discrete model studied in computability theory, mathematics, and theoretical biology. It consists of a regular grid of cells, each in one of a finite number of states. The grid can be in any finite number of dimensions. Time is also discrete, and the state of a cell at time t is a function of the states of a finite number of cells (called its neighborhood) at time t – 1. These neighbors are a selection of cells relative to the specified cell, and do not change (though the cell itself may be in its neighborhood, it is not usually considered a neighbor). Every cell has the same rule for updating, based on the values in this neighbourhood. Each time the rules are applied to the whole grid a new generation is created. Systems theory is a framework by which one can analyze and/or describe any group of objects that work in concert to produce some result.
Cellular automata fascinated me a lot when I was in high school, and I’m still amazed to see the emerging properties of simple sets of rules.
Some time ago I made a program to explore some 2D cellular automata in C++. It’s nothing impressive nor innovative, it just implements some of the most classical automatas and renders the results using SDL, but it might be interesting to someone, so I’ve decided to upload it. It should also work in Windows, but anyway, I’m only uploading the source code, so you’ll have to compile it yourself.
This is an updated translation into English of the one-question interview with pjorge (based on Darren Rowse’s one-question interviews idea) in which Javier Candeira (Barrapunto co-founder and editor among many other things, and a good, loved friend of mine) comments about an interesting game of his creation that’s being exhibited in Barcelona and that deals with the fears many parents have towards the Internet and the new enterntainment technologies and videogames. The game code will be released as GPL, even though the game data will have a non-free Creative Commons (with a non-commercial clause).
The game has a really interesting approach, and mixes the concept of pinball games with that of graphics generated with “paper dolls” techniques, to try to make people think about the ideas mainstream media are pushing, and the way they try to tell everybody how to raise their kids. You might like it or not, but it will probably won’t leave you indifferent. That’s what art is about, in fact, isn’t it?
What is ‘El rei de la casa’?
‘El rei de la casa‘ (an expression that in Catalan and Spanish means “the precious child”) is an exhibition and a videogame. The exhibition deals with the cultural construction of the idea of childhood, and can be visited until September 24 in the Palau de la Virreina in Barcelona. From there. Among other works, in the exhibition there are photos by Loretta Lux and Begoña Egurbide, paintings by Marc Ryden, Kiki Smith and James Reilly… it’s really worth a visit.

The videogame is a commission from Andrés Hispano and Marc Roig, curators of the exhibition. They wanted to portray Internet and videogame arcades (or cybercafes, which are their modern equivalent) as one of the “new forests”, these places where parents don’t dare allow their children go alone for fear of the dangers (real or imagined) that may lie in ambush.
The Internet has entered into the collective imagination, and one of the memetic niches that it has crept into is that of the bogeyman, the scapegoat that bears the brunt of all the evil that happens in society. It is enough to look at the news programmes from right-wing TV stations with their adversative Internet coverage: “it’s good, but…”. All over the media you see headlines like “gang of pedophiles arrested who sold child pornography *on the internet*”. They conveniently skip that pedophiles filmed those poor kids *in a flat*, and that they did it *on a bed* and used *videocameras* just like those used by the reporters now sounding the alarm. But no, what’s bad is *the Internet*.
The other theme that we wanted to touch on with the pinball game is how videogames are presumed to corrupt childhood. When pinball games were introduced, the North American authorities laid down the law: it was an infernal machine that incited gambling and even lust. From the religious right to the secular left, every moral guardian has denounced the supposed harmful effects of videogames on childhood: because of them children and teenagers engage in murder, robbery, truancy, bad school grades and even untidy bedrooms and doubtful personal hygiene.
For this reason, the “new forest” of the Internet and videogames had to be a videogame, proving once more that games are cultural vectors, a form of artistic, political or commercial expression like any other. It also had to be a videogame about the a triangle: on one side the children, on the second one the children minders (parents and society at large), and finally the Great Scapegoat: the Internet.
After many abandoned and reworked proposals we arrived at the present design for the game: an emulated pinball game presented on a panoramic TV screen, and having two levels: one set in the real world and named after the exhibition, and a second one set in a more or less conventional cyberspace. This second level is called “Prey of the Net”, and portrays the vision of the Internet that a Fox viewer may have: you have Spam, game-playing killers, kids making more money than their parents, S&M gear, dildos… in short, everything that is scary and nothing that is comforting, at least to some.
All the illustrations for this pinball, both on the gameplay field and on the scoreboard, are by Mauro Entrialgo. For the scoreboard I asked him to prepare a set of drawings similar to KISS dolls (like the cut-up dolls that kids still played with in the last century). Thanks to these dress-up dolls the scoreboard shows more than the score (which grows randomly anyway); it also portrays the state of the boy or girl protagonist of the game. I say “boy” or “girl” because in the game, just like in real life, you have a 50/50 chance of starting the game of life with either sex.
The fist level, ‘El rei de la casa’, portrays the stress that families feel when facing children’s media consumption. The targets trigger lines from the parents: “All day in front of the Idiot Box!” when you hit the tv, or “without a degree, you are nothing” when you hit the school. There are four targets on the right, which can be reached shooting the ball with the left flipper (the one representing the parents): school, museum, church and reading. On the left, and reachable from the right flipper, representing the kids’ id, are the TV, the kid’s peers and the videogame console; at the top of the playing field, towering above it, the internet-enabled computer. As the ball hits the different targets, the scoreboard dresses the kids in a housecoat, a leather jacket, and gives them a mortarboard or a saint’s halo. They are the pride of their parents, kids still not perverted by the Internet.
It is cheap symbolism, I confess, two-dimensional sociology, but that was also something we aimed for. After all, pinballs have always been complicated allegories rather than complex ones.
In a first design I planned to make computer accessible only under certain conditions, but that is not something that would have work in this exhibition: some people just play and play (which gives me an immense joy), but other people can’t or won’t give it much effort. It’s best to make it easier for everyone, so they can send the ball into the next level even without meaning to.
The second level, “Prey of the Net”, is accessed when the player puts the ball through the PC’s screen. Here the character on the scoreboard keeps smiling while the game dresses them in a straightjacket, S&M headgear, or leaves them in their underwear, with their hands full of money, playing cards, bloody knives and sex toys… to their parents’ horror. The player has no fixed goal here, only to make the ball go through the pachinko and the spinning spider. These elements work as an atrocity generator and a rebuke distributor. Parents’ voices scold the player, faced with the horrors of the Internet. But the star is the scoreboard. Mauro rocks.
Right now the code and content for downloadable game are done, and the people responsible for the ISO are giving it the final touches. It will be a bootable liveCD with some Debian variant that (hopefully) will run on any PC bought in the last two or three years. We will treat the computer as a games console, which may or may not be symbolic (if you want it symbolic, we can make it symbolic!).
The game itself is under the GPL license (the pinball part is based on Henrik Enkvist’s Emilia, which is packaged in Debian), and only the graphic resources will be under a non-commercial Creative Commons license. The music is also under a non-free Creative Commons license because of the status of the original samples, but I recommend you download it and play it because its author is none other than man, the Barrapunto founder and sometimes editor.
Me resulta curiosa la política que rodea al mundo de los estándares. Cuando se supone que, por cuestiones puramente económicas y estratégicas de las empresas y los organismos, sin entrar en consideraciones éticas, un estándar debería garantizar la interoperabilidad y la calidad, resulta que una empresa que ostenta el monopolio domina de tal forma a las demás que, incluso en contra de los propios intereses de éstas, muchas parecen dejarse pisotear.
Entre los muchos motivos por los que no debería ser aceptado como estándar ISO, encontramos:
- No existe ninguna implementación que cumpla totalmente el estándar
- La especificación es incompleta
- Está controlado por una única empresa
- No está libre de patentes
- No es multiplataforma por naturaleza
- Contradice estándares ISO ya preexistentes
- No valida el estándar XML
- Ya existe un estándar aceptado (ODF) que cubre la misma función
Una joya, vamos. Lamentablemente, como pasa a menudo, el voto de España será de abstención. Así nos va, supongo.
Enlaces: