Archivo de la categoría: Eventos

Materiales de la charla sobre desarrollo Full Stack

El pasado 17 de marzo estuve con los chicos del DotNetClub de la UAM hablando sobre desarrollo Full Stack en la Escuela Politécnica Superior.

Desde un punto de vista personal (y sesgado) discutimos la definición de stack, la importancia de conocer las diferentes partes del mismo, los diferentes modos de ver stacks, las piezas móviles con las que nos podemos encontrar, así como diferentes arquitecturas, utilizando comida italiana como ejemplo, raviolli, lasagna, risotto, pizza, panetone…

Las slides de la charla las tienes disponibles en SlideShare y a continuación.

Gracias por asistir!

Anuncios

Estuve en el Lambda World

Escribo estas líneas volviendo en tren desde Cádiz, una ciudad enigmática que me recuerda muchísimo a mi añorada Habana, tal vez porque la segunda se construyera basándose en la primera.

Cádiz, además de ser la ciudad que acogió la firma de la primera Constitución Española en 1812, ha acogido el pasado fin de semana el primer evento internacional de programación funcional celebrado en España, el Lambda World.

En este evento, ponentes de todas partes del mundo han venido a contarnos acerca de características de la programación funcional como mónadas, funciones puras, inmutabilidad, efectos secundarios, o sobre cómo llevar conceptos de programación funcional a programación orientada a objetos.

Para ello, hemos visto ejemplos en lenguajes como F#, C#, Java, Ruby, Swift, y, sobre todo, Scala. He aprendido muchísimo y aquí resumo algunos conceptos que me han llamado la atención y que me toca seguir estudiando.

La inmutabilidad, más complicada pero menos propensa a errores.

En programación orientada a objetos definimos clases con propiedades y comportamiento. Este comportamiento suele implicar un cambio en el estado del objeto.

Sin embargo, es justamente lo que queremos evitar en programación funcional, ya que trabajamos con objetos inmutables, con lo cual una vez creados, no cambia ninguna de sus propiedades.

Esto también se aplica a colecciones, y a los miembros de la misma, con lo cual la acción de añadir un objeto a una colección, o modificar un objeto de la misma requiere crear una nueva colección.

Con estos objetos inmutables lo que conseguimos asegurarnos que su estado no va a cambiar, y que no vamos a tener “sorpresas” cuando pasemos un objeto a un método que de repente modifique alguna de sus propiedades.

Sin embargo, aunque lenguajes como Swift, Scala o F# soportan inmutables por diseño, en el mundo clásico de la orientación a objetos, tanto para Java, C# o Ruby, es justamente al contrario, y queda de nuestra mano utilizar colecciones inmutables y definir manualmente nuestros objetos.

Las funciones puras no generan efectos secundarios, o casi

Otro concepto que se repitió bastante en el evento era el de función pura, que no es más que un método que recibe una entrada y devuelve una salida.

La magia de este concepto es que cuando lo combinamos con los objetos inmutables, conseguimos que para una entrada X tenemos la absoluta seguridad de que la salida será Y, SIEMPRE.

Esto nos permite, entre otras cosas, poder probar de manera rápida nuestras funciones si el lenguaje que estamos utilizando incorpora una consola REPL (Read Evaluate Print Loop), ya que una vez definida la función solamente tenemos que ejecutarla con los valores adecuados.

Los lenguajes funcionales no son algo solamente “académico”

Aunque los conceptos que nos muestren se acerquen bastante más a las matemáticas que a ensamblador, los ejemplos mostrados en aplicaciones móviles, sistemas cliente-servidor, arquitecturas funcionales y videojuegos, me dejaron bastante claro que la programación funcional está aquí para quedarse, y que ya estamos tardando, al menos, en aprender algunos de sus conceptos.

No tengo ni idea de lo que son las monads, creo.

Uno de los conceptos de programación funcional que se me escapa es el de las monads, que al parecer son tipos de datos con propiedades específicas, y uno de los ejemplos que veíamos en el evento era el del monad Either, que tiene dos tipos, Left o Right.

Con este monad podíamos definir el resultado de nuestra función, siendo Left un resultado de éxito, y Right una definición de un error, evitando flujos como captura de excepciones.

Este concepto tiene a su vez conceptos relacionados como monoids o functors… de los cuales tendré que leer, y mucho.

Podemos usar conceptos de programación funcional con lenguajes no puramente funcionales.

Conceptos como funciones puras u objetos inmutables son relativamente fáciles de implementar aunque los lenguajes no lo refuercen nativamente, sin embargo requiere un grado de disciplina mayor.

Sin embargo lenguajes como C# o Java van aportando cada vez más características de la programación funcional a su sintaxis, como las Lambdas y las colecciones inmutables. Aunque no es el escenario ideal para utilizar programación funcional, nos permite usar lo que ya sabemos.

Tenemos muchas maneras de empezar, aunque hay dos muy interesantes:

Por una parte tenemos lenguajes como Scala, en el que podemos desarrollar de la misma manera en la que lo veníamos haciendo hasta ahora, ya que soporta tanto tipos mutables como inmutables, e ir agregando características de la programación funcional a nuestros programas.

Por otra parte tenemos lenguajes F#, que nos permite lanzarnos al vacío, con una sintaxis que nos podría recordar cuando encadenamos la salida de distintos procesos en una shell de unix, que nos permite aprender programación funcional más “pura” y su interoperabilidad con C# nos permite agregar componentes funcionales a nuestro proyecto.

En resumen

Tenemos características como la inmutabilidad y las funciones puras que nos evitan sorpresas en nuestro código, podemos empezar migrando poco a poco a funcional o tirarnos a la piscina con lenguajes que solamente implementan este paradigma, y tenemos algo de soporte en nuestros lenguajes del día a día de algunos conceptos como las lambdas. Ha sido una experiencia muy enriquecedora, y espero veros en la siguiente edición de Lambda World

Vídeo y enlaces del hangout sobre programación funcional

El pasado 11 de marzo tuve la oportunidad de moderar hangout sobre algunas de las ventajas que nos aporta la programación funcional con experiencias en F#, Scala y Clojure con estos cracks

El vídeo del evento está disponible aquí:

Además, compartimos algunos enlaces sobre la diferentes herramientas, y he recopilado estos enlaces en la siguiente lista:

Haskell

F#

Scala

Clojure

La lista está disponible además en github , así que puedes contribuir y agregar tus propios enlaces mediante Pull Requests.

Nos vemos en el siguiente!

Hangout: Programación funcional #hablafuncional

Tengo el placer de invitarte a un nuevo hangout el próximo 11 de Marzo a las 20:00 (GMT+1) donde hablaremos de programación funcional tanto con F# como con otros lenguajes como Scala o Clojure, continuando la conversación de la pasada DotNetSpain Conference.

Esta vez, además, contamos con un panel de auténtico lujo, en el que repite (como no podía ser de otra manera) mi buen amigo Juan Quijano (@jc_quijano) como moderador, además de los siguientes invitados:

  • Alex Casquete (@acasquete): Coordinador del Meetup de F# en Barcelona.
  • Alfonso García (@alfonsogcnunez): Coordinador del Meetup de F# en Madrid.
  • Juanma Hernandez (@gulnor): Desarrollador de software con mucho interés en Clojure.
  • Javi Pacheco (@javielinux): Desarrollador Android y Scala en 47 Degrees.
  • Francisco Díaz (@francisco_dr): Desarrollador Android y Scala en 47 Degrees.
  • Juan Pedro Moreno (@juanpedromoreno): Desarrollador Senior Scala en 47 Degrees.
  • Juan M Gomez (@_jmgomez_): Desarrollador F#.

Durante un par de horas intentaremos responder a las siguientes preguntas (y todas las que tengas a través del hashtag #hablafuncional):

  • ¿Qué aporta (en general) la programación funcional?
  • ¿Cómo podríamos dar nuestros primeros pasos para pensar en funcional?
  • ¿Cuan sencillo resulta interoperar con otras plataformas, C# en el caso de F# y Java en el caso de Scala/Clojure?
  • ¿Qué requisitos adicionales tenemos para agregarlo a nuestro proyecto?

Inscríbete aquí: Programación Funcional con F# – Google Hangouts

Desde aquí un agradecimiento a todos por su interés en participar, a todos los que se han interesado vía Twitter, , en especial a Alex Campos por ponernos en contacto con los chicos de 47 Degrees para dar otra perspectiva a la programación funcional.

Nuevo hangout el próximo 10 de febrero: Experiencias del mundo real con Xamarin

Actualización: Aquí tienes el vídeo del evento:

Vuelven los hangouts en 2015! Tras el parón de navidades y la cuesta de enero volvemos con desarrollo móvil usando C# en otras plataforma no Microsoft. Veremos de primera mano algunas experiencias que han tenido nuestso invitados con proyectos y aplicaciones reales.

Además tenemos la suerte de contar no con uno, sino con dos miembros del equipo de desarrollo de Xamarin para darnos su visión desde el otro lado. Dos horas que seguro que se nos quedan cortas.

La cita es el próximo 10 de febrero a las 20:00 GMT+1 en Google Hangouts: https://plus.google.com/events/c8ojlcgbi8gtsseulj331hpu5eo.

Desarrollo móvil multiplataforma con Xamarin

Contamos con el siguiente panel para el debate:

  • Jose Miguel Torres: Desarrollador en Xamarin
  • Rodrigo Moya: Desarrollador en Xamarin y colaborador del proyecto Gnome
  • Francesc Jaumot: Desarrollador y CEO en Clibb
  • Josue Yeray: Desarrollador independiente y MVP de Microsoft
  • Javier Suarez: Desarrollador independiente y MVP de Microsoft
  • Juan Carlos Quijano: Desarrollador independiente
  • Un servidor, que no se pierde una

En esta ocasión nos acompaña una vez más Syncfusion, así que si vienes puedes llevarte una licencia de uno de sus productos de manera completamente gratuita.
Te esperamos allí!

Si no puedes asistir lo dejaremos grabado en cuanto finalice el evento.

Materiales del evento: “Tres Tecnologías Microsoft que no se dan durante la carrera”

El pasado viernes a la hora de comer pasé una hora con los chicos de UAM.net en la Escuela Politécnica Superior de la UAM hablando sobre las tres tecnologías Microsoft que, a mi entender, no se impartían en la carrera cuando yo era estudiante.

IMG_8990

Concretamente, en esta charla estuvimos hablando de:

  • Windows Phone, Windows 8 y el resto de las plataformas móviles
  • ASP.net MVC, Web API, verbos HTTP, APIs REST y otros lenguajes como Ruby o PHP
  • Características disponibles en Azure y qué otros proveedores nos podemos encontrar en el mercado

El vídeo

Como novedad, esta vez hemos grabado la charla y está disponible en Youtube:

Las slides

Las slides, como siempre, están disponibles a continuación:

El código

El código de los ejemplos utilizados, y que en el caso de la web es el que se despliega directamente a Azure Websites está disponible también en un repositorio de Github: 201501-demo-uam

Finalmente, los enlaces recomendados que estaban al final de la presentación los dejo aquí:

Preparar la charla ha sido un reto muy interesante, ya que era la primera vez que volvía a dar una charla en la escuela después de haber terminado la carrera, así que espero que a los asistentes (y los que la hayáis visto en diferido) os haya gustado.

Desde aquí mi agradecimiento a la organización por la posibilidad de volver a la EPS y la enhorabuena por conseguir mantener a la gente interesada en las tecnologías .NET. Nos vemos en el próximo evento!

Vídeos y material de “Lecciones aprendidas creando una red social” con MadridJS

Este jueves he podido compartir con los chicos de MadridJS así como varios alumnos del programa Ironhack, nuestra experiencia con javascript desarrollando una red social enfocada al desarrollo científico. Durante poco menos de una hora (y luego durante las cañas) repasamos herramientas, metodologías, y pruebas que hacemos en nuestros sistemas, así como las lecciones que hemos aprendido en el camino. En este artículo podrás encontrar el vídeo del evento, las slides de slideshare así como enlaces adicionales de temas que surgieron durante el mismo.

El debate fue muy interesante y personalmente he descubierto un montón de cosas nuevas para estudiar, gracias a todos los asistentes.

Vídeo

Slides

Enlaces adicionales de temas que surgieron en la charla: