jueves, octubre 31, 2013

Paralelismos

A mediados del año 2007 empezó a interesarme los temas económico. Comencé a oír tertulias en la radio sobre economía y a leer prensa económica. Uno de los primeros digitales donde aterricé fue Cotizalia, la parte del diario El Confidencial que trataba sobre economía. Y una de las primeras columnas que me empezaron a interesar fue Valor añadido cuyo autor es Alberto Artero - escribía con el seudónimo de McCoy -

Por aquellos entonces, leía una columna, que a la postre terminaría retratando parte de lo que pasó después, Está de moda una nueva droga: la hipoteca, que me dejó pensativo, empezando a pensar que lo que se estaba gastando en casas en España no era una gran bolsa de dinero negro, como creía por aquellos entonces, sino que la gente se estaba endeudando hasta las cejas. Aunque hace seis años de esa columna, se escribía en los días de vino y rosas de la economía española, empezando ya a levantar las primeras señales de alarma. Luego, descubriríamos que muchas de esas hipotecas, se habían convertido en productos derivados que se habían vendido y revendido, siendo uno de los detonantes de la actual crisis económica.

Avanzamos de nuevo hasta el 2013. Han pasado seis años de crisis y en España - si no nos empeñamos en excavar - parece la economía ha tocado fondo. Todo el mundo debería estar advertido de lo que puede ocurrir si los mercados de derivados no son supervisados por profesionales diligentes. Bien, pues la semana pasada leía de nuevo a un artículo de Alberto Artero La banca gana: ahora, a forrarse con los alquileres" donde destaco este par de párrafos

Más aún. El proceso de innovación en la economía del dinero continúa firme su curso y, curiosamente, lo hace sobre pilares similares a los que nos provocaron hace seis años que lo improbable se hiciera posible y lo impensable, realidad
Un mismo mercado, el ladrillo; distinto subyacente, las rentas a percibir; similar instrumento, la titulización; igual objetivo, sacar rentabilidad adicional al flujo económico asociado a la vivienda (antes para la entidad financiera, ahora para el propietario). El patrón de siempre, en cualquier caso: agrupar cash-flows asociados a algún tipo de garantía, ponerles el lacito del refrendo de un tercero, por cuestionado que esté, y... ¡a jugar!

Cosa por otra parte totalmente lógica, cuando a muchos de estos innovadores financieros, se les ha salvado el culo. Si la red de seguridad del Estado está por debajo y se sabe que va a intervenir si la cosa se tuerce, ¿qué incentivos hay para dejar de hacer el ganso?. ¿Se ha aprendido algo, o como mucho me temo nada?. Muchos dirán que esto se arregla con más regulación o prohibiendo vehículos financieros o limitando los bonus de los directivos, yo al igual que Sefuelix cuenta en este artículo, prefiero a supervisores con un alto grado técnico y que se hagan respetar:

Al día siguiente, Banco de España llamó a los presidentes al orden. Anuló todas las operaciones realizadas (las cuales se liquidaban a través de sus sistemas) y avisó de que, en caso de repetirse, se llevaría por delante a los presidentes responsables.

PD: No se pierdan tampoco la entrevista en el FT con Alan Greenspan. Da muchísimo que pensar sobre el papel de Bancos Centrales y supervisores en esta crisis, y sobre todo , da que pensar sobre la validez de los modelos económicos.

miércoles, octubre 30, 2013

Breves notas sobre el uso de matrices en Microsoft Excel (II)

En la primera parte del artículo hablé de como usar operaciones con matrices y dejé algunos enlaces a las operaciones que se podían hacer con las mismas en Excel. En este voy a tratar otras operaciones que pueden realizarse con matrices.

Multiplicación

Dada dos matrices A de dimensión m x k y B de dimensión k x n, el producto de ambas matrices AB es una matriz de dimensión m x n. La función de Excel que realiza el producto de matrices es MMULT. Recibe como parámetros las dos matrices que van a usarse como operadores. En la siguiente captura se ve como multiplicar la matriz A de dimensión 4 x 2 por la matriz B de dimensión 2 x 4, dando como resultado la matriz destino 4 x 4. Hay que tener en cuenta que al introducir la fórmula hay que pulsar CTRL + SHIFT + ENTER en vez de ENTER para informar a Excel que es una operación con matrices.

Multiplicación por una constante

Si queremos multiplicar todos los elementos de una matriz por un determinado número, supuesto que la matriz es m x n, seleccionamos una región en la hoja Excel como destino de la matriz,e introducimos la fórmula que queramos, no olvidando pulsar CTRL + SHIFT + ENTER para señalizar la operación de matrices.

Cálculo de determinantes

La función MDETERM nos permite calcular el determinante de una matriz. Por ejemplo, en la matriz A15:D18, calculamos el determinante, que en este caso es cero.

Inversa

La función para calcular la inversa - en el Excel en español - es MINVERSA, que recibe como parámetros la matriz sobre la cual queremos calcular. Esta matriz inversa no tiene porqué existir siempre, y en caso de que no existe, Excel advertirá del error con un #NUM en la celda donde hayamos introducido la fórmula. La fórmula sólo funciona con matrices cuadradas

Trasponer

En la versión de Excel en español, la fórmula encargada de hacer la transposición es TRANSPONER. Recibe como parámetro la matriz que queremos intercambiar filas y columnas y debemos de tener seleccionado las celdas destino.


martes, octubre 29, 2013

Breves notas sobre el uso de matrices en Microsoft Excel (I)

Ayer necesite realizar algunas operaciones con matrices. Normalmente, cuando tengo necesidad de realizar dichas operaciones, suelo recurrir a Matlab o el clon libre del mismo Octave. Ayer tenía un poco de prisa y como del primero no tengo licencia ni tenía ganas de buscar una versión de evaluación y del segundo me tocaba bajarlo y compilarlo, decidí buscar si Excel tenía algún soporte básico para realizar cálculos con matrices.

Aparte de las operaciones de suma, existen una serie de funciones en Excel que permiten diversos cálculos con matrices: multiplicación (MMULT), trasposición (TRANSPOSE), cálculo de la inversa - si existe - (MINVERSE) o cálculo del determinante (MDETERM)

Sólo hay que tener en cuenta los dos detalles siguientes para usar las fórmulas de matrices correctamente:

  • Definir correctamente la matriz: Una matriz m x n, se define en Excel por las coordenadas del elemento de la esquina superior izquierda a11 y por el elemento de la esquina inferior derecha amn. Por ejemplo en la siguiente captura de pantalla la matriz quedaría definida por el rango A1:C4


  • Cuando se define una fórmula para operar con una matriz, hay que tener seleccionado las celdas que ocupará el destino, introducir la fórmula pero en vez de pulsar enter, pulsar CTRL + SHIFT + ENTER. Esto rodea la fórmula de llaves - que no pueden introducirse normalmente - y le indica a Excel que estamos realizando una operación de matrices.

Para explicar los dos puntos anteriores voy a sumar dos matrices, Matriz A y Matriz B, ambas de tamaño 4 x 3. El resultado es una matriz del mismo tamaño. La matriz A está en las celdas A2:C5 y la matriz B está en las celdas A8:C11. El resultado estará en las celdas A14:C17, las cuales deben de estar seleccionadas, como puede verse en la captura:


Dos matrices A2:C5 y A8:C11, para sumar colocando el resultado en A14:C17, el área resaltada

Con el área destino seleccionada (celdas A14:C17 en la captura anterior), introducimos la fórmula de la suma =A2:C5+A8:C11 en y pulsamos CTRL + SHIFT + ENTER, para indicar que es una operación con matrices. En la siguiente captura puede verse como la tras pulsar la combinación de teclas anterior, la fórmula queda entre llaves, para indicar que es una operación de matrices. Dichas llaves no pueden introducirse manualmente.


Barra de fórmulas tras pulsar CTRL+SHIFT+ENTER

El resultado de la operación de suma se puede ver en la siguiente captura:


Resultado de la operación de suma de matrices

Referencias


domingo, octubre 27, 2013

MacOS X Mavericks: Toma de contacto (I)

Esta semana he actualizado el ordenador con el que trabajo a la última versión del sistema operativo de Apple, OS X Mavericks. La actualización, sin problemas, en unos 45 minutos, incluyendo la actualización de las herramientas de desarrollo. Una vez reiniciado el sistema, otro bloque de actualizaciones a diversas aplicaciones de la suite iLife de Apple que tenía instaladas, así como soporte de impresoras y archivos de cámaras raw.

Hasta ahora, estas han sido los pequeños detalles que he tenido que solucionar:

  • Se ha cambiado en las herramientas de desarrollo el depurador gdb por el depurador del proyeco llvm, lldb. En mi caso, que estoy acostumbrado al primero, lo he compilado desde fuentes, desde la última versión estable disponible, la 7.6.1. Tras bajar las fuentes, verificar la firma electrónica de las mismas, las órdenes necesarias para compilarlo son las siguientes:
    env CC=clang  CFLAGS="-Wno-string-plus-int" \
    ./configure --prefix=/usr/local
    make
    make install  (como usuario root / administrador)
    

    Es necesario establecer la variable CC puesto que se ejecuta varios scripts configure anidados. Por otra parte, puesto que el gdb lo suelen probar con el gcc, no compila de manera limpia con el clang, teniendo que desactivar un warning con la opción que se pasa.
  • La versión del MacVim que usaba no arranca en Macvericks. Esto se debe a que está compilada contra la librería de Perl 5.10, el cual ha sido actualizado a una nueva versión en el sistema operativo. Es muy sencillo compilar desde las fuentes siguiendo las instrucciones de compilación del MacVim. Si se quiere compilar desde el git, los pasos a seguir son los siguientes:
    git clone git://github.com/b4winckler/macvim.git
    cd macvim
    env CC=clang ./configure --with-features=huge \
                  --enable-rubyinterp \
                  --enable-pythoninterp \
                  --enable-perlinterp \
                  --enable-cscope
    make
    #Comprobamos que ha compilado ok
    open src/MacVim/build/Release/MacVim.app
    #Abrimos la carpeta donde está
    #la aplicación y la copiamos a donde queramos
    open src/MacVim/build/Release/
    
  • Desactivar el llavero iCloud. Nunca me ha gustado mantener cierto tipo de información en servicios de terceros. No me interesa almacenar son contraseñas en servicios de terceros, mucho menos después de todo lo que vamos conociendo de la NSA - que probablemente sea la punta del iceberg de lo que están haciendo los Estados a la hora de espiar - . El servicio iCloud lo tengo desactivado en el iPhone y en el ordenador. Para ello, desde las Preferencias del Sistema, iCloud no tengo la cuenta logeada. También, desde el mismo menú se puede controlar los elementos que se quieren almacenar en los servidores de Apple
  • Según me comentaba algún amigo, Macports podía tener algún problema, que supongo solucionado a estas alturas de la semana.


miércoles, octubre 23, 2013

Francia y la NSA, la damisela ofendida

Más allá de contar lo obvio - los Estados espías - , las revelaciones de Snowden sobre la NSA también están sirviendo para sacar a la luz esa hipocresía tan europea sobre que las cosas malas solo se hacen en USA. Resulta que Francia ha convocado al embajador de EEUU porque cree que la NSA ha intervenido en sus comunicaciones y se muestra indignada ante esas prácticas. El problema es que muchos recordamos una particularidad de las primeras versiones del navegador web Netscape: la existencia de una versión especial para Francia, ya que las leyes francesas prohibían el uso de sistemas que usaran criptografía fuerte. Ese detalle se puede ver aquí. Lástima de no saber donde están mis antiguos mirrors de Netscape, para verificar los binarios.

PD: Repasen ustedes los algoritmos de criptografía que usaba el GSM A5/1 y A5/2, este último para exportación, que ha estado soportado en los móviles hasta hace pocos años. O la vieja polémica del chip chip clipper, para que el gobierno tuviese acceso a cualquier clave criptográfica sin problemas. Los gobiernos jamás les ha interesado el uso sencillo de encriptaciones fuertes


miércoles, octubre 09, 2013

Debian: Problemas al arrancar un daemon desde el postint de un paquete

Hace unos días nos encontramos un curioso problema en un paquete Debian de construcción propia: Por alguna razón que desconocíamos en ese momento ,el script postint de un paquete debian, no terminaba la ejecución, convirtiéndose en un proceso zombie, que dejaba al proceso que lo lanzó esperando indefinidamente la finalización del mismo. Como el proceso que lanza estos paquetes es el debconf, encargado de la instalación de paquetes, ésta nunca finalizaba de manera correcta.

Tras buscar bastante, dimos con el problema: hay ciertos programas que no pasan a segundo plano de manera correcta y dejan descriptores de ficheros abierto contra debconf, que es el programa encargado de realizar las instalaciones y configuraciones de paquetes en sistemas basados en Debian. Esto sólo ocurre si desde el postint intentamos arrancar algún tipo de proceso que debe ser un daemon.

Para evitar este problema, Debian provee un script, que puede llamarse desde nuestro fichero postint: Antes de terminar la ejecución del fichero postint, se debe de añadir la llamada db_stop al final del mismo (o bien en aquellos puntos donde se finalice la ejecución). De esta manera, se soluciona el problema del cuelgue de la instalación de paquetes que arrancan daemons que no cierran bien los descriptores de ficheros.