R. Chavarria's Blog

Proud of developing software, proud of being an Engineer

Programación reactiva en JavaScript

¿Qué falta en JavaScript para completar el siguiente cuadrante? Para elementos únicos y de forma síncrona, tenemos las variables y las llamadas a los métodos. Para múltiples elementos de forma síncrona, tenemos los arrays. Para elementos únicos, pero asíncronos, las promesas (Promise).

Así fue mi Codemotion 2017

¡Vaya! Otro Codemotion más a la colección, y ya van 6, ¡cómo pasa el tiempo! A pesar de ello, sigue siendo el evento técnico más grande de España, creo: dos días a tope, más de 2000 asistentes, cientos de charlas y unos cuantos talleres bastante intensos. Y para que veas que no me invento los datos, echa un vistazo al newsletter que han mandado. Si es que, este año incluso, hasta ha habido eventos dentro del evento.

Muchísimas gracias a los organizadores: Nacho, Abraham y Laura. Y gracias también a los patrocinadores y voluntarios, que con todo su curro hacen que este pedazo de evento sea posible.

Global day of code retreat 2017

Al igual que el año pasado, he tenido el placer de participar en el Global Day of Code Retreat 2017, un evento sobre programación de intensa práctica, enfocado en los fundamentos del diseño y desarrollo de software. Este año ha habido 136 eventos repartidos por todo el mundo. No he encontrado estadísticas sobre cuantas personas participamos, pero estoy seguro de que con tantos eventos tuvimos que ser miles.

¿Impresiona eh? ¿Te animarás el año que viene? El funcionamiento es sencillo: se trata de resolver el problema del juego de la vida de Conway, donde unas células viven o mueren de acuerdo a una serie de reglas preestablecidas. Siempre se programa por parejas (o tríos), nunca solo. El día está dividido en iteraciones de una duración determinada, y al final de cada iteración hacemos una pequeña retrospectiva. Y así es como fue nuestro día.

Imagen propiedad de Helder, reproducida con su permiso

Elixir: undécimo asalto

Nos acercamos al final y en este asalto aprenderemos qué son las Aplicaciones OTP, aunque en realidad ya hemos estado usando algunas. Aprenderemos cómo mix facilita mucho la tarea y cómo esta herramienta nos permite empaquetar nuestra aplicación para ser distribuida. Aprenderemos a definir el punto de entrada de ejecución y cómo pasar parámetros iniciales. Las aplicaciones, junto con los servidores y supervisores OTP hacen de este framework una herramienta potentísima para desarrollar aplicaciones.

Todo esto, siguiendo el método de aprendizaje con el que comenzé la serie:

  • Aprender lo suficiente para comenzar
  • Experimentar, jugar, buscar puntos desconocidos, hacerse preguntas
  • Aprender lo suficiente para hacer algo de utilidad
  • Enseñar lo aprendido

99 bottles of OOP

de Sandi Metz y Katrina Owen

Por qué lo he leído

No conozco personalmete a ninguna de las 2 autoras, pero soy un fan de Sandi y colaboro en un proyecto open source de Katrina, ¿cómo no iba a leer 99 bottles of OOP?

Ya había leído con anterioridad el libro de Sandi, Programming OODR y me gustó muchísimo, así que este libro prometía. También había visto alguna charla de Katrina sobre refactorizaciones, y me asombraron muchísimo, por su claridad y por su calidad.

Elixir: décimo asalto

En este asalto aprenderemos qué son los Supervisores OTP y cómo se puede crear una estructura jerárquica de ellos de forma que monitoricen nuestros procesos y sean capaz de arrancar nuevos procesos en caso de que alguno de ellos falle. También veremos cómo unos procesos sirven de ayuda para guardar el estado de aquellos procesos que necesitan ser tolerantes a fallos.

Todo esto, siguiendo el método de aprendizaje con el que comenzé la serie:

  • Aprender lo suficiente para comenzar
  • Experimentar, jugar, buscar puntos desconocidos, hacerse preguntas
  • Aprender lo suficiente para hacer algo de utilidad
  • Enseñar lo aprendido

Tests de integración lentos

Es una sensación extraña, pero me pasa a veces. Se supone que las máquinas, los ordenadores, son más rápidos que nosotros haciendo según qué cosas. Aún así, hay muchas veces que me desespero. Seguro que más de una vez te has puesto de los nervios porque tu ordenador tardaba mucho en finalizar una tarea: copiar un fichero, abrir un documento, cargar una página web,… Pues una cosa que me exaspera mientras estoy trabajando es esperar a que los tests terminen de ejecutarse.

El post de hoy va de una historia de abuelo cebolleta: hace un tiempo, tuvimos una discusión en la oficia, dentro del equipo con el que trabajo. Estuvimos discutiendo sobre cómo hacer nuestros tests de integración más rápidos.

Por aquel momento teníamos un gran número de tests de integración, más o menos emparejado con el número de tests unitarios. Bueno, sí, ya empezamos mal. Estoy de acuerdo con la teoría de que es mucho mejor tener una pirámide de tests, no un cucurucho de tests. Pero esa era nuestra realidad. La verdad es que a día de hoy, hemos conseguido tener muchos más tests unitarios que de integración, pero esa es otra historia.

Ready player one

de Ernest Cline

Por qué lo he leído

La primera vez que leí una recomendación sobre el libro fue en Microsiervos. Comentaban que era un libro de ciencia ficción relacionado con los videojuegos con muchísimas referencias a videojuegos de los años 80.

Al principio no estaba seguro si me gustaría o no. Puede que conozca unos cuantos juegos de los 80, pero por aquellos años yo era aún un niño, así que no estaba seguro de que fuera a entender todas esas referencias.

Pero más adelante, los de Microsiervos lo volvieron a recomendar, y un poco después escuché otra recomendación por parte de Kevin Kelly en el podcast de Tim Ferris. Uno no se puede resistir a tantas recomendaciones.

Cómo desplegar una aplicación Elixir/Phoenix en Heroku

Heroku es una plataforma donde los desarrolladores pueden desplegar sus aplicaciones (sobretodo está pensado para aplicaciones web) y hacerlas públicas de forma gratuita o por un pequeño precio. Yo he utilizado a veces este servicio para hacer pruebas con servidores en JavaScript (NodeJS) o PHP, pero también admite muchos otros lenguages de programación: Ruby, Java, Python, Go,…

No es ningún secreto que estoy tonteando con Elixir, y el framework Phoenix es el framework por referencia para crear aplicaciones web en Elixir. Pero ese no es un lenguaje soportado por Heroku, así que parecía un poco complejo poder hacer unas pruebas desplegando una aplicación Elixir/Phoenix en Heroku.

Por suerte, Wendy Smoak escribió un artículo hace un tiempo hablando de esto mismo: Deploying a Phoenix app to Heroku. Dicho artículo tiene licencia Creative Commons CC-BY-NC. Este post no es una traducción en sí, pero como está basado en él me parece justo y obligatorio respetarla. Así que este post está basado en el artículo Deploying a Phoenix app to Heroku, de Wendy Smoak, y también está licenciado bajo la Creative Commons CC-BY-NC, digan lo que digan el resto de posts de este blog.

The nature of software developent

de Ron Jeffries

Por qué lo he leído

Como casi todos los libros, por recomendación. Ví que lo recomendaba Carlos Buenosvinos, y no pude resistirme. Además, el autor es una leyenda viva del desarrollo del software y del manifiesto Agile, así que tenía que ser un libro de aúpa.

¿Un libro que trata sobre la naturaleza de la profesión a la que te dedicas? A leerlo casi, casi, sin pensarlo.