Usar la herramienta adecuada

Últimamente me estoy encontrando a menudo con la situación en la que puedo comparar lo que es trabajar con la herramienta adecuada y con la que no lo es.  En el mundo de la programación profesional nos encontramos demasiado a menudo con la situación de vernos obligados a usar una herramienta* inadecuada para el trabajo que has de realizar.  Lo mencioné de pasada en este artículo, por ejemplo, pero todos los que trabajamos en esto lo vivimos casi a diario.

Uno de los últimos ejemplos con los que me he encontrado tiene que ver con Google.  Como muchos sabréis, esta empresa está desmantelando la plataforma iG, y junto a ella a varias de las aplicaciones como su directorio de marcadores (o bookmarks) y su lector RSS.  Como usuario me he visto obligado a buscar alternativas, y la verdad es que he descubierto que no estaba usando la herramienta adecuada para consultar mis correos y enlaces RSS.  Usando iG no era raro el día en el que tardaba casi una hora en revisarlo todo (y eso revisándolo diariamente, imagináos después de unas vacaciones), pero ahora, usando un cliente de correos y noticias, con una extensión para obtener las actualizaciones RSS (concretamente Claws Mail) tardo menos de media hora siempre.

Por eso, cuando alguien me viene y me dice, por ejemplo, que para una web de noticias están pensando en cambiarse desde Spip a Wordpress y yo les digo que no es buena idea y me contestan que por qué no si es lo mismo y Wordpress es más fácil de usar y tiene menos errores, pues me pongo malo.  Menos mal que alguien con seso (que no soy yo) sugiere que quizá los errores se deben a una mala actualización y hace que regrese mi confianza en la humanidad, aunque sólo sea un poco.


* Aquí también vale lenguaje de programación.

Allegro.pas 5.0 alpha 1 + 2 comentarios

Después de este hiatus ocasionado por problemas técnicos, vuelvo a la carga.

La semana pasada decidí publicar el estado actual de la versión 5 de Allegro.pas.  Todavía está muy verde, pero es bastante más estable que cuando lo utilicé para mi entrada del 2nd. PGD Challenge.  Tanto es así que estoy pensando en publicar una versión precompilada del juego, algo que no pude hacer en su momento.

Este Allegro.pas 5.0 Alpha 1 tiene las siguientes características:

  • Nueva API totalmente redefinida, incompatible con la versión anterior pero mucho más fácil de adaptar a otras plataformas y compiladores.  De hecho, vuelve la compatibilidad con Delphi que se perdió en la versión 4.3.
  • Soporte a OpenGL, algo de lo que adolece la versión 4.x.
  • Mejor integración con el sistema operativo con el uso de múltiples ventanas y diálogos nativos para operaciones como seleccionar archivos de disco.
  • Soporte de formatos de disco más modernos, incluyendo OGG/Vorbis, flac, PNG y JPEG, pero sin olvidar los viejos WAV, mod, PCX, BMP y Targa.  Eso sí, se pierde el soporte a MIDI, VOC y LBM.
  • Sistema de eventos extensible, que incluye eventos del sistema como mover ventanas o pulsaciones de teclado y que puede extenderse con eventos de usuario.

Hay que tener en cuenta que todavía está en desarrollo, por lo que hay cosas de la biblioteca Allegro que todavía no soporta, y tampoco incluye la documentación completa.  Aun así, si quieres probarla puedes descargarte el paquete en este enlace.

Chovinismo informático

No me extraña que la palabra “chovinismo” provenga del francés.  No hace mucho me han encargado hacer un trabajito relacionado con el sistema de gestión de contenidos Spip, de origen francés.  Al ser un sistema abierto y libre, se puede ver su código fuente, y todo él está escrito en francés.

Yo también suelo escribir código en castellano, pero últimamente me he fijado que he dado un giro hacia el inglés.  En proyectos como Allegro.pas esto es comprensible, dado que es un producto destinado a una comunidad internacional concreta y el inglés es la nueva lingua franca;  pero en otros proyectos de índole más personal también he usado el inglés más a menudo de lo que esperaba.  Tras pensarlo un rato, he llegado a la conclusión de que es el propio lenguaje quien me ha llevado por ese camino.

Por ejemplo, un lenguaje como C o PHP, en el que la mayor parte de sus palabras clave son símbolos sin significado lingüístico (como “++”, “->”, “!=:”, “{“, etc) no parece que existan problemas sea cual sea el idioma elegido para describir las variables, funciones y objetos.  La siguiente función de una utilidad de codificación por contraseña que hice hace el año pasado:


/* Realiza la codificación con la clave cargada en la memoria. */
  int CodificaConClaveEnMemoria (void)
  {
    unsigned char *CarClave = NULL, Caracter;

    CarClave = Clave;
    while (LeeCaracter (Origen, &Caracter)) {
      Caracter = (Caracter ^ (*CarClave)) & 0x00FF;
      if (fputc (Caracter, Destino) != (int)Caracter) {
	fprintf (stderr, "ERROR de salida (Caracter %d)\a\n\n", Caracter);
	return FALSE;
      }
      if (*(CarClave++) == '\x00')
	CarClave = Clave;
    }
    return TRUE;
  }

Salvo unas cuantas palabras clave y funciones de biblioteca, el resto está en castellano y no parece llevarse muy mal.

Sin embargo, un lenguaje como Pascal, que uso con más frecuencia últimamente, en el que casi todas las palabras clave tienen significado o son abreviaturas (como “INC”, “BEGIN”, “AND”, etc) parece que no funciona tan bien, y que queda mejor escrito en inglés.  Por ejemplo, el siguiente procedimiento extraído una de un editor de mapas en el que estoy trabajando desde hace tiempo:


(* Lee desde un archivo de disco. *)
  PROCEDURE TMapa.LeeDe (NombreArchivo: STRING);
  VAR
    Archivo: AL_PACKFILEptr;
    Firma, Ancho, Alto, X, Y: LONGINT;
  BEGIN
    Archivo := al_pack_fopen (NombreArchivo, AL_F_READ);
    IF Archivo  NIL THEN
    TRY
    { Firma del archivo. }
      Firma := al_pack_mgetl (Archivo);
      IF Firma  AL_ID ('MAP1') THEN
        RAISE Exception.Create ('Unknown file format');
    { Tamaño del mapa. }
      Ancho := al_pack_mgetw (Archivo);
      Alto := al_pack_mgetw (Archivo);
    { Creamos el mapa. }
      CreaNevoMapa (Ancho, Alto);
    { Casillas. }
      FOR X := LOW (Mapa) TO HIGH (Mapa) DO
        FOR Y := LOW (Mapa[X]) TO HIGH (Mapa[X]) DO
        BEGIN
        { Índice }
          Mapa[X, Y].Ndx := al_pack_mgetw (Archivo);
        { Valores extra. }
          Mapa[X, Y].Val1 := al_pack_mgetw (Archivo);
          Mapa[X, Y].Val2 := al_pack_mgetw (Archivo);
        END;
    FINALLY
      al_pack_fclose (Archivo);
    END
    ELSE
      RAISE Exception.Create ('Can''t open file "'+NombreArchivo+'" for reading.');
  END;

No sé a vosotros, pero a mi me chirría un poco.  Quizá sea, simplemente, porque no estoy acostumbrado.  Aun así, tras haber visto Spip y su éxito estoy experimentando un poco este chovinismo con el proyecto del editor de mapas, a ver qué pasa.

Rescatando Gesbit

Hace algunos años, David Esperalta creó Gesbit, el "motor para bitácoras" que, precisamente, uso aquí, para aprender y mejorar sus conocimientos sobre programación.  Cuando llegó a la versión 2.0 decidió abandonar su desarrollo.  El problema es que también eliminó toda la información del proyecto de Internet.

Trabajando, como estoy, en la mejora de Burdjia.com me encontré con la disyuntiva de continuar o no utilizando Gesbit.  Podría pasarme a otro sistema, o podría crear el mío propio, pero decidí contactar con David y pedirle el rescate del proyecto.  Y accedió, me envió todo lo que tenía (la versión 2.0 al completo, junto con muchas extensiones) y yo acabo de subirlo, de nuevo, a la web del proyecto, desde la que puede descargarse de nuevo.

No hay nada concreto planeado para el proyecto, ya que tengo que determinar si lo que necesito de él es mejor obtenerlo mediante extensiones o modificando el propio motor.  De hecho todavía no sé si ya es capaz o no de hacer lo que planeo.  Algunas cosas son comunicación con las redes sociales, soporte de múltiples idiomas (es decir, poder tener varias versiones del mismo artículo/entrada), enlaces diversos, integración ...  También hay alguna cosa que no funciona, o al menos no lo hace como creo que debería, y tengo que revisarlo antes de decidir nada.

De momento, la buena noticia es que de nuevo está disponible.  Dentro de poco abriré los servicios de soporte de SourceForge para que puedan hacerse sugerencias, enviar notificacions de error, resolver dudas y hacer un seguimiento del proyecto.

Me ha pillado completamente de sorpresa, y eso que de estas cosas estaba yo bastante enterado.  No voy a explicar qué es, que ya lo han hecho, y muy fácil de entender, David Bravo y Sinergia sin Control.

A mi me preocupan varias cosas.  Primero, que parece que es verdad que piensan que los interneteros lo queremos "todo gratis", cuando gente como Iván Sarnago y Locomalito, por poner sólo dos ejemplos, han demostrado sobradamente que no es cierto.  Lo que pasa es que sólo queremos pagar por lo que a nosotros nos merezca la pena, y un precio que creamos justo.  Y es que eso de tener que comprar 20 canciones cuando sólo nos interesa o nos gusta una como que no es muy justo.  Y lo de pagar varias veces por lo mismo como que tampoco nos va.  El modelo que proponemos como alternativa funciona.  Existen multitud de proyectos de este estilo o diferentes que tienen mucho éxito.  Otro ejemplo: Jamendo.  Otro más: the Humble Bundle. Otro: Juán Gómez-Jurado y su 1 Libro, 1 Euro.

Otra cosa que me preocupa mucho más es la cultura en sí.  Ingenuamente podríamos pensar que consideran a la cultura una industria, como el ladrillo o el automóvil, pero no puedo evitar pensar mal.  Citando a Karraskedo, en su obra "El Libro de la Historia":

Bruja - (...) Sin cultura y sin historia, el País de la Felicidad, será un pueblo de bestias, de analfabetos, de torpes, de zoquetes y de inclutos.  Entonces, tú podrás gobernar a tu antojo el País. (...) Podrás explotar a tus súbditos, insultarles, dominarles.

José Luís Heras Karraskedo.  El Libro de la Historia.  Escena cuarta

No puedo evitar pensar que los poderosos lo saben.

En fin, no sigo.  Mejor le dejo la rabia a un profesional como Wardog, que ese sí sabe.  Y, encima, es otro ejemplo de autor que lo da todo gratis, y aun así la gente le paga.  Si es que estamos locos.

Categorías: Crítica, Quejas, Tecnología, Vida