Instalar Mendeley Desktop en Ubuntu 16.04

Buenas tardes,

Si tenéis problemas para ejecutar Mendeley en vuestra Ubuntu 16.04 después de haberlo instalado, lo más probable es que os falte un par de librerías.

Si entráis en la terminal y veis algo como esto:

Unable to use Qt libraries in /usr/lib/x86_64-linux-gnu. Some components are missing:
	/usr/lib/x86_64-linux-gnu/libQtSvg.so.4.8.7
	/usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
To run Mendeley Desktop you may need to install the QtWebKit and QtSvg packages provided by your Linux distribution.
Using bundled SSL runtime libraries
/usr/bin/../../opt/mendeleydesktop/bin/mendeleydesktop: error while loading shared libraries: libgstapp-0.10.so.0: cannot open shared object file: No such file or directory

Entonces tiene toda la pinta de que os faltan. La solución es tan fácil como instalarlas a golpe de apt:

$ sudo apt-get install libqtsvg4-perl libqtwebkit4

Espero que ahora os funcione. Si no, ya sabéis, ahí tenéis la sección de comentarios. ¡¡Saludos a todos!!

Robo Wunderkind – Un «lego» para desarrollar robots

¡Construye, programa, juega, crea el futuro!

Hoy he leído acerca de este proyecto en Kickstarter. Robo Wunderkind (algo así como robot-niño prodigio) es un kit modular para construir robots a base de juntar bloques variados con sus sensores, sus actuadores y su lenguaje de programación.

3aca895f2fc0ccfe1939f77b6deec6fa_original

Para no repetir la información una y otra vez de todos los blogs que habrán hablado ya del proyecto, os pongo el enlace a la página del proyecto en Kickstarter, muy completa y con toda la información sobre los distintos pledges en función de la financiación. Ah, por cierto, ya está financiado (a 28 días del final de la campaña).

¡Buenos días y feliz viernes!

Cómo crear un Instalador USB para OS X El Capitan

OS X El Capitán ya está disponible para descargar e instalar de manera gratuita en todos aquellos dispositivos con OS X Yosemite así que, si tienes un trastorno obsesivo-compulsivo por las instalaciones desde 0 como yo, aquí te doy las pautas para crear tu USB de arranque para instalar «El Capitán».

osx-capitan

Lo primero y principal, entra en la App Store y descárgalo. No sigas leyendo, dale ya a descargar porque tienes para rato. Te espero en el siguiente párrafo.

De acuerdo, lo siguiente es el material necesario para crear el USB:

  1. Acceso de administrador en tu Mac. Si es tuyo, supongo que lo tendrás, pero no está de más avisar porque en una parte del proceso necesitarás ejecutar un comando con permisos de administración.
  2. Un pincho USB (obviamente). Debe ser de 8GB o superior. Además, a poder ser, USB3 porque si no la instalación va a ser muuuuuy larga. Lo sé por experiencia.
  3. El instalador de OS X El Capitán (también obvio). Ahora mismo se estará descargando y va a estar así durante un buen rato.
  4. Y ya :D.

Lo bueno: no se necesita demasiado. Lo malo: se tarda mucho en descargar esta versión de OS X.

Una vez descargado OS X El Capitán viene el primer paso esencial: NO CERRÉIS EL INSTALADOR. Cerrarlo lo borra del disco, por lo que habría que volver a descargarlo (¿genial eh?).

El segundo paso es tener preparado el disco USB para que sirva como dispositivo de arranque. Para ello hacemos los siguiente:

  1. Conectamos el USB al Mac y arrancamos la utilidad de discos. Seleccionamos el dispositivo USB (no ninguna partición) y le damos a la pestaña «Erase» (lo siento, no tengo el Mac en castellano). Hecho esto, formateamos la partición como «Mac OS Extended (Journaled)».

    Utilidad de discos. En la pantalla de Erase formateamos en Mac OS
    Utilidad de discos. En la pantalla de Erase formateamos en Mac OS Extended Journaled.
  2. Nos vamos a la pestaña «Partition» y en el apartado «Partition Layout» seleccionamos «1 Partition», es decir, queremos crear una nueva partición.

    Configuración de particiones.
    Configuración de particiones.
  3. Luego debajo, en el botón «Options», seleccionamos el esquema de particionado «GUID Partition Table». Aceptamos y le damos a aplicar los cambios y ¡enhorabuena!, ya está preparado el USB.

    Selección de esquema de particionado.
    Selección de esquema de particionado.

Si habéis seguido los pasos tal y como están aquí escritos, seguramente El Capitán siga descargándose. Armaos de paciencia y esperad, que es lo que toca. Un café en estos casos siempre viene bien, pero igual no son horas. Yo, por si acaso, me voy a preparar uno.

Una vez descargado El Capitán y con la pantalla del instalador abierta abriremos una terminal. Sí, sé que existen herramientas visuales, pero la terminal es cómoda y eficiente y no me gusta descargar aplicaciones para todo. Con la terminal abierta escribiremos el siguiente comando:

$ sudo /Applications/Install OS X El Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install OS X El Capitan.app --nointeraction

Tardará unos minutos (pero ni de lejos lo que ha tardado la descarga). Mientras se va creando, explico un poco este comando. Lo primero, se está lanzando el programa createinstallmedia que está bajo ese directorio tan largo como administrador (de ahí el sudo) sobre el volumen que hemos creado. Si habéis seguido los pasos que he puesto, se llamará «Untitled», así que de ahí el /Volumes/Untitled. Después se indica qué es lo que se va a meter en el disco, /Applications/Install OS X El Capitan.app y que lo queremos desatendido, --nointeraction.

Una vez termine, ¡ya tenéis vuestro USB con El Capitán, desde el cual podréis realizar una instalación limpia sin necesidad de tirar de los servidores de Apple o usar como disco de recuperación en casos extraños.

Cualquier duda/pregunta/aclaración es bienvenida en los comentarios. ¡Un saludo!

Instalar SUMO en OSX Yosemite

SUMO (Simulation of Urban MObility, en http://goo.gl/W8r9Vz) es un micro-simulador de tráfico distribuido bajo licencia GPL v3 disponible para Windows, GNU/Linux y OSX.

Screen Shot 2015-04-26 at 11.00.41 PM

Este fin de semana lo he instalado en una máquina Windows, y sin problema (doble click y arreando), en una GNU/Linux y lo mismo (un poco más porque había que compilar los fuentes, pero fácil siguiendo el tutorial), pero al llegar a OSX, no había manera. Como me ha costado un poco, dejo la receta aquí abajo para quien tenga la necesidad, que lo pueda compilar y hacer funcionar rápido.

  1. Instalar las command-line-tools. Si tenéis Xcode instalado, no hay problema. Si no, para instalarlas es tan fácil como invocar un comando que venga incluido en ellas, como por ejemplo git.
  2. Instalar Homebrew. Paquete esencial para tener los mínimos quebraderos de cabeza posibles. Como dicen en la página principal, se instala lanzando el comando ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)".
  3. Instalar las dependencias de SUMO. Con el comando brew install Caskroom/cask/xquartz homebrew/x11/fox gdal xerces-c.
  4. Exportar las variables de entorno CPPFLAGS y LDFLAGS. Para compilar los fuentes y enlazar los compilados: export CPPFLAGS="$CPPFLAGS -I/usr/local/include/python2.7 -I/usr/local/include -I/opt/X11/include -I/usr/X11/include/freetype2" y export LDFLAGS="$LDFLAGS -lpython2.7 -L/usr/local/lib -L/usr/X11/lib"
  5. Descargar los fuentes de SUMO y descomprimirlos. Algo hay que compilar, ¿no? pues eso, wget http://www.dlr.de/ts/en/Portaldata/16/Resources/sumo/sumo-src-0.23.0.zip (o la versión que corresponda) y descomprimirlo (vamos a suponer que está descomprimido en /Users/neko/Downloads/sumo-0.23.0). Si no tenemos wget instalado, basta con instalarlo a través de brew (brew install wget) o descargar el fichero de cualquier otra forma.
  6. Compilar los fuentes. Para ello, accedemos al directorio (cd /Users/neko/Downloads/sumo-0.23.0), preparamos los fuentes con el comando ./configure --with-fox-config=/usr/local/Cellar/fox/1.6.49/bin/fox-config -with-proj-gdal=/opt/local --with-xerces=/opt/local --prefix=/opt/sumo, compilamos con el comando make -j4 e instalamos con sudo make install sudo porque lo queremos instalar en /opt/sumo, tal y como pone en el parámetro --prefix del comando configure.

Si todo ha ido correcto, SUMO estará instalado en /opt/sumo. Para lanzarlo, los ejecutables serán /opt/sumo/bin/sumo y /opt/sumo/bin/sumo-gui, dependiendo de si queremos lanzar la simulación sin o con gráficos respectivamente.

Al lanzar el entorno gráfico de simulación puede salir el siguiente error:

FXApp::openDisplay: unable to open display :0.0

No pasa nada, es simplemente que el servidor de las X tiene que estar corriendo. Estará dentro de /Applications/Utilities, pero con escribir X11 en spotlight lo encontrará sin problemas.

Espero que os haya servido de mucho. ¡Que disfrutéis con vuestras simulaciones!

Instalando PredictionIO en OS X

predictionio logoPredictionIO es una aplicación (concretamente un servidor) que implementa una serie de algoritmos de recomendación para ofrecer servicios de filtrado de información a otros sistemas.

Llevaba tiempo queriendo hincarle el diente para ver qué tal se comporta, y hoy he tenido mi oportunidad. Sin embargo, la documentación para instalar el servidor en mi máquina de desarrollo me ha resultado un poco escasa. Seguramente todo esté ahí, pero no he encontrado un tutorial-receta donde me expliquen paso por paso qué hacer para poder conectarme con mi cliente al servidor.

Una de las cosas que más gracia me ha hecho ha sido el Quick Start. Éste comienza diciendo «para que probéis los clientes, vamos a partir de un servidor ya instalado y configurado». Claro que sí, como somos principiantes, ya hemos instalado el servidor con el comando del poder.

Como ya lo he conseguido, incluyo aquí el paso a paso para quien lo necesite. He de adelantar que uso brew en OS X, así que quien no lo tenga, tendrá que apañárselas para instalar los programas de otra forma. Eso sí, si le apetece ponerlo en los comentarios, genial para todos.

  1. PredictionIO necesita de MongoDB para funcionar (Hadoop no es un requisito, así que no lo incluyo). Para ello, instalamos ambos paquetes a golpe de brew:
    brew install mongo
    brew install predictionio
    
  2. Una vez instalados, hay que arrancar primero el servidor de MongoDB:
    mongod &
    
  3. Lanzamos el script de inicialización de PredictionIO. Suponiendo que se ha instalado la versión 0.7.3 y bajo /usr/local/Cellar/predictionio/, la sentencia será la siguiente:
    /usr/local/Cellar/predictionio/0.7.3/bin/setup.sh
    
  4. Creamos un usuario administrador:
    /usr/local/Cellar/predictionio/0.7.3/bin/users
    
  5. Ya podemos arrancar el servidor como nos dice el tutorial:
    /usr/local/Cellar/predictionio/0.7.3/bin/predictionio-start-all.sh
    

Una vez realizado este último paso, el servidor quedará arrancado y se podrá acceder a la administración a través de http://localhost:9000/ desde el navegador. Si a vosotros, como a mí, no os aparece ningún motor de recomendación a la hora de seleccionar uno, el problema seguramente es porque habéis obviado el paso 3, donde se incluye dentro de MongoDB la información relativa a los motores y sus algoritmos.

Espero que ahora, todos aquellos que quieran comenzar a usar PredictionIO, puedan hacerlo de verdad. ¡Un saludo a todos!

Inteligencia Artificial y Soft Computing. Teoría y Aplicaciones

Hace unos días (el 25 de Abril para ser exactos) llegué a uno de los checkpoints que hay en mi ruta: la defensa de mi Proyecto Final Máster. Como ocurre en estos casos, los nervios hicieron que no todo fuese tan bien como debería, pero aún así fue mejor de lo esperado. Es un pasito más en mis estudios, lo cual me hace feliz.

El proyecto trata del Soft-Computing, una rama que pertenece a la Inteligencia Artificial, y que trata el conocimiento con una aproximación un tanto diferente a la Inteligencia Artificial clásica. En esta última, el conocimiento se suele concebir primero como abstracción, y luego se intenta representar esta abstracción (a esto se le suele llamar aproximación Top-Down del conocimiento). Las técnicas del Soft-Computing se caracterizan precisamente por representar el conocimiento de forma subsimbólica, es decir, modelando los componentes básicos del conocimiento para representar un conocimiento que «emerge» de sus interconexiones (se puede ver muy fácil si se piensa en las neuronas como componente y en el cerebro como el resultado, por eso se le suele llamar aproximación Bottom-Up).

El caso es que aquí tenéis el enlace para todos aquellos que quieran leerlo, ojearlo o criticarlo: thesis.pdf. Y en esto último me gustaría incidir. El libro del proyecto fue concebido como punto de entrada al Soft-Computing, así que si alguien lo lee, agradezco cualquier tipo de feedback.

Muchas gracias y ¡Un saludo a todos!

clang: error: unknown argument: ‘-mno-fused-madd’

Estos días me he venido pegando con un error al instalar algunas librerías en una máquina con OS X 10.9 instalado. Ahora mismo me acaba de pasar al intentar instalar PyGame en un entorno virtual, así que aprovecho y os pongo la receta según lo voy haciendo.

Si al instalar una librería (e.g. pygame) a golpe de pip o easy_install da el siguiente error:

$ pip install hg+http://bitbucket.org/pygame/pygame
Downloading/unpacking hg+http://bitbucket.org/pygame/pygame
...
...
...
clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

clang: note: this will be a hard error (cannot be downgraded to a warning) in the future

error: command 'cc' failed with exit status 1

----------------------------------------
Cleaning up...

Es decir, lo que viene a ser un «ZASCA!!», con exportar las siguientes variables de entorno la instalación funcionará:

$ export CPPFLAGS=-Qunused-arguments
$ export CFLAGS=-Qunused-arguments
$ pip install hg+http://bitbucket.org/pygame/pygame
Downloading/unpacking hg+http://bitbucket.org/pygame/pygame
...
...
...
Successfully installed pygame
Cleaning up...

Y todos felices. Según me ha parecido entender, en una de las últimas actualizaciones (creo que en Marzo de este año), el compilador de C (clang) cuando encuentra una flag desconocida lanza un error (en lugar de un warning como hacía antes). La flag -mno-fused-madd es de GCC y debe ser que a clang no le mola.

Que paséis buen fin de semana!

Robocode – Buscando el robot de combate definitivo

El vídeo que os traigo hoy va de Robocode, un juego de programación cuyo objetivo es construir robots que acaben con otros robots. Simple y sencillo. Es como una versión cojo-evolucionada del Core War, pero en lugar de vírus, luchan tanques, en lugar de ensamblador endemoniado, Java o .NET y en lugar de ocupar la memoria del oponente, es destruir su tanque.

Es decir, que se parece como un huevo a una castaña, pero no deja de ser un juego de programación :).

Los autores (o al menos uno de ellos) han puesto un enlace al paper (http://www.jonnielsen.net/RoboReportOfficial.pdf). Usan dos controladores, uno basado en una red neuronal entrenada con backtracking (el de la torreta) y otro basado en una red neuronal evolucionada (el de movimiento). La pena es que, según los resultados, sólo puede vencer a oponentes fáciles. Los mejores siguen ganando. Aún así, tiempo al tiempo. Yo confío en las máquinas :D.

Buenas noches!

Evolución de equipos de fútbol

La gran mayoría de las personas que me conocen saben que me encantan los días de fútbol porque puedes salir a la calle e ir al cine y estar prácticamente sólo. Sin embargo, cuando se trata de softbots, la cosa cambia :D.

El vídeo que os presento aquí es una simulación de una evolución de equipos de fútbol a golpe de hacer evolucionar redes neuronales.

El vídeo explica muy someramente cuáles son los parámetros de aprendizaje, pero para los que conozcan un poco del tema lo dejan bastante claro. Lo divertido viene a partir del segundo 28», donde se van presentando partidos con distintas generaciones.

Para los que tengan ganas de conocer un poco más sobre su funcionamiento, el paper se encuentra en esta dirección: http://downloads.hindawi.com/journals/jr/2010/841286.pdf. Espero no meterme en un lío. De todas formas, si tengo yo el enlace en mis bookmarks no debe ser muy complicado encontrarlo :).

Que lo disfrutéis!

Cuando dos robots se conocen

Si Turing levantase la cabeza…

El vídeo que os presento aquí es el resultado de poner a hablar dos instancias de cleverbot (www.cleverbot.com) hablando una con la otra. No tiene desperdicio:

Por cierto, me quedo con el momento epic-creepy del minuto ~2:48 (a no ser que yo me lo haya inventado y en realidad digan otra cosa)

him – Hahaha
her – What’s so funny?
him – You are
her – why am I funny?
him – Because you are
her – Why are you laughing?
him – I need blood

De las mejores declaraciones de amor de la historia. Saludos!