Astenia primaveral

Estoy cansado, sí, cansado…

cansado hasta de estar cansado
cansado de mascarillas
cansado de debates sobre mascarillas
cansado de ausencias
cansado de debates sobre presencias
cansado de pólenes
cansado de debates (no, no hay debates sobre pólenes)
cansado de estar cansado sin límite
cansado de que no existan límites
cansado de tantos límites
cansado de tanto silencio
cansado de tanto ruido
cansado de algún vecino
cansado de la imposibilidad de debatir con un vecino
cansado de la primavera (que acaba de empezar)
cansado de un año tan extraño extravagante extraterrestre
cansado de la prensa
cansado de debates banales sobre las noticias de la prensa
cansado de teclear letras innecesarias como esa d de cansado
cansado de reflexiones tontas
cansado de que esas sean mis reflexiones
cansado de compartir esas reflexiones a modo de proyectos absurdos
cansado de editar libros ridículos
cansado de no editarlos
cansado de poseer poesía en pretérito imperfecto
cansado de la sintaxis
cansado de la ortografía (y de la orografía)
cansado de pantallas antialérgicas
cansado de las muertes (y la vida)

CD o DVD

Hoy estoy perdiendo el tiempo en busca de fuentes para obtener el número de personas sobre la faz de la tierra y ver la manera de convertir esa cifra en un número de bits que almacenar en un soporte como puede ser un CD o un DVD.

El objetivo sería escribir tantos bits como personas hay en el planeta (puedo caer en el «binarismo» de asignar 0 a un sexo y 1 al otro, o ignorarlo) en un CD e ir generando CDs con las estimaciones de Personas Vivas sobre la Tierra cada cierto periodo de tiempo.

He encontrado una fuente importante de datos en la ONU, como si fuese un organismo útil, pero no encuentro la manera de acceder a esos datos desde línea de comandos, lo que me encantaría.

Tampoco sé la manera de escribir un archivo en linux directamente en código binario, escribiendo bits y no bytes. Tendré que repasar la rama dura de la programación en C o en ensamblador.

Creo que lo que intento es tan ridículo como habitualmente hago, pero no por ello quiero dejar de hacerlo.

Un número son palabras

Qué mejor demostración de que un número son palabras que un traductor de números a palabras, así, tan absurdo como este que intenta transformar los números (dígitos) en palabras, especialmente orientado a crear un libro con las palabras de unos cuantos (indeterminados) decimales de números irracionales, pues hay pocas cosas más irracionales que este proyecto absurdo.

/********************************************************
    Proyecto tres14 (escrito en C)
    realizado por Giusseppe Domínguez
    a partir del día 8 de diciembre de 2019
********************************************************/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#define OK 1
#define KO 0
#define MAX_LONG 10 // Longitud máxima de nombre de dígito

int firma();
int digitea(char caracter);
int nombranumero(int idioma, char caracter, char *nombre);
int instrucciones(char *comando);

int main(int argc, char *argv[])
{
  int i, idioma=0;
  char nombrenumero[MAX_LONG], caracter;
  FILE *fp;
 
  if ((argc < 2) || (argc > 3)) { instrucciones(argv[0]); } // Faltan argumentos
  else if (argc == 2) { // Número desde línea de comando
    for (i=0; i<strlen(argv[1]); i++) {
      caracter=argv[1][i];
      if(! nombranumero(idioma, caracter, nombrenumero)) { instrucciones(argv[0]); return KO; }
      puts(nombrenumero);
    }
  }
  else if (argc == 3) { // Número en fichero argv[2]
    if ( (! isdigit(argv[1][0])) || ((idioma = digitea(argv[1][0])) > 1) ) {
      printf("[ERROR] No conocemos el idioma: %s\n", argv[1]);
      instrucciones(argv[0]);
    } 
    else if ((fp = fopen(argv[2],"r")) == NULL) {
      printf("[ERROR] intentando abrir el archivo %s\n", argv[2]);
      instrucciones(argv[0]);
    }
    else {
      while ((caracter = fgetc(fp)) != EOF) {
        if (caracter != '\n') { // Ignoramos los saltos de línea
          if (! nombranumero(idioma, caracter, nombrenumero)) { instrucciones(argv[0]); return KO; }
          printf("%s ", nombrenumero);
        }
      }
    }
  }
  printf("\n");
  firma();
  return OK;
}


/******************************************
  La función instrucciones hace lo que su nombre
  indica: Imprime las instrucciones del programa.
******************************************/
int instrucciones(char *comando) {
    printf("\nUtilización: %s [número_positivo] [idioma fichero]\n\n", comando);
    puts("Si introducimos un nombre de fichero, el primer parámetro indica el idioma");
    puts("Idioma puede ser:");
    puts("\t0 - Español");
    puts("\t1 - Inglés");
}

/******************************************
  La función nombranumero nombra el número
  contenido en el caracter (si procede, claro)
  y devuelve error si no lo consigue.
  idioma = 0 (español)
           1 (inglés)
******************************************/
int nombranumero(int idioma, char caracter, char *nombre) {
  int digito;
  static int nomascomas=0; // Para no encontrar más de una coma en un argumento
  // char *numeros[] = { "cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve" };
  char *numeros[2][MAX_LONG] = {
    { "cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve" },
    { "zero", "one", "two", "three", "for", "five", "six", "seven", "eigth", "nine" }
  };
  char *coma[] = { "coma", "point" };

  if ((caracter == ',') || (caracter == '.')) {
    strcpy(nombre, coma[idioma]);
    if (++nomascomas > 1) {
      printf("Un número no puede tener más de una coma\n");
      return KO;
    }
    return OK;
  }
  else if (isdigit(caracter)) {
    digito = digitea(caracter);
    strcpy(nombre, numeros[idioma][digito]);
    return OK;
  }
  printf("[ERROR] |%c| No es un caracter válido en un número positivo\n", caracter);
  strcpy(nombre, "ERROR");
  return KO;
}
/******************************************
  La función digitea devuelve un número entero
  a partir del caracter (char) proporcionado
******************************************/
int digitea(char caracter)
{
  int digito;
  digito = (int) (caracter + '0');
  digito -= 96;
  return digito;
}


int firma()
{
  time_t tiempo = time(0);
  struct tm *tiempolocal = localtime(&tiempo);
  char txt_firma[128];
  strftime(txt_firma,128,"\nGiusseppe Domínguez, a las %H:%M. M-%Y%m%d\n",tiempolocal);
  printf("%s\n",txt_firma);
  return OK;
}

Amapolas en el Cráter: Episodio 043

Programa *Amapolas en el Cráter*.

*20 minutos de voces habitando el espacio sonoro con poesía*. Poema de poemas propios o ajenos, fragmentados o completos. Textos recitados por poetas de los Talleres de Poesía y Escritura Creativa de la *Asociación Cultural Clave 53*. Te esperamos con nuevos episodios de Amapolas en el Cráter en nuestra web (*clave53.org*)

En este episodio han participado:

  • Paula García Izu
  • Isabel Jiménez
  • JMariano Velázquez
  • María Jesús Orella
  • Sal Ander
  • Pepa Delgado
  • Lucía Herrero
  • Javier Jiménez
  • Giusseppe Domínguez
  • Ernesto Pentón Cuza
  • Mónica Rubio

https://anchor.fm/clave53/episodes/Amapola-043-etfggq

Látigo

Poema que escribí y compuse visualmente hace ahora 20 años titulado «látigo», que formaba parte de un proyecto titulado Fronteras en el que pretendía escribir un libro que fuese dejando de lado el verso para ir convirtiéndose en poema visual, posteriormente objeto, instalación y acción poética.

El texto dice:

Látigo.

En cuanto llegue a ti mi lengua conocerás el sabor salado de la amargura.
No querrás perder el paraíso de mis labios enroscados a tus piernas, yedra vital que acaricia tus muslos.
Hemos llegado al restallido de siete cabezas dragones de silencio que abren en tu piel bocas de sangre.
El beso, al fin, es entre hermanos.

Giusseppe, M-20010606
Esto no es una broma