Elasticsearch en cluster

Una prueba de concepto de la réplica de elasticsearch. Con un Logstash cargando datos, tres elasticsearch y un Kibana, todo manejado con docker compose y Kitematic.

El objetivo es comprobar cómo funciona el cluster de elasticsearch en el caso de que se vayan cayendo diferentes servidores o nodos. Se puede ver como el cluster de elasticsearch va respondiendo.

Apache Camel cookbook

Hoy toca el segundo libro sobre apache camel. Sí efectivamente el libro que no me gustó como ya os comenté en la anterior entrada sobre el libro de Apache camel.

Así que tampoco me voy a extender mucho en esta entrada el mejor libro es el de Apache camel in action.

Camel in Action

En esta ocasión os traigo la revisión / opinión de un libro sobre una herramienta de integración de aplicaciones. La herramienta se llama Camel y el libro es Camel in Action, de la editorial Manning.

Es una herramienta que implementa los conocidos patrones de integraciones de aplicaciones. Es bastante interesante porque te evita el lidiar con toda la infraestructura en este tipo de trabajos.

Al final en el proyecto no lo usamos pero me quedó una gran impresión de sus capacidades. Y el libro está realmente bien explicado, pese a estar en inglés.

Reseña libro Clean Code

Hoy os traigo una revisión de un libro sobre programación. No tanto sobre un lenguaje sino sobre la programación en general, buenas prácticas. El libro se llama Clean Code.

Creo que es un libro que todo programador debiera de leer.

Os dejo el vídeo

Espero que os guste

Añadidos a la biblioteca

He actualizado los libros de cabecera con varios ejemplares de la editorial Manning.

Me gusta especialmente la serie In Action. Todos los libros que tengo de esta serie son introductorios pero bastante completos. Escrito de una forma bastante clara, incluso para alguien que su idioma materno no es el Inglés.

Empecé con el libro de Camel in Action  que no he llegado a terminar, pero me sirvió para tener una visión bastante interesante de la herramienta y sus posibilidades.

De este primer libro y la grata impresión que me dejó han ido derivando una serie de compras más.

Cuando te dedicas a temas de tecnología y más si están en el candelero uno de los problemas es que los libros suelen estar un poco desfasados, ya que lleva su tiempo escribirlos. Pero esta editorial tiene un programa que se llama MEAP que es el acrónimo de Manning Early Access Program, que te permite disponer de los libros que están escribiendo, lógicamente sólo los capítulos que tienen escritos. Hay erratas y dibujos hechos a boli pero puedes acceder al contenido existente.

Tengo los libros de Docker in Action y Elasticsearch in Action que me han parecido fantásticos. El libro de Docker In Practice me ha decepcionado un poco, en vez de ser un manual al uso son más bien recetas, de situaciones y cómo resolverlas. Teniendo su equivalente in Action, me parece que no aporta mucho.

Ahora mismo estoy leyendo Unified Log Processing que me está resultando muy interesante, aunque no está más que la mitad de los capítulos. Pero lo que he leído me ha resultado de mucha ayuda.

El siguiente que tengo en la recámara es el de Big Data, que ni he empezado.

Una de las cosas buenas de comprar a la editorial directamente es que suelen hacer descuentos asiduamente, con lo que fácilmente te ahorras un 40%. Esto no sería posible en España, porque está prohibido aplicar un descuento de más del 10%. Lástima por los comerciantes españoles…

Curriculum vs. pasión

Últimamente está muy de moda dentro del agilismo y todas estas prácticas de emprendimiento el recalcar la importancia del la pasión en el trabajo y que el currículum hoy día tiene poca validez, ya que es una herramienta 1.0 del siglo pasado.

A veces hay conceptos que cuesta un poco asimilar y aunque puedes entender que efectivamente es importante la pasión en el trabajo, no es tan fácil entender porque un currículum no es algo tan válido hoy día. Pero últimamente se han dado una serie de circunstancias que me han hecho entender cual es esa diferencia.

Yo, por ejemplo, (y no tiene nada que ver con esas circunstancias que he comentado) en mi currículum puedo poner que he dado formación y es cierto, y no lo hacía mal del todo. Pero es algo que siempre he intentado evitar, porque no me gusta. Es lo que tiene el curriculum que o mientes quitando cosas o si realmente lo que estás diciendo es la realidad, es como su nombre indica, el discurrir de la vida y yo efectivamente… he sido profesor.

Pero por ejemplo sí vemos el blog, este blog que estás leyendo, podrás darte cuenta de que cosas son las que me interesan, porque nadie me obliga a escribir lo que escribo, simplemente escribo lo que me apasiona o lo que me molesta.

Para mi esa es la validez que tiene este blog, es una forma de expresar claramente qué cosas son las que me apasionan y que cosas no. No quiere decir que todo de lo que no escriba aquí lo aborrezca hay cosas que simplemente no tengo tiempo para abordarlas y otras que si que efectivamente pues ni si ni no, las he hecho porque tocaba hacerlas.

MongoWeather: Infraestructura en la nube con RedHat OpenShift

Hoy traigo un videotutorial sobre la infraestructura para la prueba de concepto de tratamiento de datos meteorológicos con MongoDB.

Normalmente las pruebas las suelo realizar sobre máquinas virtuales, para no saturar la máquina física. Pero el otro día hablando con los chicos de RedHat que están en el trabajo me propusieron otra opción. Esta opción consiste en utilizar la nube que tiene RedHat. Al final viene a ser la misma solución salvo que en vez de tener una máquina virtual en mi máquina la tengo en la nube, con lo cual, es accesible para el resto del mundo y ya no necesito sobrecargar mi máquina.

En muy poco tiempo, unos 15 minutos, disponemos de una máquina perfectamente configurada y disponible en Internet que incluye un servidor de aplicaciones, una base de datos mongoDB y una herramienta de administración de esa base de datos en este caso rockMongo.

Todo por supuesto completamente gratis es una máquina pequeñita de un giga y 500 megas de RAM pero para la prueba de concepto es suficiente.

Espero que os guste.

Ampliando horizontes en YouTube

Hoy toca hablar de novedades en este blog, ya que recientemente he iniciado una serie de videotutoriales en mi canal de YouTube .

Desde hace tiempo he sido partidario de utilizar toda la tecnología que tenemos a nuestra mano y de forma accesible para mejorar en nuestra profesión, y uno de los puntos que siempre me ha parecido que tiene mucho margen de mejora es la parte de enseñar a la gente que se va incorporando a la empresa o proyecto.

Cada vez que entra alguien, sobre todo en proyectos grandes con mucha gente hay que andar repitiendo las mismas explicaciones, porque al final todo el mundo tiene básicamente las mismas dudas. Y ahi el hecho de hacer pequeñas grabaciones en plan screencast pueden ser muy útiles.

Así que me he animado a grabar algunas cosas, sobre todo pequeños tutoriales o trucos y además lo he realizado en nuestro idioma, ya que he visto que no hay mucho material en nuestro idioma.

Son grabaciones caseras, en las que la única inversión ha sido un micrófono un poco más profesional que el de la webcam, para que se oiga mejor. Es un micrófono chulísimo y que recoge muy bien la voz.

Espero que os guste y no dudéis en suscribiros al canal de youtube o darle a la manita para arriba si os gustan los videos.

Nuestro rol como clientes y proveedores y sus paradojas

En la vida de cada uno de nosotros en la mayor parte de las situaciones somos consumidores de productos o servicios. Compramos cosas, como ropa, electrónica, etc, o bien contratamos servicios, como por ejemplo la línea telefónica.

Y normalmente somos exigentes con las compañías que nos prestan estos servicios. Es lo normal, pagamos por un producto y servicio y queremos que nos lo presten correctamente. A nadie le gusta quedarse sin cobertura en el teléfono, o que no le funcione el terminal, o que el medico no le diagnostique bien, o un largo etcetera.

A veces lo que nos ocurre como trabajadores es que no nos damos cuenta que en ese momento nosotros somos los prestadores del servicio. Y lógicamente nuestros clientes van a tener un nivel de exigencia similar al que nosotros tendríamos si fuésemos los clientes. Y se nos suele olvidar.

¿Que pensaríamos si estamos reformando la cocina de nuestra casa y el albañil cuando llega la fecha de entrega nos dice que va a tardar más? Lógicamente lo más probable es que no nos parezca bien, no vamos a disponer de nuestra cocina, con el trastorno que nos supone, y encima nos va a costar más, porque obviamente el albañil no va trabajar gratis.

Pero me he encontrado con casos en este sector de la informática en los que gente del equipo se permite plantear que se le pida más tiempo al cliente. Y lo más curioso es que luego cuando las cosas van mal y el cliente te echa se extrañan.

Pero ¿alguien mantendría o volvería a contratar al albañil que obviamente está siendo incapaz de llevar la reforma de la cocina a cabo?.

MongoWeather: Carga de la información

El siguiente paso para poder procesar los datos de la estación meteorológica con mongoDB, después de tener instalada la infraestructura, es proceder a cargar los datos.

El programa de la estación meteorológica permite exportar los datos en formato CSV, es decir separado por comas. Y este formato es soportado por la utilidad de importación de mongoDB.

Con lo que tan solo con un comando debiera de ser suficiente:

mongoimport -d weather -c weather –type csv –file ./EasyWeather.csv –headerline

Con esto le decimos que importe los datos en la base de datos weather y la coleccion es también weather. Así mismo le decimos que el formato es csv, que la primera línea tiene el nombre de los campos y cual es el fichero que queremos importar.

Con esta información nos importará los datos, pero…

Vemos que hay ciertos datos que no los ha importado correctamente.
Podríamos modificarlos en origen con algún conjuro (sed -e ‘s/ /g’ o similar) de Linux, pero vamos a darle una solución con mongoDB.
Esta solución se basa en un cursor, que recorre todos los registros y los va modificando para convertir los String en fechas.
El script es este (está también disponible en la página de GitHub):
Con este cursor creamos un string con el formato adecuado y con el creamos el objeto Date para que mongoDB lo gestione como lo que es.
Seguimos teniendo otro problema, y es que cuando no existen datos la exportación del programa de la estación meteorológica pone un texto “—“. Pero como es una substitución simple, podemos hacerlo con una update más sencilla