Como comentaba en mi último post, para acabar el año, me había propuesto aprender algo nuevo, y había empezado a aprender Elixir. Han pasado casi dos meses desde aquella declaración de intenciones, y de momento sigo con ello. Este post no va a ser técnico, simplemente una forma de revisar el camino que llevo recorrido hasta ahora.
Documentación y materiales de consulta utilizados
Lo primero que hice fue buscar libros sobre Elixir, y en seguida me topé con Programming Elixir, de Dave Thomas. El libro está muy bien, ya que enseña los conceptos más importantes de Elixir, pero sin olvidarse de que es un lenguaje funcional, e intentando que dejemos de pensar en orientación a objetos. Dave explica muy bien, y el libro es bastante entretenido.
Una vez cogidos los conceptos generales, y la sintaxis de Elixir tenía dos opciones: ponerme a programar ejemplos facilones, o intentar hacer algo de verdad. La primera opción no está mal, pero uno aprende de verdad cuando tiene que pelear en las trincheras. Así que decidí seguir aprendiendo Elixir, programando una aplicación web con Phoenix Framework.
Phoenix tiene lo que cualquier programador buscaría en un framework para hacer aplicaciones web, utilizando la potencia de la máquina virtual de Erlang, y la sintaxis de Elixir.
Para aprender este framework me lancé a comprar el libro Programming Phoenix escrito por Chris McCord (creador de Phoenix), Bruce Tate y José Valim (creador de Elixir). El libro está todavía en fase beta, que es una manera de decir que no está terminado, pero que ya lo puedes comprar. La versión actual tiene los capítulos necesarios para hacerse a la idea de como funciona Phoenix. Según van actualizando el contenido, puedes acceder a las nuevas versiones.
Este libro también me ha gustado mucho. Tanto con Programming Elixir como con Programming Phoenix, me he quedado muy impresionado con las posibilidades de la OTP de Erlang. La concurrencia y los sistemas distribuidos parecen un juego de niños, y aun sin entender muchos de los conceptos, parece que ahí debajo se esconde mucha, pero que mucha potencia. Estas características y otras hacen que supuestamente y según los benchmarks Phoenix vuele.
En cuanto a otros materiales de apoyo, la verdad es que Elixir está ganando mucha tracción. Hay un podcast llamado Elixir Fountain con periodicidad más o menos semanal, en el que entrevistan a gente que utiliza Elixir. Entre ellos a Rob Connery, que también está metido en el mundillo de Elixir, y que incluso ha hecho de presentador en alguno de los capítulos del podcast.
En Reddit hay un subreddit bastante activo, y en Stack Overflow se responden bastantes dudas sobre el lenguaje. De hecho yo publiqué allí una pregunta, sobre el rendimiento de mi equipo de desarrollo. Obtuve bastantes comentarios intentando ayudar, entre ellos de José Valim, el creador de Elixir. Que te conteste el creador del lenguaje, es muestra de lo implicada que está la comunidad de Elixir. Por cierto, al final el problema se arregló, aunque no sé cómo.
Entorno de desarrollo
Para programar con Elixir y Phoenix, estoy usando Windows 10. Como editor de texto empecé con GitHub Atom, pero el rendimiento en mi máquina no acababa de convencerme. Aprovechando que Code ya tenía soporte para plugins, y que se podía instalar uno para tener soporte de Elixir, me lancé a probarlo. El rendimiento es bastante mejor, y Code no se me queda colgado, como si me pasaba a menudo con Atom. Eso sí, el soporte a Elixir tiene que mejorar, en especial en vistas que mezclan HTML y código Elixir. Por cierto, siendo programador .NET, echo mucho de menos Razor. La sintaxis basada en los típicos me parece muy confusa.
Phoenix utiliza por defecto PostgreSQL así que lo tengo instalado en mi máquina. Ecto, el “ORM” (entre comillas porque es como mucho un ORM ligero) que utiliza Phoenix, puede funcionar también con MongoDB, pero de momento no lo he probado. Vamos a seguir con bases de datos relacionales, y luego ya veremos.
Phoenix viene por defecto con Brunch para gestionar las dependencias de frontend, pero no es obligatorio usarlo. De hecho yo lo primero que hice fue sustituirlo por JSPM, System.js y Gulp.
Pet Project
Como he comentado antes, la intención es hacer algo que funcione, aunque no le sirva a nadie. De momento los lentos progresos los voy guardando en este un repo de GitHub. No hay mucho que enseñar a día de hoy, pero espero que en un futuro esto sea algo funcional. Y de paso espero aprender muchas cosas para poder contaros aquí.
¿Quiéres que te avisemos cuando se publiquen nuevas entradas en el blog?
Suscríbete por correo electrónico o por RSS