Forzar GPy para que muestre el gráfico (plot)

Recientemente he estado programando con Gaussian processes framework in python (GPy) y no conseguía mostrar a través de un gráfico los resultados obtenidos. El problema es que al finalizar la ejecución del script la ventana con el gráfico también se cerraba automáticamente. Para solucionar esto se tiene que forzar la librería matplotlib que bloquee la ventana para así poder visualizar los datos. Si ubicamos la siguiente linea después del plot nos congelará la ventana evitando que se cierre al finalizar el la ejecución.

matplotlib.pylab.show(block=True)

Debugging con python

Para hacer debugging en python normalmente pongo prints pero a medida que el código crece los prints aumentan en número y al final me paso un buen rato buscando los sitios dónde los tengo. Por lo que al final he implementado una solución en la que puedes imprimir la linea y el mensaje deseado.

Lo que hace simplemente es usar el numero de linea que nos da la librería “inspect”. Aquí el código:

import inspect

def debug(message):
    print 'Debug in line', inspect.currentframe().f_back.f_lineno,':'
    print message

if __name__ == '__main__':
    debug('message')
    print '.'
    print '.'
    debug('message2')

Como complilar Latex en Ubuntu

Para compilar un documento de Latex solo necesitas un archivo que compilar (thanks Captain!) y un programa que te lo compile. Ejecutando el siguiente comando en nuestro Ubuntu instalaremos el paquete básico para tal propósito (~175MB):

sudo apt-get install texlive-latex-base

Aunque si lo quieres todo (paquetes de gráficos y muchas cosas raras) puedes usar el comando que te lo instala todo (~1.8GB):

sudo apt-get install texlive-full

Como leer anotaciones y comentarios de documentos PDF en Ubuntu

El visualizador de documentos de Adobe para cualquier distribución GNU/Linux, no vale nada. Básicamente lo que nos permite es simplemente “visualizar” el documento y no ofrece otras funcionalidades que aporta a otros sistemas operativos. Una de esta funcionalidad es la de visualizar anotaciones (simplemente se ve el subrayado).

Indagando un poco por la web he encontrado la solución. Lamentablemente no es una aplicación nativa para Ubuntu (las existentes al parecer solo muestran el documento), por lo que se tiene que hacer cosas un poco raras para ver las anotaciones. Así lo he solucionado yo:

Instalar Wine (aplicación nativa para Ubuntu que simula los procesos Windows para poder ejecutar programas que solo funcionan en Windows).

Si intentamos instalar Adobe PDF en Wine no nos va a funcionar (ninguna de las versiones). Por lo que tuve que encontrar otra aplicación. La aplicación que recomiendo es “PDF-XChange Viewer” tiene una versión pro (de pago) y una free. Para lo que necesitaba con la gratis me bastaba. Lo instalas y abres el documento abriendo primero el programa y luego yendo a buscar el archivo.

Espero que haya servido! :)

Arreglando el wifi después de actualizar a Lubuntu 14.04 LTS

Como ya comenté el otro día la actualización de Lubuntu 14.04 me rompió algunas configuraciones. A parte del teclado me rompió la recepción del señal de wifi. Me hizo desaparecer el gestor de la red (Network Manager).

Para hacerlo funcionar manualmente debemos usar el siguiente comando en la consola:

nm-applet

Pero para solucionarlo de forma permanente tendremos que ir al menú de Lubuntu luego preferencias y la opción de “Aplicationes por defecto para LXSession” (Default applications for LXSession). Una vez allí debereis escoger la pestaña Autostart y luego debajo de “aplicaciones manuales en autostart” (Manual autostarted applications) escribir “nm-applet” y darle al botón de “+ añadir” a su derecha. Para variar podéis reiniciar para ver que tiene efecto.

Arreglando el layout del teclado después de actualizar a Lubuntu 14.04 LTS

Si es que no aprendo. No es la primera vez que me pasa, las actualizaciones de Lubuntu siempre me crujen un par de configuraciones. Esta vez he tenido que arreglar el layout del teclado porque se me había cambiado al inglés y claro no hay Ñ ni acentos.

Para arreglar el teclado uno tiene que ir al menú principal, luego a preferencias y allí escoger “métodos de entrada de teclado” (keyboard input methods).

En la ventana que se nos abre seleccionaremos la pestaña “método de entrada” (input method). En la nueva pestaña seleccionaremos para “seleccionar un nuevo método de entrada” (select an input method ) y allí “mostraremos todos los métodos de entrada” (show all input methos).

En mi caso escogí el catalán y le daremos a añadir. Finalmente marcaremos el check box de “personalizar los métodos de entrada” (tick costumized input methods) y reiniciaremos para que los cambios tengan efecto.

Como ejecutar una tarea periódicamente en Ubuntu (Linux)

Esta programación periódica de tareas no sirve solamente para el uso en el ordenador personal, si no que también nos puede ser útil en el servidor. Estas tareas consisten en trabajos que el ordenador tiene que realizar cada determinado periodo de tiempo sin interferir con la UI.

Para conseguir tal objetivo todas las distribuciones Linux (incluyendo Ubuntu), y otros sistemas operativos basados en Unix, nos brindan la posibilidad de usar “Crontab”. El nombre proviene del antiguo dios griego Chronos encargado del tiempo.

Para ver las tareas que tenemos ejecutándose de forma periódica en nuestro sistema podremos usar el comando:

crontab -l

Si queremos modificar el fichero y añadir nuevos cronjobs deberemos usar el comando:

crontab -e

Este comando nos abrirá nuestro editor por defecto (en mi caso vi). Una vez dentro deberemos escribir una linea parecida a:

* * * * * /ruta/al/script.sh

 y si guardamos tal script será ejecutado regularmente en el margen de tiempo indicado. Cada asterisco representa una unidad de tiempo distinta. Ordenada en:

  • minutos ( de 00 a 59)
  • horas (de 0 a 23)
  • día del mes (de 1 a 31)
  • mes (de 1 a 12)
  • día de la semana( de 0 a 6) { Se empieza en domingo = 0 }

Los asteriscos tienen el significado de “todos”. Por lo que en este ejemplo significa que el script se ejecutará todos los minutos de todas las horas, de todos los días, de todos los meses, de todos los días de las semanas.

Para ejecutarlo el viernes a la 1 de la mañana:

0 1 * * 5 /ruta/al/script.sh

Si sólo queremos que se ejecute de lunes a viernes (el guión “-” nos permite indicar intervalos de tiempo):

0 1 * * 1-5 /ruta/al/script.sh

Para ejecutarlo cada diez minutos (las comas concatenan tiempos):

0,10,20,30,40,50 * * * * /ruta/al/script.sh

 pero también:

 */10 * * * * /ruta/al/script.sh

Dónde podemos apreciar porciones, evitándonos el uso de comas.

Los asteriscos, o indicaciones de tiempo, se pueden substituir por palabras protegidas.

@reboot Se ejecuta una vez al arranque
@yearly Se ejecuta una vez al año “0 0 1 1 *”
@annually (lo mismo que @yearly)
@monthly Se ejecuta una vez al mes “0 0 1 * *”
@weekly Se ejecuta una vez a la semana “0 0 * * 0″
@daily Se ejecuta una vez al dia “0 0 * * *”
@midnight (lo mismo que @daily)
@hourly Se ejecuta una vez cada hora “0 * * * *”

 

*/10 * * * * /ruta/al/script.sh >> /var/log/script_output.log 2>&1

 Empezando por el final, “2>&1” significa que tipo de información deseamos guardar. El “1” hace referencia al “standard output” y el “2” referencia a los “standard errors”. En el medio vemos “>>” que con solo una flecha significa que el fichero se sobre escribiría pero como lo que queremos es ir guardándolo todo, deberemos poner las dos flechas para que vaya añadiendo las nuevas lineas al final del documento. Tened en cuenta que si el cronjob lo ejecutas a menudo este fichero puede crecer con bastante velocidad causando problemas. Por lo que si queréis desechar lo que salga del script podéis usar

*/10 * * * * /bin/execute/this/script.sh > /dev/null 2>&1

Dónde “/dev/null” es un agujero negro que descarta toda la información que le llega.

Finalmente si queréis hacer limpieza podéis usar el siguiente comando:

crontab -r

Espero que os haya gustado y os haya servido! :)

Moving averages crossovers

Pues si, me ha dado un poquito por el trading. Pero esto des de hace ya algo de tiempo. Leyendo me gustó este “método” (si se le puede llamar así). Sirve para identificar cada vez que hay un cambio de tendencias. La identificación de estas tendencias es usada por los traders para entrar o salir con sus inversiones (aunque supongo que por los traders simplistas).

main-qimg-97e49d176bd84437847ee2bbf5909646

Como se puede ver en el gráfico se indican los puntos de entrada (compra) y salida (venta) teóricos, cuando las lineas se cruzan. Se pueden dar más propiedades a estas “lineas”. Por ejemplo de puede usar el Exponential Moving Average (EMA) que consiste en darle más peso a los datos recientes que a los pasados. Cuanto más atrás en el pasado estén menos afectarán a las proyecciones del momento. La EMA puede adecuarse a un día y a un año. Cuando la de a largo plazo (inferior) se cruce con la de corto plazo (superior) tocaría comprar. Y al revés, cuando se vuelvan a cruzar tocaría vender.

Siempre para desarrollar teorías de trading tienes que marcarte un límite en el que estás dispuesto a perder. Si mantienes acciones por el mero hecho de que ya has perdido bastante tiene toda la pinta que vas a seguir perdiendo mucho más. Por lo que he visto la mayoría de traders recomiendan algún valor entre 3% y 7 % según el apetito de riesgo que quieras correr.

Cabe tener en cuenta que para repentinas bajadas de precios o cambios continuos puede ocasionar “problemas”.

Vocabulario (en):

Idea (y gráfico):

Disclaimer: No se nada del otro mundo y aun no vivo en las Bahamas.

PD: Recordad que pase lo que pase, aproximadamente se acierta la mitad de las veces (sube/baja).

Instalar MongoDB en Ubuntu

Uno de los propósitos de año nuevo, como ya visteis, ya me he puesto manos a la obra en aprender MongoDB. Para esto necesito tenerlo instalado en el ordenador (con SO Ubuntu) para poder trastear. Así que al turrón!

Primero de todo MongoDB nos recomienda importar la “public key” usada por el gestor de paquetes.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Luego crearemos una lista en un fichero para MongoDB

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

Seguidamente actualizaremos la base local de paquetes con:

sudo apt-get update

Finalmente instalaremos la última versión estable de MongoDB

sudo apt-get install -y mongodb-org

Y así se instala MongoDB en nuestro ordenador local con Ubuntu! :)

Para iniciar MongoDB tendremos que ejecutar en la consola “mongod”. Pero para acceder a la consola y poder ejecutar queries en la base de datos tendremos que usar el comando “mongo”.

Bonus: Para los curiosos, la versión de 32bits permite un límite teórico de 4,3GB de datos (2^32). Teniendo en cuenta padding, espacios vacíos y otras ineficiencias la empresa estima que el espacio disponible para datos es de entre 2GB y 4GB.

Revisión de los propósitos del 2014

Como cada año, toca la revisión de los objetivos que me puse a principios de año. El post que hice el año pasado lo podéis encontrar aquí. Para los que queráis saber mis objetivos para el año que viene tendréis que esperar algunos días aun 😛

Profesional (y formación):

  1. Sacarme el nivel B2 de alemán => No conseguido :( A pesar de que asistí a clases de alemán del B2 ciertamente fue algo meramente recreativo y no considero que tenga el nivel tampoco.
  2. Sacarme el C1 de inglés en exámenes oficiales => La suerte ya está echada, hice el examen y estoy a la expectativa de la nota. Conseguido!
  3. Terminar la carrera. Todas las asignaturas y el PFC (Proyecto Final de Carrera) => Conseguido! Hacerlo lo he hecho todo, aunque por estrategia no doy la carrera por terminada y así poder hacer otro Erasmus (aumentando mis probabilidades de entrar en la universidad que quiero para el máster).
  4. Asistir a un mínimo de 12 eventos en Múnich => No conseguido. Ciertamente lo miré un par de veces pero al ser en alemán me frena bastante.
  5. Desarrollar alguna de mis ideas multimillonarias => No conseguido, simplemente ni se me pasó por la cabeza.
  6. Empezar a trabajar, encontrar un trabajo más o menos serio y remunerado. A ser posible en una startup => Conseguido! Empecé a trabajar en una startup de Wayra. El ambiente es muy relajado, los compañeros de trabajo muy amables y los horarios muy flexibles (todo en uno! :D).

Personal:

  1. Conocer a 12 personas alemanas de Múnich => Ni de coña, finalmente solo se ha quedado en una. La verdad es que no le puse mucho empeño y no conocí demasiadas personas solas.
  2. Escribir un post cada semana en este blog => Ni de coña. Durante el PFC terminé bastante quemado y dejé de escribir una temporada.
  3. Tirarme en paracaídas => Nope, sinceramente más allá de la idea no puse los medios para conseguirla. Me pilla bastante lejos e ir para no poder saltar da como un poco de palete.
  4. Leer 12 libros => Si! de forma más o menos regular pero si que los he leído. Aunque  no todos merecen reviews en este blog.
  5. Visitar Suiza y Liechtenstein => Nope, casi ni pensamiento de eso.
  6. Correr una Maratón sub 3.30h => No, cuando tuve la oportunidad me lesioné y perdí el físico sin llegar a estar funcional para el esperado día.

Propósitos extras:

  1. Aprender a hacer surf => No conseguido :( Me surgió la oportunidad pero no el tiempo. El PFC se me comió literalmente todo el verano.
  2. Sacarme algún título de escalada o practicarla de forma más o menos regular => Ni si quiera se me pasó por la cabeza.
  3. Esquiar en los Alpes => Conseguido! :) Fui a esquiar a Garmisch-Partenkirchen, a pesar de que el tiempo y la nieve no fueron idóneos me lo pasé  muy bien. Luego fui a Wipptal dónde el tiempo y la nieve fueron mejores.
  4. Ir al carnaval de Köln (Colonia) => No conseguido, esto tiene que ver con la esquiada. Tuve que escoger y me quedé con ir a esquiar por proximidad.
  5. Conseguir monetizar de algún modo el proyecto mencionado en el apartado profesional. => Lo dicho no hice nada.
  6. Ir por St. Patrick (17 marzo) a Irlanda y beber cerveza y de paso aprovechar para visitar Irlanda => No conseguido, supongo que ya lo sabía desde el momento que lo puse en esta lista. Pero lo celebré en Múnich viendo la cabalgata con su posterior concierto y su cerveza verde 😛
  7. Meditar de forma regular => Conseguido! He meditado un rato cada día antes de ir a dormir y algunas veces durante el día. Y la verdad es que estoy contento con los resultados, ha sido como pretendía.

Lo que no me he propuesto pero he conseguido:

  1. Fui a una flashmob. Concretamente a la no “pants subway ride” en Múnich. Pensaba que me daría vergüenza o pasaría frío (fue en enero) pero ninguna de las dos cosas. Al ser estaciones subterráneas no se pasa frío, y al no ser el único te sientes como más acompañado. Para los que queráis, hay un vídeo en el que por cierto salgo dos veces.
  2. Publiqué un artículo en la revista de la universidadl’Oasi. Esto es algo que quiero hacer desde hace tiempo. Un amigo mio está en la revista (y era el presidente) por lo que aproveché mi Erasmus para escribir dos páginas.
  3. Ayudé con la organización de TEDxTUM. La verdad es que no fue premeditado. Lo vi y decidí apuntarme para ver como funciona des de dentro la organización de este tipo de eventos. La verdad es que nos quedó muy bien, más de lo que cabía esperar.
  4. Fui a una “spartan race (creo que un equivalente es el “Tough Guy Competition” del Gran Bretaña). En este caso consistía en 13km de carrera con 21 obstáculos. Posiblemente uno de los momentos mas duros del año. El reto en si no era correr los 13km, sino los obstáculos que te agotan mucho más físicamente y mentalmente que simplemente correr. Realmente paso mucho tiempo en mi cabeza la posibilidad de abandonar, porqué lo pasé bastante mal. Pero ahora sabiendo que no es santo de mi devoción y estando en la saca, no volveré a participar en nada parecido por lo menos a corto plazo.
  5. He aprendido a bailar salsa, con la tontería al final he hecho un combo de cursos que me ha llevado del nivel principiante al nivel avanzado II. La verdad es que tenia en mente aprender a bailar, se me presentó la oportunidad y la cogí sin dudar y no me arrepiento. Aunque he aprendido que mejor con pareja o alguien con quien ir regularmente.
  6. Conocí Dinamarca en un viaje de cinco días en la capital, Copenhagen.

Sinceramente creo que hay mucho rojo pero creo que las circunstáncialas me han llevado a esto y he conseguido otras metas que ni me había planteado.

Feliz navidad y próspero año nuevo!