Date

September 29-30, 2018

About the event / A place to share knowledge

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.

It aspires to be a meeting place that facilitates the magic of learning, teaching and collaboration, where participants create a gratifying and enriching experience.

It doesn't matter who you are, your knowledge level or your favorite programming language. We encourage you to participate if you:

- are passionate about software.
- want to be involved, or are already involved, in the Software Crafters movement.
- want to share your knowledge, experience, or skills.
- enjoy learning by helping others and believe that sharing is key to your own progress.

In addition to technical contents, it will be fun. There will be beers, and we'll have stimulating conversations late into the night. Software Crafters Barcelona is an opportunity to meet new friends, face new challenges while learning and further improve your skills. Join us!

Schedule

Here you have the PDF version ready to download. It's useful to easily compare the talks taking place on the different tracks.

Registration


Opening


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.

Break


Mide más y sufre menos

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."

Acercándonos a la Programación Funcional 🦄 a través de la Arquitectura Hexagonal 🎯

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!

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


Todo lo que podría salir mal, ha salido mal con D3 y grafos

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.

Break


Keep calm and do a great presentation (Workshop)

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).

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


Automatiza y vencerás!

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).

Break


Playing with IoT and planes (Workshop)

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]

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


Continuous Deployment With Jenkins X And Kubernetes

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.

Break


Communication Antipatterns and where to find them

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.

The Science of Not Estimating

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.

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


Dame tus tipos Pegaso

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.

Break


Culture: engine and stopper of changes

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.

Serverless Programming for implementing Active Security in a microservices world

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

Lunch


MVP & FRP for a controllerless architecture

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.

Operational Serverless

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.

Break


Mi Monolito Mola Mucho

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.

Closing


Registration


Opening


Del CSS semántico a utility-first: nuestro viaje hacia un CSS comprensible y reusable

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.

Break


Machine Learning para optimizar imágenes

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? 🤗

Spending $34.66 for saving $150,000.00 a year in AWS

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.

Lunch


Retos en el desarrollo de un videojuego HTML5 para una principiante

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.

Creating a web browser game with websockets

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

Break


Case Study: Practical tools and strategies for tackling legacy practices and legacy systems in a fast-growing startup

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.
  • - Warley Maps: Landscape.
  • - FUN random facts about software development in startups :)

Closing


Registration


Opening


Texturas

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.

Break


Kubeflow: Escalando tus modelos de tensorflow con kubernetes (Workshop)

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.

Lunch


Cambios en paralelo. Cambios grandes, pasos pequeños (Workshop)

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.

Break


Powerpoint karaoke

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

Closing


Registration


Opening


Reactive microsystems

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.

Break


Calisthenics - Smells - SOLID - Cohesion / Cupling connecting the dots

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.

Developer Responsibility Principle

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.

Lunch


Kubernetes in Startups vs Enterprise: Using Custom Resources to extend workflow

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.

Istio Service Mesh & pragmatic microservices architecture

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.

Break


Timeless Streams

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

Closing


Diversity Matters / We welcome you

In the Software Crafters Barcelona movement brogrammers do not prevail, and year after year the organizational committee becomes more diverse.

We claim the Software Crafter movement as inclusive, because we know that diverse teams develop better software. That's why we want to make a clear invitation to collectives often underrepresented at tech events.

Women, migrants, racialized people, functional diversity folks, LGBTQIA+, etc: not only have we reserved tickets for you, but we also have a designated budget to facilitate your participation in the event. If you have any questions or suggestions, just drop us an email at SoftwareCraftersBcn [at] gmail.com or DM us on Twitter @bcnswcraft. We'll welcome you with open arms!

Sponsorship plans

We really appreciate this year sponsors for their support. Here you have the complete list:

Platinum Sponsor

Gold Sponsors

Silver Sponsors

Bronze Sponsors

Supporters

Code of Conduct

All attendees, speakers, sponsors and volunteers at our conference are required to agree with the following code of conduct. Organizers will enforce this code throughout the event. We are expecting cooperation from all participants to help ensuring a safe environment for everybody.

Location

Transport

The Annual Software Crafters Conference has available a discount for long-medium distance trains (RENFE), if you are interested, please, send us an email and we will send you the discount information.

Hotels

There is an important number of hotels near our event. Furthermore, for a cheap solution airbnb can provide you with a relaxing place to sleep. And if you need free accomodation, we recommend you to check couchsurfing. It’s a welcoming platform and there are a lot of great hosts in Barcelona, we know it from our own experience.