Crea un negocio con alma budista, que tu declaración de intenciones sea Zen

Kickbox es una mini-guia, ofrecida por Adobe, bastante intuitiva sobre el método que usan para incorporar la innovación en sus oficinas. Para los interesados decir que es bastante simple pero bueno echarle un vistazo rápido.

El paso que me ha parecido más curioso es el del “Zen statement”. Su función es crear una declaración especifica, clara y concisa evitando todas las palabras con buzz (e.g. cutting-edge tech). Hecha bien la declaración puede ser una frase killer. La estructura de la frase es:

Mi idea es…

… un {producto/servicio descripción} para {target} que {valor principal} permitiendo {beneficios principales} a diferencia de {alternativas existentes}.

Ahora un ejemplo concreto para dejarlo más claro:

Mi idea es…

…un reproductor de musica potable para amantes de la musica que reproduce archivos musicales sin pérdidas de calidad permitiendo una definición extrema a diferencia de los iPods y otros reproductores de archivos comprimidos.

Esta es la idea del Zen statement. Vamos a desmenuzar un poquito los diferentes puntos.

  1. Define el producto o servicio: Que es tu producto en pocas palabras?
  2. Define tu consumidor target: Aunque creas que engloba a muchos trata de definir consumidores o empresas concretas. Mejor empezar con un target definido e ir ampliándolo.
  3. Define el valor clave: Piensa des del punto de vista del usuario, no tiene porque ser una funcionalidad o un beneficio.
  4. Define el beneficio más importante de tu producto: Que es lo que ofreces que es novedoso y útil?
  5. Nombra das alternativas más similares a tu idea: Que ofrecen tus competidores para suplir esta demanda?

Recuerda, aunque esto te pueda parecer una chorrada sirve para echarle el foco y tener claro el camino des del principio además de poder hacer un pitch en 5 segundos a cualquiera en cualquier situación.

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.