Software Crafters Barcelona is a two day event which aims to attract and connect software development professionals, who feel passion for their work and share the values and principles of the Crafters movement.

Saturday 29th September 2018

10:00 A cowgirl journey
Talk by Meritxell Calvo in Track 1 Apiumhub (55 minutes)

Hace 11 años que me embarqué en la profesión del desarrollo del software. Mis botas están sucias y mi caballo cansado.  Es el momento de hacer un alto en el camino, descansar en la taberna e intercambiar experiencias y aprendizajes con otros vaqueros.

Todo lo que podría salir mal, ha salido mal con D3 y grafos
Talk by Karina Guzmán in Track 2 (55 minutes)

En mi primer gran proyecto de visualización y de empezar desde cero con tecnologías y herramientas de front y diseño web, os voy a contar hasta qué punto son llevaderas las librerías más utilizadas en visualización como D3.js, su potencial, y todos los errores frecuentes en los que nos tropezamos varias veces. Todo esto y mucho, mucho Javascript por todos lados, cómo puede salvarte, cómo puede bloquearte y más porque la visualización es un campo poco explotado aún pero que será fundamental en el futuro de la analítica de datos.

Automatiza y vencerás!
Talk by David Antón Lou in Track 3 (55 minutes)

La automatización es una tarea muy importante en el flujo del desarrollo de software, pero ¿sabemos cuando debemos aplicarla? ¿que beneficios podemos obtener? Estamos acostumbrados a aplicar buenas prácticas en el código y en los tests, pero muchas veces dejamos en un segundo plano la automatización de ciertas tareas y las cuales afectan directamente a nuestra productividad. En esta charla hablaré de diversos aspectos que considero importantes a la hora de automatizar y algunos de los procesos que utilizo en mi día a día, como herramientas de generación automática de código, automatización de despliegues, automatización de tests utilizando contenedores(Docker-in-Docker vs Docker-outside-Docker) y bots para gestión operacional desde herramientas de mensajería(ejemplo práctico utilizando Hubot de github para ChatOps)

Continuous Deployment With Jenkins X And Kubernetes
Talk by Viktor Farcic in Track 4 (English) (55 minutes)

Jenkins X, an open source project introduced to the community by CloudBees, enables the rapid creation, delivery and orchestration of cloud-native applications based on continuous delivery best practices and the proven Kubernetes platform. By combining the power of Jenkins, its community and the power of Kubernetes, the Jenkins X project provides a path to the future of continuous delivery for microservices and cloud-native applications. Jenkins X is Jenkins and additional best of breed tools and software for Kubernetes. It provides an interactive command-line interface to instantiate applications, repositories, environments, and pipelines and orchestrate continuous integration and continuous delivery It is the CI/CD solution for development of modern cloud applications on Kubernetes We'll explore some of the features of Jenkins X through a hands-on demo.

11:30 Mide más y sufre menos
Talk by Modesto San Juan in Track 1 Apiumhub (55 minutes)

Muchas veces tomamos decisiones sobre nuestro software basándonos en nuestras impresiones, las opiniones de algún usuario, de algún compañero o, en resumen, aspectos totalmente subjetivos. Lo que no solemos darnos cuenta es de que nuestro software es capaz de proporcionarnos muchísima información que, analizada adecuadamente, nos puede dar la clave para decidir nuestros próximos pasos. El objetivo de esta charla es dar un repaso a varias técnicas que, extrayendo datos de nuestro propio software, nos guiarán de cara a la toma de decisiones durante su desarrollo o mantenimiento. Hablaremos de cómo nos pueden indicar a qué parte de nuestro legacy deberíamos prestar atención, cómo detectar de forma temprana problemas en un despliegue, evitar sustos con la factura de nuestro proveedor de cloud o si tiene sentido abordar esa optimización que tenemos en mente, dedicarle tiempo a esa característica de nuestra aplicación o cómo mejorar nuestros sistemas de despliegue.

2
Keep calm and do a great presentation (Workshop)
Workshop by Laura Lacarra Arcos in Track 2 (1 hour, 55 minutes)

When you have to make a presentation, no matter when (on your weeding, work, for fun) you wanna everybody listen to you and empathy with you. You wanna they applause, enjoy and they get your idea, they buy you idea, they believe on you. They trust you! But this is a big deal. What is your idea? What are you going to tell them? How? How! This workshop offers you tricks to deal with it (gif deal with it).

4
Playing with IoT and planes (Workshop)
Workshop by Javier Gómez in Track 3 (55 minutes)

On this workshop, I will show how to set a simple IoT architecture, similar that the one I helped to develop for a global automotive corporation, using Apache Flume as a configurable pipeline. In this case, instead of car data, we'll consume real-time civil aeroplane radio messages. we'll set the smallest architecture to process a real-time streaming of events. From its creation, using MQTT protocol, until its processing with Apache Kafka, HDFS and a live NodeJS reporting system. we'll set up all the pieces of the system, one by one, using docker images. What we'll learn: - Minimal parts that compose an IoT-based architecture. - How to use a new-old player in data ingestion architectures that it's not so widely known: Apache Flume, that will help us to consume, enrich and adapt MQTT messages. We'll give an overall vision of its pipelining capabilities and how could we route messages to the other elements of the system. - Thus, we will see how our messages are sent to Kafka, saved to HDFS and visualised through a NodeJs dashboard. [The workshop will be git-repository guided. So all the initial setup information, steps and exercises will be placed in different branches, to be able to follow the progression even if an exercise wasn't finished]

Communication Antipatterns and where to find them
Talk by Emma Baddeley in Track 4 (English) (55 minutes)

Communication is often recognized as a key value in software projects. Good communication is one of the foundations of the Agile mindset and one of the core values in Extreme Programming. As programmers, we’re used to identifying anti-patterns in our code, and yet at the same time we fail to recognize communication anti-patterns that exist on the teams that we work on, and how they’re impacting our ability to produce software that generates value. In this talk we'll learn to detect communication anti-patterns that can exist on teams, and how they can impact the ability to translate business requirements into implemented features. We'll also explore some strategies and approaches for mitigating and managing these anti-patterns to improve the software development process.

12:30 Acercándonos a la Programación Funcional ? a través de la Arquitectura Hexagonal ?
Talk by Juan Manuel Serrano, Javier Ferrer González in Track 1 Apiumhub (55 minutes)

La programación funcional está repleta de vocablos aparentemente inaprensibles: mónadas, funtores, type classes, tipos algebraicos de datos… Todos estos conceptos de la programación funcional pueden parecer alejados de lo que acostumbramos a usar en el mundo más puramente orientado a objetos. No obstante, ¿qué pasa si ponemos frente a frente ambas arquitecturas y patrones? En esta charla queremos unir las experiencias de Habla Computing con la programación funcional y CodelyTV con Arquitectura Hexagonal para motivar el aprendizaje de patrones y principios traídos de la programación funcional poniéndolos en contexto a nivel de arquitectura. Lo haremos desde un enfoque práctico viendo los paralelismos con los patrones de orientación a objetos y cómo podemos potenciarlos Trataremos temas característicos de la Arquitectura Hexagonal como la definición y separación de capas, la regla de dependencia, y el modelado del dominio para ver qué cosas nos podemos traer de la programación funcional y así enriquecer ese conocimiento existente en la Orientación a Objetos. Luego ya le pondremos nombre y veremos que podemos entender el significado de las mónadas, las type classes y otras técnicas de la programación funcional, a través del papel que juegan en el diseño de una arquitectura hexagonal. ¡Os esperamos!

The Science of Not Estimating
Talk by Anemari Fiser, Javi Sánchez in Track 4 (English) (55 minutes)

Estimates: a specially tricky subject when it comes to Software Development. Estimates are one of the classic project management artifacts and yet they have remained in the backbone of many agile process implementations. In the past years, different voices have questioned the very nature of estimates and the reason why we do them, as the #noestimates movement “explores alternatives to estimates [of time, effort, cost] for making decisions in software development”. To many, this is just another buzzword which replaces things like velocity or story points in Scrum or XP, but we can find its justification in statistical analysis and modelling. The new approach brings us more reliable tools to forecast and predict how much work we can do. This talk will debunk some myths about estimates and will explore in depth the history and implications of #noestimates . We will discover the tools we can use to support this new approach: from a more reliable statistical modelling to Montecarlo forecasting.

15:00
2
Open Space
Workshop by All in Track 1 Apiumhub (1 hour, 55 minutes)

Open Space

17:30
0
Open Space
Workshop by All in Track 1 Apiumhub (55 minutes)

Open Space

Sunday 30th September 2018

10:00
1
Dame tus tipos Pegaso
Talk by Jorge Juan Barroso Carmona in Track 1 Apiumhub (55 minutes)

Desde hace varios meses en los que estamos en Karumi escribiendo código en Kotlin. En estos meses hemos aprendido unas cuantas técnicas y métodos que donde a traves de los tipos reducimos los errores y hacemos el camino del desarrollo más sencillo. Los tipos están de moda y vienen para quedarse. Enseñaremos ejemplos, código, usos y casuísticas que nos hemos encontrado en nuestro desarrollo en backend o Android y como usando la 'mítica armadura tipada' resolvemos problemas clásicos del desarrollo. Además descubriremos que tienen en común Seiya, Kojima y Glovo.

Del CSS semántico a utility-first: nuestro viaje hacia un CSS comprensible y reusable
Talk by Adrià Fontcuberta in Track 2 (55 minutes)

A ver, se puede escribir un CSS mantenible y reusable. ¡En serio! Pero a diferencia de lo que pasa con otros lenguajes de programación(?), las "buenas prácticas" en CSS brillan por su ausencia. Si a esto le sumas desarrollar en una agencia digital, donde cambiamos de contexto diariamente y los proyectos duran lo que duran, puedes imaginarte el drama. En esta charla voy a compartir lo que he aprendido sobre reusabilidad y mantenibilidad (¿es una palabra?) después de 10 años escribiendo CSS. Lo que no nos ha funcionado, lo que nos sigue sin funcionar y lo que nos ha funcionado un poquito. Por ahora.

Texturas
Talk by Beatriz Hernández in Track 3 (55 minutes)

En esta sesión de cretive coding aprenderemos sobre diferentes texturas, pasando por varias geometrías y dimensiones. Las matemáticas serán aliadas en esta sesión y el lenguaje de elección será el JavaScript.

Reactive microsystems
Talk by Ignasi Marimon-Clos in Track 4 (English) (55 minutes)

A lot has been said about splitting the monolith. This talk focuses on what alternatives we have when refactorring each of the splits we take away from the monolith (and how we can use them in the monolith itself). MICROSERVICES is hype, there's a world between mono and micro.

11:30 Culture: engine and stopper of changes
Talk by Pau Trepat in Track 1 Apiumhub (55 minutes)

I do not call into question all of us care about out code and software quality. Often we think about architectures, patterns, techniques... We are worried to show an intention on our code: ""user or customer entity?"", ""create or register method?"". But how many times we though about what culture are promoting in our environment? What dynamics we are generating in our teams? Are we inclusive? Do we promote creativity? In which way? These questions and other can denote which culture is built, consciously or unconsciously. This talk tries to shed light on something that is always there but often is forgotten due to more ""important"" and ""urgent"" things.

Machine Learning para optimizar imágenes
Talk by Joan León in Track 2 (55 minutes)

Como profesionales del desarrollo web, nos procupamos de las buenas prácticas en Javascript y CSS, de la semántica en HTML, de la accesibilidad de nuestro contenido, pero ¿qué pasa con la imágenes? Las imágenes representan hasta el 60% del contenido de los sites, desde julio de 2017 en un site promedio de 3.0Mb, 1.7Mb son imágenes. Ahora que sabemos que deberíamos dedicar tiempo a optimizar las imágenes, veamos los diferentes niveles de optimización, cómo automatizarlos y cómo con la ayuda del Machine Learning conseguir reducir un 15-17% el peso de algunas imágenes. En esta charla veremos herramientas para el análisis de las imágenes, la optimización, la validación (aka Tests) y cómo reducir el peso de alguna imágenes con la ayuda del reconocimiento de objetos con Machine Learning. Un frontend hablando de Machine Learning, ¿qué puede salir mal?

2
Kubeflow: Escalando tus modelos de tensorflow con kubernetes (Workshop)
Workshop by Laura Morillo in Track 3 (1 hour, 55 minutes)

Las herramientas de Machine Learning como TensorFlow están adquiriendo cada vez más peso en la tecnología de hoy en día. Sin embargo, el trabajo no acaba simplemente cuando preparamos un modelo que resuelva nuestro problema. Tenemos que ser capaces de controlar el proceso desde que realizamos el entrenamiento hasta servir nuestros modelos en producción, una tarea que requiere conocimientos de infraestructura. Con kubeflow veremos, cómo aprovechándonos del uso de contenedores, seremos capaces de sacar el máximo partido a los beneficios que nos aporta kubernetes, realizando un despliegue sencillo y escalable de nuestras herramientas.

7
Calisthenics - Smells - SOLID - Cohesion / Cupling connecting the dots
Talk by Pedro Santos in Track 4 (English) (55 minutes)

In this session I will connect design concepts, rules and principles such as DRY, YAGNY, TDA, Object Calisthenics with Code Smells then with SOLID Principles and finally with Cohesion / Coupling explore relations and connections, origins. By the end of this session, attendees should understand the relationships between these concepts and where they originate.

12:30 Serverless Programming for implementing Active Security in a microservices world
Talk by Néstor Salceda in Track 1 Apiumhub (55 minutes)

Woah! We have our Kubernetes cluster deployed and ready to manage or fleet of containers. And is awesome, we can scale them automatically! But, but... WTF?! What does it mean this message about ""File below a known binary directory opened for writing""? Which container opened a file under /bin to write in among the other 9813 containers in my cluster? When you are operating a cluster with several pods and nodes, finding the pod which originates the alert may be difficult. We also need to react quickly to a security issue, the faster we react to the issue the better to avoid greater damage. In this talk we are going to show how to implement Active Security step by step, using Open Source Software for implementing Serverless architecture in Kubernetes and Cloud Native tools. We will do a little demo covering the following topics: - Exploit an application and detecting security threats with Falco - Learn a Pub/Sub implementation using NATS as transport layer - Real time reactions deployed as FaaS with Kubeless - Network Isolation with Kubernetes Network Policy and Calico

Spending $34.66 for saving $150,000.00 a year in AWS
Talk by Ferran Grau Horta in Track 2 (55 minutes)

The cloud can be a chipper solution or the most expensive place you can find. In our trip to the cloud in Schibsted Spain we let a great number of unused resources that nobody clean and increase the monthly bill. This talk show how we are dealing with an specific case, the unused EBS volumes cleaning, creating automatons using and contributing to open source tools like Cloud Custodian, and how we manage it for a great number of AWS accounts with Datadog, Slack, AWS stack-sets and pushing the AWS lambdas to the limit with multithreading.

Developer Responsibility Principle
Talk by Paula Julve Andía in Track 4 (English) (55 minutes)

Have you ever thought about the legal implications of the software you write? Did you ever even consider that you could actually go to jail for it? Crazy as it may sound, it has already happened. Here we'll reflect a bit on recent precedents, and we'll review testing as an ethical approach to developing software and how to prevent your software to take you places you definitely did not want to go to.

15:00
1
MVP & FRP for a controllerless architecture
Talk by Ekaterina Novoseltseva in Track 1 Apiumhub (55 minutes)

Historically, little attention has been given to front-end architecture. Right now, there are very few references regarding this topic and therefore I decided to start thinking about this topic. What we try to achieve with a good software architecture is to improve the architectural qualities of the systems on which we work, such as: modularity, sturdiness, expressivity,etc. How were things a few years ago? What does a good software architecture bring us? And answers to many other questions you will find in this talk.

Retos en el desarrollo de un videojuego HTML5 para una principiante
Talk by Aryadna García Marsá in Track 2 (55 minutes)

En esta charla voy a hablar de los problemas que me he encontrado en el desarrollo de un videojuego estilo rpgmaker en HTML5. Hablaré sobre las ventajas e inconvenientes de crear un juego web y las distintas soluciones que se pueden aplicar.

Cambios en paralelo. Cambios grandes, pasos pequeños (Workshop)
Workshop by Eduardo Ferro Aldama in Track 3 (1 hour, 55 minutes)

Aprende a hacer cualquier cambio grande en tu sistema mediante una secuencia de pasos pequeños de bajo riesgo. Haremos ejemplos sobre refactors grandes de código, BD, arquitectura, performance, etc. Mejora tu habilidad para realizar cambios en paralelo mediante ejercicios y problemas simulados, compartiendo en comunidad tácticas y estrategias para realizarlos. Esta habilidad es una de las bases del desarrollo de software ágil, el Continuous Delivery y las arquitecturas Evolutivas.

Kubernetes in Startups vs Enterprise: Using Custom Resources to extend workflow
Talk by Dimitris Kapanidis in Track 4 (English) (55 minutes)

Kubernetes and Containers are taking over the world and it seems that is they fit in every use-case from a small startup to big bank industries. But in reality every environment is unique with it´s own peculiarities. Kubernetes is not the end-game, it´s the platform for platforms. During this talk we´ll discuss about the differences between startups and enterprises and how we can fill the gap integrating inside Kubernetes our custom workflow using Custom Resources and Operators. We´ll do a demo of a Project entity that helps provision namespaces and grants user access to team members. CRDs are a powerful tool for Kubernetes extensibility but with great power comes great responsibility.

16:00 Operational Serverless
Talk by Vicenç García Altés in Track 1 Apiumhub (55 minutes)

Serverless is the new buzzword in the Development world. Lots of people think that it's the best thing since the sliced bread. But it's serverless mature enough to deploy it to production? In this talk we'll try to assess the maturity of the technology following the principles of the DevOps Handbook.

Creating a web browser game with websockets
Talk by Monica Sánchez Calzado in Track 2 (55 minutes)

How I developed Cardbattle, my web browser game, a card game by turns, with php websockets.

2
Istio Service Mesh & pragmatic microservices architecture
Talk by Alex Soto in Track 4 (English) (55 minutes)

As we start to go toward cloud-native infrastructure and build our applications out of microservices, we must fully face the drawbacks and challenges to doing so. Some of these challenges include how to consistently monitor and collect statistics, tracing, and other telemetry, how to add resiliency in the face of unexpected failure, how to do powerful feature routing and much more. Istio and service mesh in general helps developers solve this in a non-invasive way. In this deep-dive, we'll show how you can take advantage of these capabilities in an incremental way. We expect most developers haven't adequately solved for these issues, so we'll take it step by step and build up a strong understanding of Istio, how to get quick wins, and harness its power in you production services architecture.

17:30 Mi Monolito Mola Mucho
Talk by Cristian in Track 1 Apiumhub (55 minutes)

Definitivamente, los monolitos no están de moda. Cada vez cuesta más encontrar empresas que desarrollen sus aplicaciones como un monolito. Lo que es peor, es que las que sí lo han hecho quieren migrar hacia arquitecturas distribuidas para solucionar, en teoría, los problemas derivados del monolito. ¿Por qué es eso? ¿Está el monolito acabado? En esta charla veremos que no. Veremos que desarrollar un monolito mantenible, extensible, escalable y testeable es posible y está al alcance de todos. Además, iremos un paso mas allá, y veremos que desarrollar un monolito con unas buenas prácticas puede facilitar mucho el paso a una arquitectura distribuida.

Case Study: Practical tools and strategies for tackling legacy practices and legacy systems in a fast-growing startup
Talk by Alejandro Scandroli in Track 2 (55 minutes)

In this talk you will learn how strategic tools like Wardley Maps, the C4 model and DDD’s strategic design helped a struggling CTO to fight against a crumbling monolith and the organizational practices that allowed its creation. Amongst other things we will cover: - How to plan, communicate and challenge strategies. - Why strategy and thinking strategically is important for software developers. - High-level overview of Simon Brown’s C4 Model. - High-level overview of DDD’s strategic design. - DDD Context Mapping. - High-level overview Wardley Maps. - Wardley Maps: Landscape. - FUN random facts about software development in startups :)

2
Powerpoint karaoke
Talk by Laura Morillo in Track 3 (55 minutes)

Actividad participativa para ayudar a la gente a pasar ub buen rato mejorando sus habilidades de improvisación y de hablar en público.

Timeless Streams
Talk by Javier Salinas Polo in Track 4 (English) (55 minutes)

An overview how design a streams architecture decoupling events from time, building a reactive systems of events. Examples based building a "new banking" the billing engine for credit cards.