martes, abril 23, 2013

John Müller en El Mundo: "Debajo del crecimiento, aún arderá el déficit"

Un párrafo del artículo Debajo del crecimiento, aún arderá el déficit que ha publicado hoy John Müller en el mundo:

El Estado yonqui no logra desengancharse del opio del gasto, una droga costeada por los ingresos creados artificialmente por la burbuja de crédito en la que vivió España en la primera década del siglo. Aunque todos intuimos que esos ingresos nunca volverán, el Estado sigue impertérrito en su volumen de gasto que ya representa el 47% del PIB cuando en 2007, último año de incubación de la crisis, era del 39,2%.

En España , todavía seguimos el sueño que los ingresos públicos que se produjeron del 2000 al 2007 van a volver, y se podrá continuar el ritmo de gasto y endeudamiento, tanto público como privado. De esa ilusión viven todas las administraciones públicas y todos los partidos políticos, que piensan que esta crisis es coyuntural.Es más, todavía no hemos asumido que gran parte de esa supuesta riqueza creada no era más que gasto a cargo de deuda que hay que devolver. (las negritas del párrafo de Müller son mías)

Technorati Tags: ,

viernes, abril 19, 2013

Autotools, tutorial de uso (I): Introducción

Para bien o para mal, me toca de vez en cuando mantener un software que usa el conjunto de herramientas de GNU para poder compilar. Este conjunto de herramientas - autoconf, automake y libtool - pretende facilitar la configuración de software que se distribuye en código fuente, facilitando al usuario la instalación del mismo. Algunas de las posibilidades que permite un programa que utilice de manera correcta estas utilidades para detectar el entorno de compilación son:

  • Detectar y configurar las rutas de librerias y programas que se necesita para compilar.
  • Especificar diferentes opciones de configuración del código fuente que se quiere compilar.
  • Especificar la ruta a cualquier elemento necesario para la compilación de un software.
  • Generar toda una serie de ficheros Makefiles, con una serie de regla estándar.
  • Facilitar la compilación cruzada de herramientas.

Estos programas parten de una serie de plantillas, con unos nombres estándar, que una vez procesado por los mismos genera un fichero shell script llamado configure. Cuando se ejecuta este shell script, analizará el sistema para saber cual es el entorno de compilación que está presente, generará los ficheros que se le indique , en especial los Makefile, de tal manera que se tenga la tan común manera de instalar fuentes en el mundo Unix:

./configure --prefix=/usr/local
make
make check
# Como superusuario
make install

Sin embargo, no todo es tan bonito como describe el manual del autoconf (Those who do not understand Autoconf are condemned to reinvent it, poorly., en especial porque han surgido multitud de alternativas para sustituir a las autotools1). Alguno de los problemas que he encontrado a lo largo del tiempo que he usado estos programas:

  • Están diseñados para facilitar la vida al usuario del mismo, pero no al desarrollador que utiliza el paquete. Esto es un arma de doble filo, porque muchas veces esa falta de facilidad para generar las plantillas, hace que se den demasiadas cosas por supuestas, dificultando la vida a los usaurios.
  • El lenguaje que utiliza autoconf , M4, no es precisamente cómodo. Si a esto le sumanos que se puede mezclar trozos de shell scripts en las plantillas puede que se acabe generando ficheros de configuración no tan portables como pueden parecer a primera vista.
  • Hay gran cantidad de scripts que parece que sólo se han probado en sistemas Linux. Cuando se intenta usar en otros Unix, no funcionan correctamente.

Arquitectura general

Los autotools parten de una serie de ficheros de plantilla que serán procesados por cada programa para generar los ficheros de salida. Los programas que se van a manejar son automake, autoconf, autoheader y aclocal. Cada uno de estos tienen una determinada plantilla de entrada, y generará una salida:

  • aclocal Este programa se utiliza para generar el fichero aclocal.m4, consolidando en un único fichero macros que vienen de varios paquetes más las que el usuario quiera añadir, de tal manera que sean fácilmente accesibles por autoconf. Sin embargo, en las últimas versiones de autoconf existe la posibilidad de espcificar un directorio. El funcionamiento de este programa es buscar en todos los ficheros .m4 que encuentre, para posteriormetne analizar la plantilla configure.ac y copiar la definición de las macros que se usen en esta última plantilla al fichero aclocal.m4.
  • automake Este programa lee las plantillas define en Makefile.am , configure.ac para generar el fichero Makefile.in. Este último f¡chero será posteriormente procesado en la ejecución del configure para generar los ficheors Makefile definitivos que permitirán compilar el proyecto.
  • autoheader Este programa va usar como entrada la plantilla configure.ac, la cual va a procesar buscando posibles definiciciones para genera el fichero config.h.in. Este programa nos ayuda a tener en un sólo fichero las posibles definiciones del preprocesador que se realizan en la plantilla. Posteriormente, cuando se ejecute el script configure, definirá las macros de acuerdo al entorno que vaya detectando durante su ejecución
  • autoconf Este programa, por último, usar como entrada la plantilla configure.ac, aclocal.m5 o el directorio de macros especificado para procesar todo el conjunto y generar el fichero shell script configure, el cual al ejecutarse intentará detectar el entorno donde se está ejecutando, teniendo en cuenta parámetros de línea de comandos y las plantillas, procesar los ficheros que acaben en .in - como por ejemplo Makefile.in o config.h.in -, realizando las correspondientes sustituciones de variables y valores, para generar los ficheros definitivos que permitan la compilación del programa.

Normalmente, todos estos programas se llaman desde un fichero, que por convención llamamos autogen.sh cuyo contenido es el siguiente suponiendo que en el directorio donde llamamos al programa tengamos las correspondientes plantillas en los ficheros configure.ac y Makefile.am, además de las posibles macros m4 que necesitemos en el directorio m4.

#!/bin/sh
aclocal -I m4 && \
rm -rf autom4te.cache/ && \
autoheader && \
automake --foreign &&
autoconf

Todo el esquema anterior puede verse en el siguiente gráfico:

En el gráfico anterior, las cajas transparentes son los ficheros que utiliza de entrada cada una de las herramientas, con sus nombres por defecto, de tal manera que no sea necesario especificarlos en la línea de comandos. Las cajas sombreadas corresponde a cada uno de los comandos que se llaman.

Ejemplo básico

Un primer ejemplo puede encontrarse en el tutorial 1 que he subido al proyecto Auto Tools tutorial de Sourceforge. En el primer tutorial tenemos dos ficheros muy básicos, más el código fuente del programa y el script que se encarga de generar el fichero configure. Se puede bajar con git, ver como no hay ningun fichero make ni configure, y ejecutar la secuencia:

./autogen.sh
./configure
make
./tut1

Tras la ejecución del último programa nos debe de devolver la palabra Ok.En la próxima entrada explicaré en que consiste cada una de estas plantillas.

Documentación

Notas

  1. qmake,cmake,ant, o incluso porqué no decirlo, un simple Makefile bien hecho, como han demostrado proyectos como Plan 9 o Qmail.

Technorati Tags: ,

miércoles, abril 10, 2013

Las previsiones del FMI, allá por Abril del 2007

Siguiendo con las previsiones económicas, una que debe de ocupar un lugar preferente es la del World Economic Outlook de Abril del 2007 del Fondo Monetario Internacional. Si, había ya signos de que se estaba incubando una crisis económica, pero era complicado que la cosa saltara a los medios de comunicación de masas. Si se lee el informe ejecutivo el servicio de estudios del FMI afirmaba lo siguiente:

Notwithstanding the recent bout of financial volatility,the world economy still looks well set for continued robust growth in 2007 and 2008. While the U.S. economy has slowed more than was expected earlier, spillovers have been limited, growth around the world looks well sustained, and inflation risks have moderated. Overall risks to the outlook seem less threatening than six months ago but remain weighted on the downside, with concerns increasing about financial risks

Las negritas son mías

No conozco el tipo de modelos y herramientas que utilizan todos estos organismos internacionales y servicios de estudios para realizar sus previsiones. Pero la triste realidad, tal como comentaba en Las previsiones macroeconómicas de la Comisión Europea, cada vez parecen menos precisas. ¿Alguien no recuerda la cantidad de veces que han hablado de recuperación y brotes verdes, tanto políticos como diversos servicios de estudios?. O es que estaba vez se pensaba, como tantas otras veces que esta vez era distinto

De un político, entiendo que tenga que vender su mercancía, de los servicios de estudio, entiendo menos tantos fallos. Vale que la economía no sea una ciencia exacta y que no todo se puede reducir a la econometría. Sin embargo, si hubo fondos de inversión que analizaron y vieron venir el problema y se posicionaron de acuerdo a esos estudios. Tengo pendiente la lectura de La gran Apuesta Michel Lewis cuenta como algunos inversores y gestores no fueron sorprendidos en absoluto y se forraron con esto - me gusta más el título en inglés The Big Short -.

De estas previsiones del FMI me enteré a través de la lectura del libro de Carmen M. Reinhart y Kenneth S. Rogoff que enlazo arriba. Al final, ¿por qué el FMI consideraba que la acumulación de deuda que se estaba produciendo no tenía riesgos, olvidando todas las lecciones anteriores?. Algunas tan recientes como la de Japón (1991), Noruega (1987) o Suecia (1991), por nombrar algunas de las crisis que han tenido asociadas burbujas inmobiliarias. Ah, one more thing, Kenneth Rogoff fue el economista jefe del FMI entre agosto del 2001 y septiembre del 2003.

También es casualidad que buscando información por Internet para esta entrad llegue al artículo Échale la culpa a la FED, de Rogoff:

Tampoco el Fondo Monetario Internacional (FMI) demostró brillantez. En abril de 2007, el FMI publicó sus famosas Perspectivas de la economía mundial donde declaró que todos los problemas en Estados Unidos y otras economías avanzadas por los cuales se había estado preocupando eran exagerados.


Los modelos macroeconómicos más avanzados de los bancos centrales también fallaron miserablemente —de tal forma que los economistas lo han comenzado a reconocer completamente hace poco tiempo—


Technorati Tags: ,

domingo, abril 07, 2013

Minado bitcoins con el bfgminer: Notas rápidas de compilación del software

Como en otra época con los tulipanes, ahora está de moda el negocio de bitcoin, una moneda virtual basadas en tecnologías peer to peer. Esta moneda incluye una serie de protocolos y software que implementan todo el sistema de transacciones comerciales. Minar bitcoins consiste en buscar un valor que tras aplicarle el algoritmo SHA-256, el hash resultante tenga un número determinado de ceros al principio. Esto es un proceso que requiera gran capacidad de cálculo, así que lo normal es participar en el a través de un grupo de minadores o pool como Slush's pool. Voy a suponer que tenemos ya nuestro monedero virtual, una copia de seguridad del mismo y la dirección a la cual nos podrán enviar - los céntimos de - bitcoins q se genere.

Un software que puede participar en estos pools es BFGMiner. Tiene diversas opciones que permiten configurar que elementos del ordenador va a ser el responsable de realizar los cálculos necesarios para la minería de bitcoins. Normalmente, si se quiere tener una gran potencia de cálculo, lo normal es recurrir a tarjetas gráficas que soporten OpenCL, o bien recurrir a la CPU del ordenador, lo cual es un proceso más lento.

En esta entrada voy a explicar como instalar y configurar el software de minado, compilando los elementos necesarios en una distribución Debian estable.

Lo primero es asegurarnos que tenemos el entorno de desarrollo instalado, que compila y que las dependencias básicas que va a necesitar bfgminer se cumplen. Todo el software se instalará por defecto en un /usr/local. Tenemos qu

Prerrequisitos

Instalar los siguientes paquetes:

# Build esentials apt-get install build-essential
apt-get install git-core
apt-get install autoconf
apt-get install libtool
apt-get install pkg-config
# Una de las dos siguientes en función de la librería
# de cripto que se utilice
apt-get install libcurl4-openssl-dev
apt-get install libcurl4-gnutls-dev

Una vez instalado los paquetes, hay que instalar una serie de programas, en unas determinadas versiones para poder compilar bfgminer. A saber:

yasm

yasm es un ensamblador para x86/AMD64. Bfgminer necesita al menos la versión 1.0.1 para poder compilar las rutinas de minado escritas en ensamblador - el doble de rápidas que las convencionales en C - si se va a usar minado con CPU como queremos. La versión que he usado es 1.2.0 (hash md5 = 4cfc0686cf5350dd1305c4d905eb55a6). Para instalarlo hay que dar los siguientes pasos.

./configure --prefix=/usr/local
make
make check
# Como superusuario
make install

Jansson

Jansson es una librería en C para manejar datos en formato JSON. La versión que he usado para compilar el programa es la 2.4 (hash md5=c4629b89bf0432f3158c461e88fe0113). Los pasos que hay que dar para instalarla son los siguientes:

./configure --prefix=/usr/local
make
make check
# Como superusuario
make install

bfgminer

Una vez que se ha instalado correctamente todas las dependencias del software que necesitamos, vamos a compilar el bfgminer. Las fuentes del mismo se van a obtener del git del proyecto. Se le va a pasar la configuración para que se habilite la posibilidad de usar el minado a través de la CPU. En este punto, cuando se configura a través del script de autogen, es necesario estar conectado a Internet, puesto que se va a bajar un módulo que se necesita para compilar

#Obtenemos el git
git clone https://github.com/luke-jr/bfgminer.git
cd bfgminer
./autogen.sh
./configure --enable-cpumining --prefix=/usr/local
# Es importante en este caso asegurarse que aparecen
# las dos líneas siguientes en la salida el configure
# para asegurarnos que las rutinas
# de ensamblador están utilizándose
#  CPU Mining...........: Enabled
#  ASM.(for CPU mining).: true
# Compilamos make
make check
# Como root make install make install

Ejecutando bfgminer

Para empezar a minear bitcoins, lo más sencillo es unirse a un pool como Slush's pool. Una vez creada la cuenta, damos de alta los "trabajadores" que vamos a usar con sus correspondientes contraseñas. Por ejemplo, usuario usermining y password passmining.Si se usa el pool de ejemplo anterior, la dirección del pool es stratum.bitcoin.cz:3333. Hay muchas opciones para controlar el minado, pero para arrancarlo de manera más básica, y sólo para el minado de CPU:

bfgminer -o stratum.bitcoin.cz:3333 -u usermining -p passmining -T -a auto


Technorati Tags:

viernes, abril 05, 2013

Fundación BBVA: Values and Worldviews.

Ayer leía el artículo que ha publicado Pablo R. Suanzes en el Mundo, sobre el informe Values and Worldviews publicado por la Fundación BBVA. La lectura del mismo me ha dejado un amargo sabor de boca, porque pone de manifiesto las grandes contradicciones que tiene la sociedad española. Llevo un tiempo intentado convencerme que España no es ninguna excepción cultural que haga que seamos un país de segunda división, pero tras leer el artículo, soy mucho más escéptico: Cuando se rechaza el esfuerzo y la competencia lo que se hace es adoquinar el camino hacía la mediocridad.

  • Un 74.1% de los españoles cree que el Estado debe tener la responsabilidad principal a la hora de asegurar que los ciudadanos tienen un nivel de vida digno. Un 22% por encima de la media de la Unión Europa. La Sopa Boba. La negación del esfuerzo personal. Pero a su vez, son los que más desconfían de la clase política. Primera gran contradicción: Se quiere más Estado y se desconfía de la política: nada nuevo.
  • Según los españoles,cerca del 95% de la culpa de la crisis la tienen los bancos. Ese 95%, siento decir, que está mal informado. La parte del sistema financiero que se ha tenido que rescatar es la banca pública, controlada por el Estado. Las Cajas de Ahorro. Las cajas que concedían hipotecas a troche y moche, y responsables de la financiación de obras faraónicas, que todos sabemos como han acabado. Segunda contradicción.
  • La tercera gran contradicción es que se oponga a la subida del IRPF e IVA, pero luego se pida, mucho más Estado. Porque claro, son los ricos (es decir otros) quienes tienen que financiarlo. Aquí todo el mundo pide, pero luego a la hora de aportar dinero, a escurrir al bulto.
  • Más de la mitad de los españoles piensan que los ingresos deben ser más equilibrados, pidiendo que los que se esfuercen más y los que se esfuercen menos ganen cantidades similares. Querido país, si mi esfuerzo no tiene recompensa, voy a dedicarme a rascarme los bajos, y siguiendo vuestra lógica, espero cobrar lo mismo que el que se deja los cuernos trabajando. Este punto para mi es clave, porque demuestra que más de la mitad de la población española cree que el esfuerzo no merece la pena. Se ve mal al que se esfuerza y al que cumple correctamente con su trabajo. Y ese, no tiene que tener más recompensa que uno que se toca las narices. Nada nuevo, cuando se ve como el esfuerzo está proscrito en las aulas y muchos sectores económicos son alérgicos a la competencia, queriendo que el Estado les garantice por ley precios, ingresos y márgenes.

De verdad, ¿Con estos mimbres, alguien cree que vamos a salir pronto de la crisis actual?. Peor aún, ¿alguien cree que vamos a tener el nivel de riqueza no ya de la década pasada, sino de los años 90?. Y si alguien piensa que generar riqueza no es importante, sólo decir que no sé con qué piensan pagar el Estado del Bienestar. Los países del Norte de Europa se pueden permitir los estados de bienestar que tienen porque tienen empresas muy competitivas y eficientes.


Technorati Tags: ,