Programación

Unix para poetas

Existe una breve obrita, Unix for Poets, que utiliza el análisis cuantitativo de texto como excusa para aprender a manejar una serie de comandos inexcusables de Unix y sus derivados: wc, grep, etc. Se la recomiendo particularmente a aquellos que se compraron una Mac y no saben que cuentan con una terminal decente oculta en alguna parte de su sistema (en serio, los hay: el otro día se la descubrí a una maquera).

Spam 2.0 (increíblemente bien hecho)

Recibí recientemente este correo (con los enlaces que aparecen en él; solo he eliminado el apellido de la remitente): Subject: Carlos - Scala resource Hi Carlos, I was doing some research for our students here at Udemy on people using Scala resources and when I came across your site, saw you were using the tutorial from Wikipedia. We really like that resource, and actually created our own that we think is a perfect supplement!

¿Cómo contar el número de elementos distintos de una lista?

El problema es sencillo: se cuentan y ya. Pero hay quienes tienen cantidades ingentes de elementos que contar. Tantos que por razones de memoria, etc., es inviable hacer lo obvio, es decir, guardar una lista de claves (elementos distintos) y valores (el número de ocurrencias) sumando uno a los últimos cada vez que ocurra una de las primeras. Por ese motivo, existen algoritmos que aproximan el número de elementos distintos de una lista.

APIdays Mediterranea vuelve a Barcelona (la semana que viene)

Los que estéis por allí o tengáis la posibilidad de acudir, sabed: la semana que viene (5, 6 y 7 de mayo de 2015) se celebra una nueva edición de APIdays Mediterránea en Barcelona. Quienes tengáis pensado acudir, podéis beneficiaros de un 30% de descuento si os registráis desde este enlace. Participé en la edición de 2013 en Madrid y me duele no poder asistir este año. Entre otras cosas, por esto.

Restauración de ficheros .bak sin Windows

Tengo un fichero .bak. Un fichero .bak (el mío, al menos) es una copia de seguridad de SQL Server y no hay forma humana de acceder a sus contenidos sin otro SQL Server (que yo sepa). No me preguntéis de dónde lo he sacado. La cuestión es que contiene datos que tengo que leer. Requisito imprescindible para tener un SQL Server es disponer de una máquina con Windows. Pero yo no tengo ninguna.

TelegRam[.]me!

Telegram es un sistema de mensajería por internet similar a Whatsapp, aunque con algunas diferencias notables: No es de Facebook Una vez tienes una cuenta, puedes usarla desde distintos dispositivos (Linux incluido) Tiene menos usuarios Es programable De lo último es ilustración esta “conversación” que tuve con la cuenta @TeleR: Los detalles, aquí. Y el crédito, para Rubén Tobalina.

Y todo ocurre en un abrir y cerrar de ojos

Abres una aplicación en tu móvil que diseñó un programador búlgaro. Ipso facto aparece un insidioso banner de, p.e., Jazztel. ¿Cuáles son los mecanismos que ponen en contacto al búlgaro con Jazztel? ¿De qué manera recibe aquél una compensación de esta? Tradicionalmente, el desarrollador habría hablado con, p.e., Google. Le habría dicho: yo voy a generar “espacios” donde tú vas a poder colgar propaganda a cambio de una cantidad (fija o variable).

evtree: árboles globales

Tengo por delante otro proyecto que tiene mucho de análisis exploratorio de datos. Sospecho que más de un árbol construiré. Los árboles son como la Wikipedia: prácticamente nunca el último pero casi siempre el primer recurso. Esta vez, además, por entretenerme un poco, probaré el paquete [evtree](http://cran.r-project.org/web/packages/evtree/index.html). Aunque no porque espere sorprendentes mejoras con respecto a los tradicionales, ctree y rpart. ¿Qué tiene aquél que los diferencie de los otros dos?

Paralelización en R con snow

Suelo trabajar un servidor con ocho CPUs. Cuando quiero paralelizar código en R, suelo utilizar [parallel::mclapply](https://stat.ethz.ch/R-manual/R-devel/library/parallel/html/mclapply.html) (como aquí). Pero no tengo una máquina. Tengo varias. Y antes, de hecho, muchas. ¿Cómo paralelizar en distintas máquinas? Se puede usar Spark (y SparkR), por ejemplo. Pero una ruta que no había ensayado jamás es la de la vieja escuela, i.e., MPI, snow y demás. Pero si tienes varios servidores corriendo un sistema operativo decente, instalas R y snow (y todo lo que necesites) en todos ellos y configuras los servidores para poder acceder a través de ssh sin contraseña desde uno central, y, entonces, ejecutas

Spark gana la competición Gray Sort de 2014

Esta de hoy es una entrada muy friqui que se sirve de la casi excusa de que los creadores de Apache Spark han ganado la competición Gray Sort de 2014 para recomendar a sus lectores a estar alerta a las novedades que llegan. Todavía colea el siglo XX y todavía pagan dinero por cosas que algún día consideraremos tan entrañables como el ZX Spectrum de 48kB tales como: Colorear casillas en Excel.

Componentes conexas (de grafos) en Spark

Uno de mis últimos pet projects tiene que ver con el análisis de las componentes conexas de unos grafos muy grandes. Como aquí pero con datos de un tamaño muchos órdenes de magnitud mayores. Usando Spark, claro. Y ya que lo cito, aprovecho la ocasión para regalar un consejo a mis lectores más jóvenes: no esperéis a los cuarenta para aprender Scala y Spark. Voy a limitarme a copiar el código para referencia mía y de otros.

Mascotas y rebaños

Muchos cuidamos de nuestro ordenador casi como una mascota: le ponemos un nombre (a menudo escribo desde tiramisu), le hacemos algo de mantenimiento, etc. Hay quienes, incluso, decoran sus máquinas con pegatinas. Pero llega un momento en que hay que comenzar a tratar a las máquinas no tanto como mascotas sino como rebaños. Desde una pantalla aneja a esta en la que escribo estoy manejando un clúster de más de 200 GB y 50 núcleos distribuido en varias máquinas que ni sé dónde están.

En serio con Spark: instalación

Me he puesto en modo estoy serio con Spark. Lo instalé en mi ya manida máquina virtual (voy a subir una nueva versión de ella pronto), pero hoy la voy a instalar en mi portátil. Y con la idea de, en los próximos días, montar un clúster en condiciones. Los pasos son los siguientes: Ir a la página de descargas y seleccionar una versión ya precompilada. Hay varias porque Spark se enlaza con librerías relacionadas con Hadoop (aunque uno puede utilizar Spark perfectamente sin él) y hay varias versiones mutuamente incompatibles de Hadoop.