En este sitio web utilizamos cookies para mejorar tu experiencia de navegación y entender mejor tua preferencias. Eso nos ayuda a entenderte mejor y a centrarnos en aquellos tópicos que son de tu interés. Por favor, acepta nuestro uso de cookies.
En esta sección se incluyen las principales actividades de formación que he impartido en forma de master classes o talleres en directo de live coding.
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en este taller, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos. Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en este taller, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos. Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en este taller, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos. Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en este taller, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos. Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
La mejor forma de entender las cosas es haciéndoselas uno mismo. Por eso este mes queremos profundizar en el mundo de la programación asincrona y re-implementar nuestro propio modelo de promesas. Durante esta charla enteramente de live coding - 0 slides I Promise - repasaremos los principios de las funciones no bloqueantes, modelo de paso de continuación, los thunks y crearemos nuestra propia abstracción Promesa para explotarla en diferentes contextos, tanto basados en then como y basados en entornos async/await.
Estamos acostumbrados a crear pequeños algorítmos en JavaScript basados en técnicas funcionales. Hemos oido que todo lo que use un buen surtido de métodos map y reduce es digno de ser llamado programación funcional. Pero, ¿de verdad sabemos qué es la programación funcional, cómo son sus arquitecturas, y lo que es más importante, por qué son así? A lo largo de esta charla, enteramente en live coding, explicaremos todos los conceptos de la programación funcional. Desde sus bases más nucleares a concetos más elaborados como combinadores, functores, aplicativos monadas y transductores. Se trata de aprender desde el código a diseñar soluciones y arquitecturas funcionales y de justificar el porqué de cada decisión y restricción de diseño. Tras esta charla tendrás una clara idea del alcance y los objetivos de este paradigma y tendrás un firme criterio para decidir cuándo un determinado problema requiere de una arquitectura funcional.
En esta ocasión, y para ir abriendo boca de lo que viene en la nueva temporada, vamos a repasar el trabajo con los Web Workers, una capacidad de relativa reciente aparición que permite crear hilos de ejecución paralelos al single thread de JavaScript. En la charla repasaremos con sucesivas iteraciones de código cómo se puede ir mejorando la API de acceso a Web Workers desde una arquitectura dirigida por eventos hasta un modelo más imperativo que mejore las capacidades de comunicación y simplifique el trabajo con Web Workers.
La aparición de Web Workers dentro dentro de la Web habilita la posibilidad de crear aplicaciones más potentes y eficaces de lo que venia siendo hasta la fecha. Cada worker se enhebra en un nuevo hilo de programación independiente y ello permite evolucionar JavaScript desde un entorno de ejecución monohilo a uno de ataque concurrente donde múltiples actores cooperan y compiten en ejecución. Pero estas ventajas también conllevan un aumento en la complejidad de soluciones. Ahora, en escenarios concurrentes no solamente es preciso ocuparse de la lógica del problema sino también aquella referida a la sincronización de los trabajadores operando en simultaneidad para garantizar las propiedades de seguridad y vivacidad necesarias. A lo largo de esta charla abordaremos estas preocupaciones y discutiremos como se diseñan adecuadamente programas concurrentes mediante Web Workers. Revisaremos los principios fundamentales de este paradigma y detallaremos con ejemplos en vivo los diferentes modelos de programación concurrente.
Trabajamos casi a diario con JavaScript y nos consideramos ninjas de nuestro lenguaje. Pero, ¿de verdad lo conocemos tanto? Ha llegado el momento de aplicar una mirada distinta a nuestra criatura. Una oportunidad para reflexionar, de manera comparativa frente a otros lenguajes de programación, sobre su modelo conceptual de operación. A lo largo de esta charla explicaremos qué es la conformidad sintáctica y semántica, parcial y total y explicaremos que lugar ocupa JavaScript en esta sopa de conceptos. Explicaremos por qué se trata de un lenguaje dirigido por protocolos y no por contratos, por qué eso importa y qué papel de relevancia juegan esos extraños ciudadanos llamados símbolos de los que nunca hemos llegado a entender su utilidad práctica. A través de ejemplos y live coding, presentaremos mecanismos de programación y patrones de desarrollo que descubrirán muchos lados menos entendidos o conocidos de nuestro lenguaje. Mirar desde otro prisma a aquello que ya conocemos nos ayudará a tener un mayor entendimiento de cómo funciona todo y del sentido de cada pieza dentro de este peculiar puzzle.
Cuando abordamos el diseño de APIs generalmente centramos nuestros esfuerzos en crear soluciones directas fuertemente influenciadas por una estrategia imperativa. O bien nuestros desarrollos siguen una aproximación basada en servicios y acciones o bien consisten en la exploración de un modelo que puede ser consultado y operado. Estos son, sin lugar a dudas, dos de los modelos de APIs más frecuentes en JavaScript. Sin embargo existe una tercera aproximación basada en el diseño de lenguajes que ayudan a crear formas de interacción con nuestras librerías mucho más flexibles y expresivas. Para muchos escenarios, el diseño de APIs dirigidas por el lenguaje resulta la solución ideonea en los procesos de aproximación a ciertos problemas. A lo largo de esta charla queremos hacer una revisión de este modelo de APIs, posicionaremos este tipo de soluciones en el marco general de los diseños de interfaces programáticas, discutiremos su aplicabilidad práctica, comentaremos los distintos tipos de aproximaciones arquitectónicas y sobre todo veremos de manera práctica, a través de una sesión de live coding, como pueden crearse este tipo de APIS aprovechando todas las ventajas y características que, a este respecto, ofrece JavaScript.
Un generador no es un generador. Esta es otra de las grandes mentiras que se cuentan sobre nuestro lenguaje. A través del uso de generadores es posible crear arquitecturas de orquestación donde, por medio de la aplicación de los principios de inversión de control, somos capaces de mover la ejecución de código bajo demanda. El desarrollador implementa un generador que, interpretado en el marco de un orquestador de código, provoca, de manera transparente, un comportamiento potente y flexible en el programa resultante. Si quieres entender en profundidad qué son las arquitecturas de orquestación de código, qué papel juegan los generadores dentro de ellas y cuáles son los falsos mitos que se han levantado en base a este constructo del lenguaje esta es, sin duda alguna, tu charla.
La inversión de control de código es una familia de técnicas de programación que se aplican con asiduidad en los procesos de construcción de software. De hecho en JavaScript a menudo aplicamos técnicas de inversión de control casi de manera continuada y sin advertirlo. Pese a ello esta potente herramienta es un gran desconocido y a menudo está muy mal explicada y aplicada de manera incorrecta en muchos marcos de desarrollo. A lo largo de esta charla explicaremos en qué consisten las técnicas de inversión de control en general y como estas pueden aplicarse para crear arquitecturas flexibles y potentes en JavaScript. Si te gustó la charla sobre orquestación de código esto es algo que no te puedes perder.
El dinamismo y carácter abierto de JavaScript siempre ha sido interpretado negativamente por los detractores como una característica detestable del lenguaje. Sin embargo, ese mismo espirito, pensado en positivo invita a hacer una revisitación de conceptos acerca de las posibilidades de desarrollo del paradigma en términos de la crecían de arquitecturas plásticas, dinámicas y evolutivas. A lo largo de esta charla, describiremos que son las arquitecturas adaptativas, como deben diseñarse y que oportunidades diferenciales ofrecen en relación a las arquitecturas SOLIDas más convencionales. Y descubriremos cómo los mecanismos de JavaScript ofrecen oportunidades increíbles de construcción en este sentido. Una oportunidad imprescindible de redescubrir el lenguaje.
Seguro que te suena esta historia. Mil veces te los han contado y mil veces te has quedado muy frio. Los 5 principios de diseño de las arquitecturas solidas propios de la orientación a objetos son un punto de guía importante a la hora de realizar diseños correctos dentro de este paradigma y son punto fijo de paso para entender como encajan las piezas. Si tienes esa sensación de que esto es sólo literatura, tranquilo no eres el único. Tampoco nada de esto es culpa tuya. Los principios SOLID son habitualmente mal entendidos y han sido con frecuencia evangelizados con errores e imprecisiones incluso en ocasiones descritos como directrices validas fuera del paradigma. Lo que encontraras en esta charla es una revisión a lo que és la orientación a objetos, una reflexión de cómo debe pensarse dentro de este paradigma y una descripción detallada y práctica de cada uno de sus principios fundacionales. Explicaremos cada uno de ellos poniendo ejemplos de dónde y cómo de aplican dentro del código en JavaScript y usaremos contraejemplos para ponerlos en valor y demostrar qué ocurre cuando se violan. Esta es una de esas pocas charlas que no caduca y que amuebla bien la cabeza.
Frecuentemente, cuando pensamos en la programación funcional caemos en el error de pensar en que programar de acuerdo a estos principios, consiste básicamente en utilizar algunas primitivas centradas en operaciones sobre listas. Sin embargo, la programación funcional va mucho más allá de eso. Se trata de crear una única función que responda a nuestro problema por complejo que este sea mediante de la integración compositiva de otras funciones. En un paradigma donde el concepto de instrucción, sentencia u orden de ejecución carece de sentido, a veces los esfuerzos de desarrollo pueden ser complejos pero hay multitud de escenarios donde este modelo de programación resulta muy ventajoso. A lo largo de este taller describiremos cuál es el camino de la programación funcional desde sus orígenes inicios hasta los puntos más intrincados de un estilo declarativo. JavaScript será nuestro gran aliado para recorrer este camino.
Seguro que te suena esta historia. Mil veces te los han contado y mil veces te has quedado muy frio. Los 5 principios de diseño de las arquitecturas solidas propios de la orientación a objetos son un punto de guía importante a la hora de realizar diseños correctos dentro de este paradigma y son punto fijo de paso para entender como encajan las piezas. Si tienes esa sensación de que esto es sólo literatura, tranquilo no eres el único. Tampoco nada de esto es culpa tuya. Los principios SOLID son habitualmente mal entendidos y han sido con frecuencia evangelizados con errores e imprecisiones incluso en ocasiones descritos como directrices validas fuera del paradigma. Lo que encontraras en esta charla es una revisión a lo que és la orientación a objetos, una reflexión de cómo debe pensarse dentro de este paradigma y una descripción detallada y práctica de cada uno de sus principios fundacionales. Explicaremos cada uno de ellos poniendo ejemplos de dónde y cómo de aplican dentro del código en JavaScript y usaremos contraejemplos para ponerlos en valor y demostrar qué ocurre cuando se violan. Esta es una de esas pocas charlas que no caduca y que amuebla bien la cabeza.
Las arquitecturas reactivas son una solución de rabiosa actualidad en nuestros dias. Tanto en el lado del cliente como del servidor aparecen innumerables situaciones en las que debemos desarrollar una aproximación basada en la respuesta reactiva a cambios ambientales. En la sesión anterior ya prestamos especial atención a modelos en boga en los frameworks de front. Hablamos del modelo de notificaciones, señales y enlace de datos y extendimos esa descripción a los modelos de mensajería que ofrecen mecanismos interesantes de respuesta reactiva desacoplada. Pero sin lugar a dudas, lo que es una solución verdaderamente atractiva e intersante es el uso de Streams. No solamente porque su aplicación resulta transversal en todo el perímetro tecnológico de JavaScript, a partir de librerías especificas como BaconJS, RxJS o los Observables de Angular o, de manera nativa , con el uso de las API reactivas de Node o la W3C. Los stream son muy intersantes por toda la miriada de patrones de diseño reactivo que es posible articular para crear, de manera sencilla, modelos de respuesta complejos y elaborados. Pocas veces hay oportunidad de contar estas cosas de manera minuciosa y detallada. Esta es sin lugar a dudas una charla que no te deberías perder para cargar tu caja de herramientas de técnicas interesantes.