Agenda
25 Thursday
- 15:00Check-in and credential pickup
- 16:00
Open Space
An Open Space focuses on the collaboration and active participation of the people who participate in the conference, where the agenda and discussion topics are generated and determined by these same people.
Unlike a traditional conference format, where there are predefined presentations, in an Open Space, those who participate have the freedom to propose and lead discussion sessions on relevant topics for each one.
Here the principles of self-management and self-organization prevail.
At the beginning of each session, a physical space is set up with different spaces designated for discussion sessions. The people who participate are then invited to propose topics and create a collaborative agenda. These proposals can be presented in the form of questions, ideas, problems or simply topics of interest.
Once the agenda is set, participants are free to join the sessions that interest them most.
The sessions are usually open and participatory discussions, where the exchange of knowledge, ideas and experiences is encouraged. Multiple sessions can run in parallel, allowing participants to choose the ones that best align with their interests and needs.
In short, an Open Space in the context of software development is a participatory and collaborative event format where attendees set the agenda and lead discussion sessions, promoting collaboration and knowledge sharing among participants.
Track:1- Sandrina Pereira
Accessibility in Javascript Apps
Often we see JavaScript damaging the accessibility of a website. In this workshop, you’ll learn not only how to avoid that, but how to use JS to make your web apps accessible! We will explore real-world scenarios with hands-on exercises. From finding bugs with the keyboard, learning how ARIA works, exploring the Accessibility Tree and even using a Screen Reader. My teaching style is all about practice. The exercises pace will be fast. I don't expect you to complete all the exercises on time. The main goal is to show you new concepts, try them out, make you think about it, and then spend most of the time in Q&A and demos as we go through the materials. All the materials will be available, including the exercises, solutions and specific resources for each topic learned. Let me show you how accessibility doesn't limit your solutions or skills. On the contrary, it will make them more inclusive!
LevelIntermediateLanguage:EnglishTrack:2- Kent Dodds
Advanced React Patterns
Whether it's the dreaded "apropcalypse" of a component with tons of props, or a custom hook with too many options, it's not fun for maintainers or users alike. Inevitably, the incidentally-abstracted "reusable" React hooks and components will ultimately slow you down or be abandoned for duplication. It doesn't have to be like this. At the end of this workshop you'll be able to do all of these things yourself: create components that work together, expose the right level of control and invert control.
LevelIntermediateLanguage:EnglishTrack:3 - 19:00Session completed
26 Friday
- 15:00Check-in and credential pickup
- 16:00
Open Space
An Open Space focuses on the collaboration and active participation of the people who participate in the conference, where the agenda and discussion topics are generated and determined by these same people.
Unlike a traditional conference format, where there are predefined presentations, in an Open Space, those who participate have the freedom to propose and lead discussion sessions on relevant topics for each one.
Here the principles of self-management and self-organization prevail.
At the beginning of each session, a physical space is set up with different spaces designated for discussion sessions. The people who participate are then invited to propose topics and create a collaborative agenda. These proposals can be presented in the form of questions, ideas, problems or simply topics of interest.
Once the agenda is set, participants are free to join the sessions that interest them most.
The sessions are usually open and participatory discussions, where the exchange of knowledge, ideas and experiences is encouraged. Multiple sessions can run in parallel, allowing participants to choose the ones that best align with their interests and needs.
In short, an Open Space in the context of software development is a participatory and collaborative event format where attendees set the agenda and lead discussion sessions, promoting collaboration and knowledge sharing among participants.
Track:1- Sandrina Pereira
Accessibility in Javascript Apps
Often we see JavaScript damaging the accessibility of a website. In this workshop, you’ll learn not only how to avoid that, but how to use JS to make your web apps accessible! We will explore real-world scenarios with hands-on exercises. From finding bugs with the keyboard, learning how ARIA works, exploring the Accessibility Tree and even using a Screen Reader. My teaching style is all about practice. The exercises pace will be fast. I don't expect you to complete all the exercises on time. The main goal is to show you new concepts, try them out, make you think about it, and then spend most of the time in Q&A and demos as we go through the materials. All the materials will be available, including the exercises, solutions and specific resources for each topic learned. Let me show you how accessibility doesn't limit your solutions or skills. On the contrary, it will make them more inclusive!
LevelIntermediateLanguage:EnglishTrack:2- Patty O'Callaghan
Hands-on introduction to TensorFlow.JS
In this workshop we will make two smart webcam applications with pre-trained Machine Learning models that run on the browser, using the most popular Machine Learning framework for Javascript: TensorFlow.js
LevelIntroductionLanguage:EnglishTrack:3 - 19:00Session completed
27 Saturday
- 08:00Check-in and credential pickup
- 08:45Opening ceremony
- 09:00
- Kent Dodds
Making Felix Felicis (Opening Keynote)
Bring your wand and potions ingredients, because we're going to make liquid luck! In my career, I've worked extremely hard, but I've also experienced a lot of what some might call "luck." Some of what I've done is reproduceable, and some of it is not. But I've learned a lot about how to increase my "luck surface area" and then make the most of the opportunities that come my way. In this talk, I'll share the ingredients I've used to make my own luck, and I hope it can help you make yours. Don't forget to bring your spell book!
LevelIntroductionLanguage:EnglishTrack:1 - 10:00
- Tejas Kumar
Zod and TRPC for the Rest of Us
Zod and TRPC have received some attention recently in the world of full-stack Node.js development. This talk explains why, and shows how they might even be better than GraphQL by enabling safe data fetching at scale for our applications.
LevelAdvancedLanguage:EnglishTrack:1- Nataly Rocha
Are promises our only choice?
Promises are the standard approach to handling asynchronous operations in JavaScript and TypeScript. While they are flexible and fun to program in, important downsides make our codebase less maintainable. For instance, errors in a promise are typed as any, they use eager evaluation, and you can completely omit a catch operation for error handling. So there should be something else we can use, shouldn’t it? In this talk, we will be learning how to use functional programming and some alternative asynchronous computations like Tasks, TaskEither, and Futures to show how we can handle side effects and create more robust applications.
LevelIntermediateLanguage:EnglishTrack:2- Matheus Albuquerque
Hydration, Islands, Streaming, Resumability… Me, Oh My!
Our ecosystem can be overwhelming! First, we had the rise of SSR and SSG—and each had its own gigantic pile of frameworks and tools. Then partial hydration enabled us to hydrate only some of our components on the client, which we've seen in React Server Components. But what about islands? Do they relate at all to Streaming SSR? Also, what is resumability, and why do I keep hearing about it? […] Oh, did anyone say rendering on the Edge? Well… There are many approaches out there, and all of them argue that their philosophy is best. In this session, we’ll go over these architecture/rendering patterns, to help shed some light on how some are implemented and the concepts behind them.
LevelIntermediateLanguage:EnglishTrack:3 - 10:45Coffee break
- 11:15
- Roy Derks
GraphQL Explained Through Performance Testing
For many companies, performance is the main reason to go with GraphQL. But is that a valid argument? Often developers compare GraphQL to REST APIs and see the N+1 requests (or over-fetching) as an important reason to go for GraphQL. Let's put that to the test and explore if GraphQL APIs actually can outperform existing REST APIs. But there's much more to GraphQL. In this talk I'll be explaining the key concepts of GraphQL and compare these to REST APIs, by applying performance tests in JavaScript to both.
LevelIntermediateLanguage:EnglishTrack:1- Anna Sala
Storybook, the best friend we all need
As frontend developers, we always have trouble managing, reusing and maintaining UI components. My proposal for this talk is to show "Frontenders" the magic and potential of Storybook library. I will expose the different approaches we can take on when using storybook as well as the many benefits it can have to our day to day work. I hope people can use the information I will share to apply it to their projects even if they were already using storybook before hand.
LevelIntermediateLanguage:EnglishTrack:2- Sylwia Vargas
Running Node.js inside your browser
In this talk, I'd love to talk about pushing the limitations of web development running Node.js inside the browser and how the web dev community used this to make the future happen faster. Let's look at what opportunities are unlocked when you are empowered to think outside of the box of limitations!
LevelIntroductionLanguage:EnglishTrack:3 - 12:15
- Braulio Diez
- Daniel Sánchez
Rerenders vs surgical updates, what's the fuss about?
So far most of the modern frameworks (Angular, Vue, React) has been built on top of following a re-render approach, ... in the last few years, the idea of surgical updates has been gaining traction, and it's been implemented in libraries like Svelte or SolidJs. Why are we so obsessed with re-rendering? What are the benefits of surgical updates? In this talk we are going to compare both approaches and why surgical updates seem to be the future of web development.
LevelIntermediateLanguage:EnglishTrack:1- Erik Rasmussen
Model-Based E2E Testing With State Machines
This talk will demonstrate how to use "model based testing" techniques with @xstate/test to generate your end-to-end tests for you.
LevelIntermediateLanguage:EnglishTrack:2- Concha Asensio
Junior XP: Cómo practicar eXtreme Programming y no morir en el intento.
Es fácil obsesionarse con el framework o lenguaje de programación que se van a convertir en los más demandados, sin valorar en la misma medida las metodologías de trabajo y, como consecuencia, parece que no somos del todo conscientes del impacto que pueden llegar a tener, tanto en el aspecto técnico como en el día a día de nuestra relación con el equipo. En esta sesión trataré de transmitir los beneficios que me ha aportado a mí, como junior, haber comenzado mi camino en el mundo del desarrollo aplicando eXtreme Programming, centrándome en sus valores (comunicación, feedback, simplicidad, coraje y respeto), sus principios y algunas de sus prácticas. La charla estaría orientada o podría ser útil principalmente a personas con poca experiencia profesional, que están interesados en aprender mecánicas ágiles de comunicación y trabajo en equipo, aunque veremos que buena parte del contenido puede aplicarse también a perfiles con más experiencia.
LevelIntroductionLanguage:SpanishTrack:3 - 13:15
Technical round table discussion
LevelIntermediateLanguage:EnglishTrack:1 - 14:00Lunch
- 15:00
- Daniel Ramos
Outside-in TDD con Nestjs
En el mundo del TDD (Test Driven Development) existen dos escuelas, Outside-In e Inside-Out. En esta charla vamos a ver la diferencia entre ambas y cómo podemos usarlas para conseguir un código de mayor calidad, más robusto y otro montón de beneficios. Además aquello de “me funcionó a la primera!” se convertirá en la norma.
LevelAdvancedLanguage:SpanishTrack:1- Jenny Truong
The Unexpected States of Burnout
What does state management and mental health have in common? We tend to think in the moment in life - I'm tired, I'm hungry, I'm burnt out. But we sometimes fail to think about the transitions between the states - how did I become tired, burnt out, and how do I transition to a better state? Then, how do I avoid taking the transitions back to states I don't want to be in? Thinking in terms of states and transitions is a useful mental model not only for software development, but for understanding yourself and having better control of your life.
LevelIntroductionLanguage:EnglishTrack:2- Liran Tal
Char Wars: The Path Traversal Strikes Back (your Node.js apps)
These days of cyber warfare and targeted supply chain attacks on open source packages we developers are more attentive to security vulnerabilities. Yet writing secure code to avoid security vulnerabilities is an entirely different paradigm that needs to be mastered. One such vulnerability is Path Traversal, and while it may sound harmless, it is in fact ubiquitous and presents a significant risk. My session will teach you how path traversal vulnerabilities manifest in everything from code in your own applications to code in dependencies to core modules in the Node.js runtime. Additionally, path traversal vulnerabilities may endanger your local development setup and lead to insecure Node.js applications risking your production environment. Join me to gain a new secure coding skill and learn how to mitigate this set of security vulnerabilities.
LevelIntroductionLanguage:EnglishTrack:3 - 16:00
- David Khourshid
The two types of state management
There are two kinds of state management libraries: easy and simple. Direct and indirect. Quick and maintainable. When you’re quickly prototyping apps or writing robust app logic, which do you choose? Is there a right answer? In this talk, we’ll traverse the evolution of state management, from mutation to statecharts and signals and take a walk through the state-of-the-art state libraries. From state mutation to statecharts, we’ll explore the various ways developers manage state and learn how we can choose the best strategy for efficient, robust, testable state management that satisfies all kinds of use-cases (and edge-cases, too).
LevelIntermediateLanguage:EnglishTrack:1- Jorge Aguiar Martin
Mejorando nuestros test con aserciones sobre nuestro dominio
¿Alguna vez has leído un test y has pensado que era muy complejo de entender lo que estabas aseverando? A mi si me ha pasado, y tras tiempo dándole vueltas, he encontrado la forma de que nuestros tests hablen el mismo idioma que nuestro código. Veremos cómo podemos usar Jest, para mejorar las aserciones de nuestros tests creando las nuestras propias
LevelIntermediateLanguage:SpanishTrack:2- Carlos Blé
Testing y Diseño Simple con TypeScript
Cuando empezamos un proyecto nuevo, un greenfield, vamos muy rápido implementando las primeras funcionalidades. Pero esto no dura mucho, al poco tiempo el código acaba degenerando y vamos mucho más lento… En esta charla te cuento algunos principios y técnicas concretas para evitar que esto te suceda.
LevelIntermediateLanguage:SpanishTrack:3 - 16:45Session completed
28 Sunday
- 08:30Check-in and credential pickup
- 09:00
- Aleksandra Sikora
TypeScript Performance: Going Beyond the Surface
Do you ever ponder how to identify and address performance issues in TypeScript to maximize the effectiveness of your code? If so, join us for a talk on the performance of TypeScript and the techniques you can use to get the most out of your code. We'll delve into various ways to debug performance, explore how to leverage the power of the TypeScript compiler to detect potential performance issues and use the profiling tools available to track down the underlying bottlenecks.
LevelIntermediateLanguage:EnglishTrack:1- Nidhi Kumari
Let's Talk Generators and Iterators
Generators and iterators are a fundamental part of Javascript that allow developers to create sequences of values. With the added bonus of being able to handle asyncronous operations in a more intuitive way, they also help to reduce memory usage when working with large data sets. In this talk, we will take a deep dive into understanding generators and iterators and how they can make work easy for you. We will also take a look at the new additions coming to generators via the TC39 iterator helpers proposal which adds improvements like map, filter, reduce to write more terse code when using iterators.
LevelIntermediateLanguage:EnglishTrack:2- Gabriela García
- David Melendez
La Roomba Hacker
Sabías que puedes convertir una roomba normal en un elemento de hardware hacking para realizar mapas de calor wifi? Hemos tomado el control de un robot de limpieza y cambiado su SO para aprovechar funcionalidades ocultas y generar mapas de calor de intensidad de señales WiFi representables en JSON
LevelIntermediateLanguage:SpanishTrack:3 - 10:00
- Fernanda Andrade
Going Beyond the Test Pyramid in TypeScript: Achieving Stronger Code Correctness with More Expressive Types and Powerful Formal Testing
Testing is a crucial step in the software development process, but it's not always enough to ensure code correctness. Even with the most thorough testing or powerful type systems such as TypeScript, bugs can still slip through the cracks and cause problems in production. Formal methods techniques provide an alternative way to formally prove the correctness of a program, which can lead to more robust and reliable software. In this talk, we will explore a variety of formal methods techniques that can be applied to our development process, including refinement types, SAT/SMT solvers, model checking and other techniques of formal testing. We will also look at real-world examples and discuss the trade-offs and challenges of using formal methods in development. This talk is aimed at developers who are interested in taking a more formal approach to software development and want to explore alternative ways of checking code correctness using more expressive types and powerful formal testing.
LevelAdvancedLanguage:EnglishTrack:1- Fran Palacios
Bajando a tierra la web3
En esta charla vamos a explicar cómo hemos llegado hasta la web3, una pequeña introducción a la blockchain de Ethereum, cómo se comunica una aplicación web con un contrato inteligente y mediante qué herramientas (ethers & web3js + React). Finalmente hablaremos acerca de la evolución de esta area y la tendencia de los desarrolladores en la misma. Si te dedicas al frontend o cualquier otra rama del ecosistema de JS/TS y quieres iniciarte en el desarrollo de web3, esta es tu charla!
LevelIntroductionLanguage:SpanishTrack:2- Anna Migas
Web performance optimisations for the harsh conditions
Small web performance tweaks and optimisations might not make a difference for some of the users: there can be physical barriers that will make it impossible to achieve the fast page load and the smooth browsing. After working for over a year on a project directed towards emerging markets (namely Nigeria and Kenya), I came to realise that the popular web performance metrics are all centred around a specific type of person: someone who is used to the fast and reliable connection. But when the conditions are not ideal on daily basis, what are our choices? In my talk we will chat about the improvements that will have real impact on the user experience for users browsing the web in the harsh conditions. I will also share details about the background of users in Africa and how their perception might differ from the users we typically develop for.
LevelIntermediateLanguage:EnglishTrack:3 - 10:45Coffee break
- 11:15
- José Manuel Lucas
Programación funcional en TypeScript con fp-ts
¿Quedaste con ganas de más programación funcional tras mi charla de 2019? ¿Quieres aprender a aplicar conceptos avanzados de FP con TypeScript? ¡Abróchense los cinturones! En esta charla veremos cómo mejorar la seguridad y confianza de nuestro código gracias a la Programación Funcional en TypeScript.
LevelAdvancedLanguage:SpanishTrack:1- Elena Coazzoli
Design systems: when and how to use them to improve the developer experience
Design systems are critical to creating attractive, consistent, and effective websites and applications. It can often be difficult to decide which design system definition is right for a project, especially when working in teams with developers and designers. In this talk, we'll explore how to build a design system based on our needs and goals, and how we can use tools like Figma and Storybook to effectively and collaboratively assemble our design system.
LevelIntroductionLanguage:EnglishTrack:2- Alexandra Spalato
How to build a super fast headless shop using Hydrogen components
Shopify Hydrogen is the super hot new tech stack for building headless Shopify stores. Let’s see how easy and fun is to build our collections, products, and shopping cart functionalities using Hydrogen React components that are ready to be seamlessly integrated, improving the developer’s experience and making it more enjoyable!
LevelIntermediateLanguage:EnglishTrack:3 - 12:15
- Adrián Ferrera
- César Alberca
101. How to build bad Software
There are too many talks talking about what Good™️ Software looks and feels. However, creating Bad™️ Software requires a true level of expertise, dedication and craftsmanship. In this talk we’ll guide you how to truly create deceiving, nay, nefarious code, that’ll make your teammates rethink their career path. After this talk you will come up with new bad habits that you will integrate in your day to day developer life and change how you perceive Software development for the better. Join us and let’s make bad code great again!
LevelIntermediateLanguage:EnglishTrack:1- Adrian Bolonio
Este código es una ruina: Estrategias de accesibilidad web en proyectos no accesibles
Es tu primera semana en tu nuevo trabajo, abres tu editor de código, empiezas a investigar el código del producto y te das cuenta de que nadie ha tenido en cuenta la accesibilidad web y el producto es complemente inaccesible. Empiezas a pensar: ¿Por dónde empezar? ¿Cuál es la mejor estrategia para convertir un producto maduro en un producto accesible? ¿Cómo aplicar los principios de accesibilidad web en un equipo que nunca los tuvo? ¿Qué herramientas uso? En esta charla compartiré consejos, estrategias, y experiencias personales sobre cómo abordar un proyecto que no es accesible y por dónde empezar para conseguir un producto accesible y un equipo comprometido.
LevelIntermediateLanguage:SpanishTrack:2- Azahara Fernández
- Juan M. Rdguez.
¿Necesitas una aplicación web para Industria 4.0? Entonces Angular es tu framework.
Desde hace algunos años parece que la popularidad de Angular en el sector tech ha ido disminuyendo, aunque sigue siendo muy usado en los desarrollos. Puede que te preguntes: ¿por qué? Pues porque entre otras razones, ofrece muchos puntos positivos a la hora de desarrollar ciertos tipos de aplicaciones. En esta charla te contamos que ventajas tiene para un sector tan concreto como el de la industria y que arquitectura base nos gusta a nosotres usar.
LevelIntroductionLanguage:SpanishTrack:3 - 13:15
- Tally Barak
Tale of Two Repos - Strategies for managing monorepos
Not all monorepos are made the same, and not all teams are equal. Managing a monorepo is way more than just "let's select this tool or that tool". It comprises many design decisions that you need to make for the product and for the developers. In this talk, I will go over the main monorepos challenges - packages installation and linking, development and deployment processes - and describe the possibilities that exist for each stage. At the end of the talk, you will have a simple and powerful model that will help you in making the right choice of tools and processes for your monorepo.
LevelAdvancedLanguage:EnglishTrack:1 - 14:00Lunch
- 15:00
- Thomas Steiner
From Web SQL to SQLite implemented in Wasm and backed by the Origin Private File System
The Web SQL Database API, which allows you to store data in a structured manner on the user's computer, was introduced in April 2009 and abandoned in November 2010. While it was implemented in WebKit and remained active in the Blink engine, Gecko never implemented this feature and WebKit removed it in 2019. Web SQL access in insecure contexts is no longer available as of Chromium 110 and the final step will be to remove Web SQL completely in all contexts. In this talk, I will put the focus on a replacement technology that Google is working on with the SQLite community based on SQLite implemented in WebAssembly (Wasm) and backed by the highly performant Origin Private File System (OPFS). I will show how you can make use of this approach and explain how this allows you to fulfill your storage and querying needs on the web.
LevelAdvancedLanguage:EnglishTrack:1 - 15:45Closing ceremony
- 16:15Session completed