<schedule>
<version>611</version>
<conference>
<acronym>opensouthcode2020</acronym>
<title>Opensouthcode 2020</title>
<start>2020-04-24</start>
<end>2020-04-25</end>
<days>2</days>
<timeslot_duration>00:15</timeslot_duration>
</conference>
<day date='2020-04-24' index='1'>
<room name='Sala 1'>
<event guid='GsEo5wNGt0F-1ZrQhpYBNA' id='522'>
<date>2020-04-24T09:45:00+02:00</date>
<start>09:45</start>
<duration>00:15</duration>
<room>Sala 1</room>
<type>Evento</type>
<language></language>
<slug>522-bienvenida-a-opensouthcode-2020</slug>
<title>Bienvenida a Opensouthcode 2020</title>
<subtitle></subtitle>
<track></track>
<abstract>Bienvenida a Opensouthcode 2020.

Información general sobre el evento.</abstract>
<description>Bienvenida a Opensouthcode 2020.

Información general sobre el evento.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='4'>David Sedeño</person>
</persons>
</event>
<event guid='6zcr__-KQayyoU118GErqg' id='447'>
<date>2020-04-24T10:00:00+02:00</date>
<start>10:00</start>
<duration>00:45</duration>
<room>Sala 1</room>
<type>Charla / Talk</type>
<language></language>
<slug>447-babiaxr-virtual-augmented-reality-data-visualizations-for-the-browser</slug>
<title>BabiaXR: Virtual &amp; Augmented Reality Data Visualizations for the browser</title>
<subtitle></subtitle>
<track>Data Science / BigData</track>
<abstract>There are plenty of tools that can analyze data in many ways, but just a few of them try to visualize this data beyond 2D. This is the goal of BabiaXR, a set of front-end modules for 3D XR (virtual and augmented reality) data visualization. The visualization part of BabiaXR is based on A-Frame and Threejs, providing a collection of components for creating different kinds of visualizations. Among them, there are common ones like bar charts, pie charts, bubbles chart, but now we are moving beyond that, exploring new ways of show data in 3D. For example, we are working on representing software projects using the city metaphor, showing the evolution of the project as the evolution of a city, with building corresponding to the different files. In this talk, I will do an overview of BabiaXR, showing different examples of the power of WebVR and A-Frame with different visualizations. Then, I will analyze a city corresponding to a well-known FOSS project, showing its evolution in different time snapshots and explaining how the code evolves as the city does. Moreover, there will be examples that the public of the room can try on the fly in their devices, and I will bring a set of two different VR devices to show the examples in an immersive environment after the talk. All the data used in this talk was retrieved using GrimoireLab, an open-source toolset for software development analytics.</abstract>
<description>There are plenty of tools that can analyze data in many ways, but just a few of them try to visualize this data beyond 2D. This is the goal of BabiaXR, a set of front-end modules for 3D XR (virtual and augmented reality) data visualization. The visualization part of BabiaXR is based on A-Frame and Threejs, providing a collection of components for creating different kinds of visualizations. Among them, there are common ones like bar charts, pie charts, bubbles chart, but now we are moving beyond that, exploring new ways of show data in 3D. For example, we are working on representing software projects using the city metaphor, showing the evolution of the project as the evolution of a city, with building corresponding to the different files. In this talk, I will do an overview of BabiaXR, showing different examples of the power of WebVR and A-Frame with different visualizations. Then, I will analyze a city corresponding to a well-known FOSS project, showing its evolution in different time snapshots and explaining how the code evolves as the city does. Moreover, there will be examples that the public of the room can try on the fly in their devices, and I will bring a set of two different VR devices to show the examples in an immersive environment after the talk. All the data used in this talk was retrieved using GrimoireLab, an open-source toolset for software development analytics.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1655'>David Moreno Lumbreras</person>
</persons>
</event>
<event guid='lIlwNXajSbzlVXQSzVwmMg' id='457'>
<date>2020-04-24T11:00:00+02:00</date>
<start>11:00</start>
<duration>00:45</duration>
<room>Sala 1</room>
<type>Charla / Talk</type>
<language></language>
<slug>457-machine-learning-desde-mi-local-hasta-el-cliente</slug>
<title>Machine Learning – Desde mi local hasta el cliente</title>
<subtitle>Tenemos un proyecto de machine learning, y en mi local funciona…</subtitle>
<track>Data Science / BigData</track>
<abstract>**¿Cómo podemos llevar una prueba de concepto de machine learning hasta producción?**


En esta charla contaremos la historia de cómo un proyecto de machine learning cayó en manos de un equipo donde ninguno somos data scientists ni sabemos de analytics; y de cómo conseguimos industrializar el proyecto, ponerlo en producción, incluso convivir con su parte de analytics y no morir en el intento.


Veremos cómo llegamos a una solución de industrialización en la nube, y cómo es el tratamiento de datos en un backend Python con analytics embebido.


También mostraremos nuestros procesos de integración y despliegue continuo, así como la monitorización y mejora de performance de los procesos de machine learning.
</abstract>
<description>**¿Cómo podemos llevar una prueba de concepto de machine learning hasta producción?**


En esta charla contaremos la historia de cómo un proyecto de machine learning cayó en manos de un equipo donde ninguno somos data scientists ni sabemos de analytics; y de cómo conseguimos industrializar el proyecto, ponerlo en producción, incluso convivir con su parte de analytics y no morir en el intento.


Veremos cómo llegamos a una solución de industrialización en la nube, y cómo es el tratamiento de datos en un backend Python con analytics embebido.


También mostraremos nuestros procesos de integración y despliegue continuo, así como la monitorización y mejora de performance de los procesos de machine learning.
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1660'>Estefanía Ríos</person>
<person id='1104'>Jose Antonio Dominguez Gonzalez</person>
<person id='983'>José María Palma</person>
</persons>
</event>
<event guid='sKm344ciKk3HGklzDown7w' id='467'>
<date>2020-04-24T12:00:00+02:00</date>
<start>12:00</start>
<duration>00:45</duration>
<room>Sala 1</room>
<type>Charla / Talk</type>
<language></language>
<slug>467-analisis-semantico-de-tweets-mediante-herramientas-open-source</slug>
<title>Análisis Semántico de Tweets  mediante herramientas Open Source</title>
<subtitle></subtitle>
<track>Data Science / BigData</track>
<abstract>En esta charla se proponen diferentes herramientas para la recolección, explotación y análisis de datos procedentes de Twitter utilizando herramientas de código abierto. Se pondrá el foco en el Análisis Semántico de Tweets analizando sus particularidades, casos de uso y problemáticas.</abstract>
<description>En esta charla se proponen diferentes herramientas para la recolección, explotación y análisis de datos procedentes de Twitter utilizando herramientas de código abierto. Se pondrá el foco en el Análisis Semántico de Tweets analizando sus particularidades, casos de uso y problemáticas.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='876'>Rafael Hidalgo Calero</person>
</persons>
</event>
<event guid='aZ1eE3I3hnGHU2xyFTcR4w' id='456'>
<date>2020-04-24T13:00:00+02:00</date>
<start>13:00</start>
<duration>00:45</duration>
<room>Sala 1</room>
<type>Charla / Talk</type>
<language></language>
<slug>456-road-to-production-with-h2o-spark-and-r</slug>
<title>Road to Production with H2O , spark and R</title>
<subtitle>Machine Learning easy</subtitle>
<track>Data Science / BigData</track>
<abstract>
## Qué tenemos
* Grandes volumenes de datos
* Dificultad en poner en producción

## Qué se usa en la industria, problemática

* Lenguajes usados por los científicos de datos. R, python
* Entornos de sistemas no preparados
* Spark, hadoop
* Librerías analíticas de spark


## Posible solución

* Aunar dos mundos. Fácil desarrollo y productivización
* H2o . software libre, basado en java, con apis para R y python y scala
* DS desarrollan modelo en su lenguaje favorito.
* Una vez entrenado, descargar modelo, poner en producción en spark

## Salvar modelo para poner en producción

Guardamos un fichero zip con el modelo y un .jar que será el que nos permitirá ponerlo en producción en un entorno con spark. Ese jar sólo hay que bajarlo una vez.

Había un problema con los modelos de xgboost,puse un issue y lo apañaron

[issue jira](https://0xdata.atlassian.net/browse/PUBDEV-7133?focusedCommentId=55705&amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-55705)



## Turno de los ingenieros de datos

* Con el jar y el modelo salvado se construye una app de spark
* Funcionará sin necesidad de tener h2o ni R instalado en ningún sitio


## Prueba funcional

* Sería añadir el jar cuando se abre la sesión de spark.

En un spark-shell sería algo como esto.

```
~/spark/spark-2.4.0-bin-hadoop2.7/bin/spark-shell  \
--conf spark.driver.memory=&quot;3g&quot;  \
--conf spark.executor.memory=&quot;2g&quot;  \
--conf spark.executor.instances=2  \
--conf spark.executor.cores=2  \
--jars genmodel_xgboost2.jar

``` 


## En spark
```
import _root_.hex.genmodel.GenModel
import _root_.hex.genmodel.easy.{EasyPredictModelWrapper, RowData}
import _root_.hex.genmodel.easy.prediction
import _root_.hex.genmodel.MojoModel
import _root_.hex.genmodel.easy.RowData
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType, DoubleType}


// cargar mi modelo 
val modelPath = &quot;epa_xgboost.zip&quot;

// Cargar datos de test para predecir
val dataPath = &quot;data/epa_test.csv&quot;

// Import data
val epa_origin = spark.read.option(&quot;header&quot;, &quot;true&quot;).
csv(dataPath)

val epa = epa_origin.select(epa_origin.columns.map(c =&gt; col(c).cast(StringType)) : _*)
// Import MOJO model
val mojo = MojoModel.load(modelPath)
```



```


## En spark

```
val easyModel = new EasyPredictModelWrapper( 
                new EasyPredictModelWrapper.Config().
                setModel(mojo).
                setConvertUnknownCategoricalLevelsToNa(true).
                setConvertInvalidNumbersToNa(true))

// -------------

// Convertir  todas las columnas a rowdata
// -------------

val header = epa.columns
// TODO: castear en spark antes

// Predict
val epa_score = epa.map {
  x =&gt;
    val r = new RowData
    header.indices.foreach(idx =&gt; r.put(header(idx), x.getAs[String](idx) ))
    val score = easyModel.predictBinomial(r).classProbabilities
   (x.getAs[String](0),x.getAs[String](1),x.getAs[String](3), score(1))
  }.toDF(&quot;label&quot;,&quot;edad&quot;,&quot;prov&quot;,&quot;predict&quot;)
  
  
epa_score.show(false)
```


## Conclusiones

* En Orange lo hemos probado en caso de uso real
* Uso de h2o junto con spark usando la librería de R `rsparkling`
* Generar aplicación en spark que entrena y predice en distribuido usando `h2o`
* Predicción sobre más de 40 millones de filas y 100 columnas en menos de 10 minutos. Incluyendo lectura de tablas en spark y escribiendo en tabla hive

* Modelos mucho mejores y más rápidos que otras soluciones big data.


## Vamos a las demos

* Ejecutar el ejemplo de esta presentación
* Proyecto gradle para productivizar de verdad. Con IntelliJ IDEA, explicado 
[aquí](https://muestrear-no-es-pecado.netlify.com/2019/03/12/productivizando-modelos-binarios-con-h20/) pero vamos a ver una versión actualizada
* Con datos reales en un cluster grande. Predecir un dataframe de 384 millones de filas
* Informes html de los modelos usando el mojo


## Extra: Entrenamiento en distribuido 

* Entrenamiento distribuido con sparkling-water. En R y en spark-scala



</abstract>
<description>
## Qué tenemos
* Grandes volumenes de datos
* Dificultad en poner en producción

## Qué se usa en la industria, problemática

* Lenguajes usados por los científicos de datos. R, python
* Entornos de sistemas no preparados
* Spark, hadoop
* Librerías analíticas de spark


## Posible solución

* Aunar dos mundos. Fácil desarrollo y productivización
* H2o . software libre, basado en java, con apis para R y python y scala
* DS desarrollan modelo en su lenguaje favorito.
* Una vez entrenado, descargar modelo, poner en producción en spark

## Salvar modelo para poner en producción

Guardamos un fichero zip con el modelo y un .jar que será el que nos permitirá ponerlo en producción en un entorno con spark. Ese jar sólo hay que bajarlo una vez.

Había un problema con los modelos de xgboost,puse un issue y lo apañaron

[issue jira](https://0xdata.atlassian.net/browse/PUBDEV-7133?focusedCommentId=55705&amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-55705)



## Turno de los ingenieros de datos

* Con el jar y el modelo salvado se construye una app de spark
* Funcionará sin necesidad de tener h2o ni R instalado en ningún sitio


## Prueba funcional

* Sería añadir el jar cuando se abre la sesión de spark.

En un spark-shell sería algo como esto.

```
~/spark/spark-2.4.0-bin-hadoop2.7/bin/spark-shell  \
--conf spark.driver.memory=&quot;3g&quot;  \
--conf spark.executor.memory=&quot;2g&quot;  \
--conf spark.executor.instances=2  \
--conf spark.executor.cores=2  \
--jars genmodel_xgboost2.jar

``` 


## En spark
```
import _root_.hex.genmodel.GenModel
import _root_.hex.genmodel.easy.{EasyPredictModelWrapper, RowData}
import _root_.hex.genmodel.easy.prediction
import _root_.hex.genmodel.MojoModel
import _root_.hex.genmodel.easy.RowData
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType, DoubleType}


// cargar mi modelo 
val modelPath = &quot;epa_xgboost.zip&quot;

// Cargar datos de test para predecir
val dataPath = &quot;data/epa_test.csv&quot;

// Import data
val epa_origin = spark.read.option(&quot;header&quot;, &quot;true&quot;).
csv(dataPath)

val epa = epa_origin.select(epa_origin.columns.map(c =&gt; col(c).cast(StringType)) : _*)
// Import MOJO model
val mojo = MojoModel.load(modelPath)
```



```


## En spark

```
val easyModel = new EasyPredictModelWrapper( 
                new EasyPredictModelWrapper.Config().
                setModel(mojo).
                setConvertUnknownCategoricalLevelsToNa(true).
                setConvertInvalidNumbersToNa(true))

// -------------

// Convertir  todas las columnas a rowdata
// -------------

val header = epa.columns
// TODO: castear en spark antes

// Predict
val epa_score = epa.map {
  x =&gt;
    val r = new RowData
    header.indices.foreach(idx =&gt; r.put(header(idx), x.getAs[String](idx) ))
    val score = easyModel.predictBinomial(r).classProbabilities
   (x.getAs[String](0),x.getAs[String](1),x.getAs[String](3), score(1))
  }.toDF(&quot;label&quot;,&quot;edad&quot;,&quot;prov&quot;,&quot;predict&quot;)
  
  
epa_score.show(false)
```


## Conclusiones

* En Orange lo hemos probado en caso de uso real
* Uso de h2o junto con spark usando la librería de R `rsparkling`
* Generar aplicación en spark que entrena y predice en distribuido usando `h2o`
* Predicción sobre más de 40 millones de filas y 100 columnas en menos de 10 minutos. Incluyendo lectura de tablas en spark y escribiendo en tabla hive

* Modelos mucho mejores y más rápidos que otras soluciones big data.


## Vamos a las demos

* Ejecutar el ejemplo de esta presentación
* Proyecto gradle para productivizar de verdad. Con IntelliJ IDEA, explicado 
[aquí](https://muestrear-no-es-pecado.netlify.com/2019/03/12/productivizando-modelos-binarios-con-h20/) pero vamos a ver una versión actualizada
* Con datos reales en un cluster grande. Predecir un dataframe de 384 millones de filas
* Informes html de los modelos usando el mojo


## Extra: Entrenamiento en distribuido 

* Entrenamiento distribuido con sparkling-water. En R y en spark-scala



</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1659'>José Luis Cañadas Reche</person>
<person id='1667'>Sergio</person>
<person id='1666'>julio</person>
</persons>
</event>
<event guid='ukCrDq08ECTsJ1au5Jl22w' id='520'>
<date>2020-04-24T15:30:00+02:00</date>
<start>15:30</start>
<duration>04:00</duration>
<room>Sala 1</room>
<type>Evento</type>
<language></language>
<slug>520-akademy-es</slug>
<title>Akademy-es</title>
<subtitle>Evento de KDE España</subtitle>
<track>Akademy-es</track>
<abstract>Akademy-es es el encuentro anual de desarrolladores, colaboradores y usuarios de KDE en España. Más info en https://www.kde-espana.org/akademy-es-2020

En cuanto estén confirmadas lo añadiremos al programa.</abstract>
<description>Akademy-es es el encuentro anual de desarrolladores, colaboradores y usuarios de KDE en España. Más info en https://www.kde-espana.org/akademy-es-2020

En cuanto estén confirmadas lo añadiremos al programa.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
</persons>
</event>
</room>
<room name='Aula 1'>
<event guid='nXovMxtSyZ02k3GJwJwuLg' id='453'>
<date>2020-04-24T10:00:00+02:00</date>
<start>10:00</start>
<duration>02:00</duration>
<room>Aula 1</room>
<type>Taller / Workshop</type>
<language></language>
<slug>453-react-vs-angular</slug>
<title>React vs Angular</title>
<subtitle>Lo sentimos Vue. No se aceptan remixes</subtitle>
<track>Web</track>
<abstract>¿Es **React** un Framework o es una simple librería para renderizar?
¿Es **Angular** un abusador de la inyección de dependencias y tan “óptimo” como Java?
¿_React-Redux_ por un lado y _Angular-NgRx_ por otro, con _RxJs_ en medio?

Siempre hay distintas formas de hacer una misma cosa, algunas veces es más óptimo elegir unas tecnologías en vez de otras, y, aunque muchos piensen que es más un problema que una solución, el disponer de opciones nos permite adaptarnos mejor.

En este workshop, veremos una pequeña introducción a la historia, evolución y situación actual de React y Angular junto a sus fortalezas, debilidades, semejanzas y diferencias. 

Presentaremos un proyecto común que realizaremos en ambas tecnologías paso a paso, en paralelo, y podremos ver cómo resuelve cada uno los problemas planteados. Jugaremos con el enrutamiento, gestión del estado, gestión de errores, reutilización de componentes, consumo de servicios web, optimización, lazy loading y depuración.

Los asistentes podrán elegir si quieren hacer el proyecto en React o Angular o ambos a la vez, y compartiremos los fuentes de cada paso en **GitHub** para quien se atasque y quiera seguir con cada apartado, poder hacerlo sin problemas.</abstract>
<description>¿Es **React** un Framework o es una simple librería para renderizar?
¿Es **Angular** un abusador de la inyección de dependencias y tan “óptimo” como Java?
¿_React-Redux_ por un lado y _Angular-NgRx_ por otro, con _RxJs_ en medio?

Siempre hay distintas formas de hacer una misma cosa, algunas veces es más óptimo elegir unas tecnologías en vez de otras, y, aunque muchos piensen que es más un problema que una solución, el disponer de opciones nos permite adaptarnos mejor.

En este workshop, veremos una pequeña introducción a la historia, evolución y situación actual de React y Angular junto a sus fortalezas, debilidades, semejanzas y diferencias. 

Presentaremos un proyecto común que realizaremos en ambas tecnologías paso a paso, en paralelo, y podremos ver cómo resuelve cada uno los problemas planteados. Jugaremos con el enrutamiento, gestión del estado, gestión de errores, reutilización de componentes, consumo de servicios web, optimización, lazy loading y depuración.

Los asistentes podrán elegir si quieren hacer el proyecto en React o Angular o ambos a la vez, y compartiremos los fuentes de cada paso en **GitHub** para quien se atasque y quiera seguir con cada apartado, poder hacerlo sin problemas.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1295'>José Antonio Suárez Guerrero</person>
<person id='557'>Fran Pérez Gómez</person>
</persons>
</event>
<event guid='g8kRo9_05vW-5SsZf-mFig' id='465'>
<date>2020-04-24T12:00:00+02:00</date>
<start>12:00</start>
<duration>02:00</duration>
<room>Aula 1</room>
<type>Taller / Workshop</type>
<language></language>
<slug>465-desarrollo-incremental-con-behavioral-programming</slug>
<title>Desarrollo Incremental con Behavioral Programming</title>
<subtitle>Una nueva forma de pensar sobre el software</subtitle>
<track>Development</track>
<abstract>¿Te imaginas que los escenarios de comportamiento (requisitos, casos de uso, etc.) y el código de tu programa pudieran estar alineados?, o incluso ¿que pudieran ser lo mismo?. Esta es la idea que propone el paradigma de &quot;**_behavioral programming_**&quot; [1], propuesto por David Harel y otro colaboradores [2].

El objetivo de este taller es introducir los conceptos de &quot;behavioral programming&quot; por medio de diferentes ejemplos prácticos que nos permitirán comprender el potencial de este innovador enfoque del desarrollo de software.

Demostraremos también cómo estos conceptos pueden aplicarse en el desarrollo de cualquier sistema reactivo para conseguir ventajas únicas como:

  - Añadir y modificar el comportamiento de una aplicación sin necesidad de cambiar directamente, incluso ni leer o comprender, el código existente.
  - Modularizar el software de manera más natural para el desarrollador o el usuario, al alinearse directamente con los requisitos de comportamiento.
  - Desarrollar un sistema en el que nuevos módulos pueden ser añadidos, modificados o eliminados de manera muy flexible para crear nuevas versiones del sistema.

**Referencias**:

* [1] http://www.wisdom.weizmann.ac.il/~bprogram/
* [2] http://www.wisdom.weizmann.ac.il/~amarron/BP%20-%20CACM%20-%20Author%20version.pdf</abstract>
<description>¿Te imaginas que los escenarios de comportamiento (requisitos, casos de uso, etc.) y el código de tu programa pudieran estar alineados?, o incluso ¿que pudieran ser lo mismo?. Esta es la idea que propone el paradigma de &quot;**_behavioral programming_**&quot; [1], propuesto por David Harel y otro colaboradores [2].

El objetivo de este taller es introducir los conceptos de &quot;behavioral programming&quot; por medio de diferentes ejemplos prácticos que nos permitirán comprender el potencial de este innovador enfoque del desarrollo de software.

Demostraremos también cómo estos conceptos pueden aplicarse en el desarrollo de cualquier sistema reactivo para conseguir ventajas únicas como:

  - Añadir y modificar el comportamiento de una aplicación sin necesidad de cambiar directamente, incluso ni leer o comprender, el código existente.
  - Modularizar el software de manera más natural para el desarrollador o el usuario, al alinearse directamente con los requisitos de comportamiento.
  - Desarrollar un sistema en el que nuevos módulos pueden ser añadidos, modificados o eliminados de manera muy flexible para crear nuevas versiones del sistema.

**Referencias**:

* [1] http://www.wisdom.weizmann.ac.il/~bprogram/
* [2] http://www.wisdom.weizmann.ac.il/~amarron/BP%20-%20CACM%20-%20Author%20version.pdf</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1665'>Rafael Luque</person>
<person id='1699'>Francisco Javier Luque Leiva</person>
</persons>
</event>
<event guid='HSdxNY0Vce6rLaDeGnohdA' id='390'>
<date>2020-04-24T15:30:00+02:00</date>
<start>15:30</start>
<duration>02:00</duration>
<room>Aula 1</room>
<type>Taller / Workshop</type>
<language></language>
<slug>390-hands-on-jetpack-compose</slug>
<title>Hands-on Jetpack Compose</title>
<subtitle>The new way to create user interfaces on Android.</subtitle>
<track>Development</track>
<abstract>**Jetpack Compose** is coming and will change the way we develop the UI in *Android*. Learn about this declarative toolkit to develop graphical interfaces in *Kotlin* with less code and faster. In this workshop, you will learn the basic of Compose while we write an App.</abstract>
<description>**Jetpack Compose** is coming and will change the way we develop the UI in *Android*. Learn about this declarative toolkit to develop graphical interfaces in *Kotlin* with less code and faster. In this workshop, you will learn the basic of Compose while we write an App.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1630'>Miguel Angel Ruiz</person>
</persons>
</event>
</room>
<room name='Sala 2'>
<event guid='UdRVf3xGgtcDJ7dqIJXHZg' id='255'>
<date>2020-04-24T10:00:00+02:00</date>
<start>10:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>255-testing-efectivo-en-asp-net-core</slug>
<title>Testing efectivo en ASP Net Core</title>
<subtitle>Testing</subtitle>
<track>Development</track>
<abstract>Desde hace tiempo el mundo del desarrollo se viene culturizando con lo importante que es tener test en nuestras aplicaciones. Aunque la adopción de dicha cultura está costando más de lo deseado debido al coste y al esfuerzo que hay que hacer para llegar a realizarlo, cada día surgen nuevas herramientas y funcionalidades que ayudan a que estos test sean más fáciles de desarrollar y sobre todo de ejecutar. 

Cuando queremos ejecutar un &quot;unit test&quot;, la tarea es sencilla... moqueo una entrada y validamos la salida... hasta ahí genial... peeeeeeeeero, ¿estos test nos aportan valor? ¿Qué pasa si la lógica funciona pero lo que no funciona es la base de datos? Y ¿Si lo que falla realmente es mi API?

Todas estas preguntas y algunas más tienen una fácil respuesta! TEST DE INTEGRACIÓN!

En esta sesión veremos como implementar los test en ASP Net Core y posteriormente como incluirlos en el pipeline de Azure DevOps.</abstract>
<description>Desde hace tiempo el mundo del desarrollo se viene culturizando con lo importante que es tener test en nuestras aplicaciones. Aunque la adopción de dicha cultura está costando más de lo deseado debido al coste y al esfuerzo que hay que hacer para llegar a realizarlo, cada día surgen nuevas herramientas y funcionalidades que ayudan a que estos test sean más fáciles de desarrollar y sobre todo de ejecutar. 

Cuando queremos ejecutar un &quot;unit test&quot;, la tarea es sencilla... moqueo una entrada y validamos la salida... hasta ahí genial... peeeeeeeeero, ¿estos test nos aportan valor? ¿Qué pasa si la lógica funciona pero lo que no funciona es la base de datos? Y ¿Si lo que falla realmente es mi API?

Todas estas preguntas y algunas más tienen una fácil respuesta! TEST DE INTEGRACIÓN!

En esta sesión veremos como implementar los test en ASP Net Core y posteriormente como incluirlos en el pipeline de Azure DevOps.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1272'>Nacho Fanjul</person>
</persons>
</event>
<event guid='4Y9XI7NTlnKHIoLsqp8HuA' id='292'>
<date>2020-04-24T11:00:00+02:00</date>
<start>11:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>292-flutter-historia-del-desarrollo-de-una-app-real</slug>
<title>Flutter, historia del desarrollo de una app real</title>
<subtitle></subtitle>
<track>Development</track>
<abstract>Historia sobre la experiencia de desarrollar una app en producción con la nueva tecnología de Google, Flutter.

Esta novedosa tecnología ha despertado mucho interés en la comunidad y Google está apostando fuerte para que se convierta en un referente entre los desarrolladores de apps, por lo que es interesante conocer su potencial y las posibilidades que ofrece a través de un caso de uso real.</abstract>
<description>Historia sobre la experiencia de desarrollar una app en producción con la nueva tecnología de Google, Flutter.

Esta novedosa tecnología ha despertado mucho interés en la comunidad y Google está apostando fuerte para que se convierta en un referente entre los desarrolladores de apps, por lo que es interesante conocer su potencial y las posibilidades que ofrece a través de un caso de uso real.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1399'>Jose Manuel Márquez</person>
</persons>
</event>
<event guid='bPODIQieUp1KwvdNL8Opng' id='257'>
<date>2020-04-24T12:00:00+02:00</date>
<start>12:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>257-introduccion-a-cloudevents</slug>
<title>Introducción a CloudEvents</title>
<subtitle>Qué son y cómo nos podemos beneficiar de los CloudEvents mediante conceptos sencillos y ejemplos prácticos</subtitle>
<track>Development</track>
<abstract>¿Eventos otra vez? ¿Pero cómo se estructuran y qué protocolo usan? ¿Hay un SDK para mi lenguaje?

CloudEvents simplifica el uso y la integración entre sistemas. Deja que el protocolo se encargue de lo complicado y tú preocúpate solo de la información que quieres enviar. Esta especificación que ya ha sido adoptada por muchas grandes compañías ha llegado para quedarse. Si aún no conoces CloudEvents, verás qué fácil va a ser de ahora en adelante compartir información entre distintos sistemas, plataformas y protocolos.</abstract>
<description>¿Eventos otra vez? ¿Pero cómo se estructuran y qué protocolo usan? ¿Hay un SDK para mi lenguaje?

CloudEvents simplifica el uso y la integración entre sistemas. Deja que el protocolo se encargue de lo complicado y tú preocúpate solo de la información que quieres enviar. Esta especificación que ya ha sido adoptada por muchas grandes compañías ha llegado para quedarse. Si aún no conoces CloudEvents, verás qué fácil va a ser de ahora en adelante compartir información entre distintos sistemas, plataformas y protocolos.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='917'>Ruben Romero Montes</person>
</persons>
</event>
<event guid='XxwDMGA3J69uyvMBxg6-Bw' id='439'>
<date>2020-04-24T13:00:00+02:00</date>
<start>13:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>439-when-python-meets-graphql-managing-contributors-identities-in-your-open-source-project</slug>
<title>When Python meets GraphQL: Managing contributors identities in your open source project</title>
<subtitle></subtitle>
<track>Development</track>
<abstract>SortingHat is an open source Python tool that helps to manage the different contributor identities within an open source project. Under the hood SortingHat relies on a relational database, which can be queried via SQL, command line or directly via its Python interface. However, these ways of interacting with SortingHat hinder its integration with external tools, web interfaces and new web technologies (e.g., Django, REST services). To overcome these obstacles, we have evolved SortingHat&#39;s architecture using a GraphQL model based on the Graphene-Django implementation.

This talk describes our experience in migrating to GraphQL, from adapting the SortingHat functionalities to refactoring the unit tests. Furthermore, we comment also on lesson learned, advantages and drawbacks of using this new approach.

SortingHat is one of the core tools of GrimoireLab, an open-source software analytics platform part of CHAOSS project (Community Health Analytics Open Source Software) under the umbrella of the Linux Foundation.</abstract>
<description>SortingHat is an open source Python tool that helps to manage the different contributor identities within an open source project. Under the hood SortingHat relies on a relational database, which can be queried via SQL, command line or directly via its Python interface. However, these ways of interacting with SortingHat hinder its integration with external tools, web interfaces and new web technologies (e.g., Django, REST services). To overcome these obstacles, we have evolved SortingHat&#39;s architecture using a GraphQL model based on the Graphene-Django implementation.

This talk describes our experience in migrating to GraphQL, from adapting the SortingHat functionalities to refactoring the unit tests. Furthermore, we comment also on lesson learned, advantages and drawbacks of using this new approach.

SortingHat is one of the core tools of GrimoireLab, an open-source software analytics platform part of CHAOSS project (Community Health Analytics Open Source Software) under the umbrella of the Linux Foundation.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1468'>Miguel Ángel Fernández</person>
</persons>
</event>
<event guid='KSXPBZX8SPYiZRGod7CBrg' id='262'>
<date>2020-04-24T15:30:00+02:00</date>
<start>15:30</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>262-dime-que-me-quieres</slug>
<title>Dime que me quieres</title>
<subtitle>Talk about Feedback</subtitle>
<track>Meta</track>
<abstract>Aunque no seamos conscientes nos pasamos el día entero dando feedback, tanto en nuestro entorno técnico como personal, desde code reviews hasta una conversación informal con tu jefa o jefe en el café, pasando por reviews de productos o entrevistas de trabajo. 
Cuanto más feedback recibamos mejores personas y profesionales podremos llegar a ser, pero, pero, pero, ¿sabemos dar buen feedback?, o mejor aún, ¿debemos dar buen feedback? En esta sesión analizaremos las claves para dar y recibir feedback, asimilar y trabajar en ese feedback, analizar y detectar si debemos cambiar nuestra actitud o no. 
Por cierto ¿Sabías que los tests también son feedback?</abstract>
<description>Aunque no seamos conscientes nos pasamos el día entero dando feedback, tanto en nuestro entorno técnico como personal, desde code reviews hasta una conversación informal con tu jefa o jefe en el café, pasando por reviews de productos o entrevistas de trabajo. 
Cuanto más feedback recibamos mejores personas y profesionales podremos llegar a ser, pero, pero, pero, ¿sabemos dar buen feedback?, o mejor aún, ¿debemos dar buen feedback? En esta sesión analizaremos las claves para dar y recibir feedback, asimilar y trabajar en ese feedback, analizar y detectar si debemos cambiar nuestra actitud o no. 
Por cierto ¿Sabías que los tests también son feedback?</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1567'>Nicolás Patarino</person>
</persons>
</event>
<event guid='dQ7gHi6E2UQrT7ILdzd27Q' id='374'>
<date>2020-04-24T16:30:00+02:00</date>
<start>16:30</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>374-introduction-to-scrapy</slug>
<title>Introduction to Scrapy</title>
<subtitle>How to extract data from the internet the right way</subtitle>
<track>Development</track>
<abstract>Introduction to Scrapy, a framework for the automation of data extraction from the internet. I’ll give an overview of the features of the tool, explain in detail a simple example, introduce useful related technologies, and discuss some of the challenges that our internet bots face.</abstract>
<description>Introduction to Scrapy, a framework for the automation of data extraction from the internet. I’ll give an overview of the features of the tool, explain in detail a simple example, introduce useful related technologies, and discuss some of the challenges that our internet bots face.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1621'>Adrián Chaves</person>
</persons>
</event>
<event guid='KUym8E9lNpEtv9ONTgRhuQ' id='473'>
<date>2020-04-24T17:30:00+02:00</date>
<start>17:30</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>473-estrategias-branching-trabajando-con-git-y-personas</slug>
<title>Estrategias branching: trabajando con git y personas</title>
<subtitle></subtitle>
<track>Development</track>
<abstract>Todos conocemos Git. Sabemos hacer commit, hacer pull y push. Pero y cuando trabajamos en un equipo ¿como lo hacemos? 

Hay estrategias de branching como GitFlow, Trunk based, environment Based,...  al final lo que termina pasando es cuando las ramas son grandes acabamos haciendo carreras por ser el primero en hacer merge para que los conflictos sean para otro. En esta charla veremos algunas estrategias de branching como trunk based, environment branch (una rama por entorno) y como son las mejores maneras de hacer trabajar con git y las ramas sin que eso sea un caos.</abstract>
<description>Todos conocemos Git. Sabemos hacer commit, hacer pull y push. Pero y cuando trabajamos en un equipo ¿como lo hacemos? 

Hay estrategias de branching como GitFlow, Trunk based, environment Based,...  al final lo que termina pasando es cuando las ramas son grandes acabamos haciendo carreras por ser el primero en hacer merge para que los conflictos sean para otro. En esta charla veremos algunas estrategias de branching como trunk based, environment branch (una rama por entorno) y como son las mejores maneras de hacer trabajar con git y las ramas sin que eso sea un caos.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1671'>Jesús López</person>
</persons>
</event>
<event guid='y2HSTq3VKuwaoGBMd4JiGw' id='410'>
<date>2020-04-24T18:30:00+02:00</date>
<start>18:30</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>410-buenas-practicas-en-apis-con-net-core</slug>
<title>Buenas prácticas en APIs con .NET Core</title>
<subtitle>Aprende buenos hábitos para el desarrollo de APIs con .NET Core</subtitle>
<track>Development</track>
<abstract>¿Cuales son las buenas prácticas a seguir cuando estás creando tu API?

Crear una API REST puede ser un proceso largo, complicado y en el que podemos caer en muchas trampas. Pero tomando una serie de buenos hábitos que describiremos, tu equipo de desarrollo puede mejorar el desarrollo, facilitando el mantenimiento y creando código limpio.

Acompáñame a explorar esas buenas prácticas con .NET Core, el *framework* multipropósito, *open-source* y también multiplataforma, creado por Microsoft y su comunidad.

*Happy coding*!

---
Soy Elena G, programadora .NET y creadora de contenido en la red. Puedes encontrarme en [Twitter](https://twitter.com/Beelzenef_) para escribir tu interés o plantearme las dudas sobre la actividad.</abstract>
<description>¿Cuales son las buenas prácticas a seguir cuando estás creando tu API?

Crear una API REST puede ser un proceso largo, complicado y en el que podemos caer en muchas trampas. Pero tomando una serie de buenos hábitos que describiremos, tu equipo de desarrollo puede mejorar el desarrollo, facilitando el mantenimiento y creando código limpio.

Acompáñame a explorar esas buenas prácticas con .NET Core, el *framework* multipropósito, *open-source* y también multiplataforma, creado por Microsoft y su comunidad.

*Happy coding*!

---
Soy Elena G, programadora .NET y creadora de contenido en la red. Puedes encontrarme en [Twitter](https://twitter.com/Beelzenef_) para escribir tu interés o plantearme las dudas sobre la actividad.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='204'>Elena G Blanco</person>
</persons>
</event>
</room>
<room name='Aula 2'>
<event guid='wHjv3kalYidhuOhRDVweVw' id='435'>
<date>2020-04-24T10:00:00+02:00</date>
<start>10:00</start>
<duration>02:00</duration>
<room>Aula 2</room>
<type>Taller / Workshop</type>
<language></language>
<slug>435-golang-workshop</slug>
<title>Golang Workshop</title>
<subtitle></subtitle>
<track></track>
<abstract>Workshop de Go (https://github.com/aljesusg/go-workshop):

chapter01: Show hello world. Try to use golint and gofmt tool.

chapter02: Packages.

chapter03: Conditions.

chapter04: Structs.

chapter05: Interfaces.

chapter06: Concurrency.

chapter07: Errors.

chapter08: Types.

chapter09: Http Server.

chapter10: Go Func.

chapter11: Json.

chapter12: Test Doc.

Extra Ball sample: API Sample
</abstract>
<description>Workshop de Go (https://github.com/aljesusg/go-workshop):

chapter01: Show hello world. Try to use golint and gofmt tool.

chapter02: Packages.

chapter03: Conditions.

chapter04: Structs.

chapter05: Interfaces.

chapter06: Concurrency.

chapter07: Errors.

chapter08: Types.

chapter09: Http Server.

chapter10: Go Func.

chapter11: Json.

chapter12: Test Doc.

Extra Ball sample: API Sample
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='95'>Alberto Jesús Gutiérrez Juanes</person>
</persons>
</event>
<event guid='EeDfKo3XRsZSF2EN-EQZIw' id='463'>
<date>2020-04-24T15:30:00+02:00</date>
<start>15:30</start>
<duration>02:00</duration>
<room>Aula 2</room>
<type>Taller / Workshop</type>
<language></language>
<slug>463-ejemplos-usando-docker-con-wordpress</slug>
<title>Ejemplos usando Docker con WordPress</title>
<subtitle></subtitle>
<track>Web</track>
<abstract>Instalar XAMPP, un LAMP, Local, o tirar del servidor contratadocon staging  ya lo sabemos, y sabemos los problemas que puede ocasionar. Estos problemas los podemos solucionar fácil y rápido con Docker. Y además, team friendly!.

- ¿Te da pereza actualizar la versión de PHP?
- ¿Tu instalación en local requiere de librerías adicionales y no sabes instalarlas?
- ¿Ha salido una nueva versión de WordPress y quieres evitar tener que tener otro servidor?
- ¿Quieres probar los cambios en tu entorno local antes de subirlos al servidor? 
- ¿Trabajas en equipo y quieres ser más agil para probar los cambios?

Veremos algunos ejemplos de estos casos y los que se me ocurran.

No me entretendré en explicar Docker, Kubernetes, sistemas de desarrollo, integración continua, etc. Intentaré mostrar algunos casos prácticos usando un fichero docker-compose.yml para ejecutar varios casos usando el mismo proyecto.

Trae tu portátil o proyecto de ejemplo y te podremos ayudar.</abstract>
<description>Instalar XAMPP, un LAMP, Local, o tirar del servidor contratadocon staging  ya lo sabemos, y sabemos los problemas que puede ocasionar. Estos problemas los podemos solucionar fácil y rápido con Docker. Y además, team friendly!.

- ¿Te da pereza actualizar la versión de PHP?
- ¿Tu instalación en local requiere de librerías adicionales y no sabes instalarlas?
- ¿Ha salido una nueva versión de WordPress y quieres evitar tener que tener otro servidor?
- ¿Quieres probar los cambios en tu entorno local antes de subirlos al servidor? 
- ¿Trabajas en equipo y quieres ser más agil para probar los cambios?

Veremos algunos ejemplos de estos casos y los que se me ocurran.

No me entretendré en explicar Docker, Kubernetes, sistemas de desarrollo, integración continua, etc. Intentaré mostrar algunos casos prácticos usando un fichero docker-compose.yml para ejecutar varios casos usando el mismo proyecto.

Trae tu portátil o proyecto de ejemplo y te podremos ayudar.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='35'>fcjurado</person>
</persons>
</event>
<event guid='-b55UScViqtjEPAWksx8vQ' id='462'>
<date>2020-04-24T17:30:00+02:00</date>
<start>17:30</start>
<duration>00:45</duration>
<room>Aula 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>462-vue-wordpress-cms-mas-dinamico</slug>
<title>Vue + Wordpress = CMS más dinámico</title>
<subtitle>Vue + Wordpress</subtitle>
<track>Web</track>
<abstract>En esta charla explicaré cómo usar WordPress como herramienta de gestión de contenidos modificando su configuración y API para que sea consumida por un framework basado en JS como VUE JS</abstract>
<description>En esta charla explicaré cómo usar WordPress como herramienta de gestión de contenidos modificando su configuración y API para que sea consumida por un framework basado en JS como VUE JS</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1664'>jmcarmona</person>
</persons>
</event>
<event guid='j4p6rGNwWdDxlDZscXMwTw' id='464'>
<date>2020-04-24T18:30:00+02:00</date>
<start>18:30</start>
<duration>00:45</duration>
<room>Aula 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>464-como-contribuir-a-un-proyecto-opensource-caso-wordpress</slug>
<title>Cómo contribuir a un proyecto OpenSource: caso WordPress</title>
<subtitle></subtitle>
<track>Web</track>
<abstract>En esta charla quiero dar algunos ejemplos de cómo funciona y se organiza la comunidad de WordPress, para crear y mantener, no sólo el core, sino todo lo que ello conlleva. No son sólo desarrolladores los que mantienen el proyecto, sino también áreas como: 
- Diseño/Temas
- Accesibilidad
- Aplicación móvil
- Traducciones
- Foros de soporte
- Documentación
- Plugins
- Testing
- TV
- Marketing
- Hosting
- Tide
- CLI

</abstract>
<description>En esta charla quiero dar algunos ejemplos de cómo funciona y se organiza la comunidad de WordPress, para crear y mantener, no sólo el core, sino todo lo que ello conlleva. No son sólo desarrolladores los que mantienen el proyecto, sino también áreas como: 
- Diseño/Temas
- Accesibilidad
- Aplicación móvil
- Traducciones
- Foros de soporte
- Documentación
- Plugins
- Testing
- TV
- Marketing
- Hosting
- Tide
- CLI

</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='35'>fcjurado</person>
</persons>
</event>
</room>
<room name='Sala 3'>
<event guid='TUVwNl2QeWWt8r4y8W7l0g' id='433'>
<date>2020-04-24T10:00:00+02:00</date>
<start>10:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>433-the-state-of-drupal-9</slug>
<title>The state of Drupal 9</title>
<subtitle>Como preparar nuestros proyectos para la nueva version del CMS</subtitle>
<track>Web</track>
<abstract>**Sobre la charla**

Drupal es uno de los CMS más conocidos en PHP y es usado en multitud de projectos de toda envergadura.
Se espera que para el 3 de Junio salga a la luz la nueva versión de este CMS, Drupal 9. Esta session trata de explicar como es release Cycle de Drupal Core, al mismo tiempo que trata qué debemos tener en cuenta para preparar nuestros proyectos para poder actualizarlos a esta nueva mayor version.
Esta presentacion estará basada en https://docs.google.com/presentation/d/1yGNoxYez1kXnfJYu7v0q-o1Yj2me9R3coErZ6zDPWiI/edit#slide=id.g51159b95ca_0_115 cuyo objetivo es servir de base para toda aquella persona que quiera impartirla. 
Además incluiría una breve introducción a qué es Drupal a modo de contexto para los asistentes.
Mediante esta charla el grupo local de Drupal Málaga nos gustaría estar presente en este evento al igual que hicimimos en ediciones anteriores. Más aún con la celebración este año de la DrupalCamp Spain en Málaga https://2020.drupalcamp.es/</abstract>
<description>**Sobre la charla**

Drupal es uno de los CMS más conocidos en PHP y es usado en multitud de projectos de toda envergadura.
Se espera que para el 3 de Junio salga a la luz la nueva versión de este CMS, Drupal 9. Esta session trata de explicar como es release Cycle de Drupal Core, al mismo tiempo que trata qué debemos tener en cuenta para preparar nuestros proyectos para poder actualizarlos a esta nueva mayor version.
Esta presentacion estará basada en https://docs.google.com/presentation/d/1yGNoxYez1kXnfJYu7v0q-o1Yj2me9R3coErZ6zDPWiI/edit#slide=id.g51159b95ca_0_115 cuyo objetivo es servir de base para toda aquella persona que quiera impartirla. 
Además incluiría una breve introducción a qué es Drupal a modo de contexto para los asistentes.
Mediante esta charla el grupo local de Drupal Málaga nos gustaría estar presente en este evento al igual que hicimimos en ediciones anteriores. Más aún con la celebración este año de la DrupalCamp Spain en Málaga https://2020.drupalcamp.es/</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1288'>Jose Luis Bellido</person>
</persons>
</event>
<event guid='MzLSd0fj_TrrQkNpfCHpfw' id='320'>
<date>2020-04-24T11:00:00+02:00</date>
<start>11:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>320-create-your-app-with-nx-and-test-it-with-jest-and-cypress</slug>
<title>Create your app with Nx and test it with Jest and Cypress</title>
<subtitle>We will demonstrate how easy is to create a new app from scratch using Nx. We will also show how to use two of the most modern testing tools: add unit and snapshot tests with Jest and E2E coverage with Cypress.</subtitle>
<track>Web</track>
<abstract>Sometimes it&#39;s difficult to find a great combination of packages to start a new app. Initialization and configuration can be a pain if we don&#39;t know a set of tools that makes our life easier. In this talk we will show you how to initialize an app with Nx and we will test a small app with Jest and Cypress, to set a good point of start for your future applications.

Objectives of this talk:

Nx:

- Easy initialization of a workspace with NX

Unit testing with Jest:

- Unit testing components &amp; services
- Mocking services
- Snapshot Testing

E2E with Cypress:

- Creation of E2E and integration tests for the app
- Mocking HTTP requests in Cypress

This talk has a tutorial in case that the attendants want to do the example app at home:

https://github.com/malaga-front-end/nrwl-angular-jest-cypress-quickstart

Language: Spanish (we can also do it in English if you prefer). 

This talk will be done by 2 speakers: Miguel Angel Muñoz and Diego Romero.
</abstract>
<description>Sometimes it&#39;s difficult to find a great combination of packages to start a new app. Initialization and configuration can be a pain if we don&#39;t know a set of tools that makes our life easier. In this talk we will show you how to initialize an app with Nx and we will test a small app with Jest and Cypress, to set a good point of start for your future applications.

Objectives of this talk:

Nx:

- Easy initialization of a workspace with NX

Unit testing with Jest:

- Unit testing components &amp; services
- Mocking services
- Snapshot Testing

E2E with Cypress:

- Creation of E2E and integration tests for the app
- Mocking HTTP requests in Cypress

This talk has a tutorial in case that the attendants want to do the example app at home:

https://github.com/malaga-front-end/nrwl-angular-jest-cypress-quickstart

Language: Spanish (we can also do it in English if you prefer). 

This talk will be done by 2 speakers: Miguel Angel Muñoz and Diego Romero.
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1587'>Miguel Angel Muñoz</person>
<person id='1476'>diegorp</person>
</persons>
</event>
<event guid='LwS5Y3ZDMZRmG-HGqYHUuQ' id='333'>
<date>2020-04-24T12:00:00+02:00</date>
<start>12:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>333-fonk-validacion-de-formularios-solida-y-reusable-en-javascript-typescript</slug>
<title>Fonk: Validación de formularios sólida y reusable en Javascript / Typescript</title>
<subtitle>Validando formularios de forma declarativa, nos más sphaguetti UI + Lógica de validación</subtitle>
<track>Web</track>
<abstract>Validar un formulario sencillo es algo &quot;facilito&quot;... conforme empiezas a añadir casuística, y complejidades todo empieza a enmarañarse y cada ventana de formulario puede acabar con una amalgama de código, cada uno de su padre y su madre, y muy complicado de probar. En esta charla vamos a ver como funciona Fonk, una librería de validación de formularios open source implementada en JavaScript y que se lleva bien con todo tipo de frameworks y librerías,

</abstract>
<description>Validar un formulario sencillo es algo &quot;facilito&quot;... conforme empiezas a añadir casuística, y complejidades todo empieza a enmarañarse y cada ventana de formulario puede acabar con una amalgama de código, cada uno de su padre y su madre, y muy complicado de probar. En esta charla vamos a ver como funciona Fonk, una librería de validación de formularios open source implementada en JavaScript y que se lleva bien con todo tipo de frameworks y librerías,

</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1267'>Braulio</person>
</persons>
</event>
<event guid='gpy-L6Xcna6MJMUe1Z6oSg' id='369'>
<date>2020-04-24T13:00:00+02:00</date>
<start>13:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>369-blazor-o-como-llevar-net-hasta-el-navegador</slug>
<title>Blazor, o cómo llevar .Net hasta el navegador.</title>
<subtitle>Crea Single Page Applications de alto rendimiento de manera sencilla y reutilizable</subtitle>
<track>Web</track>
<abstract>1. En el principio estaba Windows, y sobre él, .Net Framework.
2. Pero .Net Framework se sentía solo, así que Xamarin le dio sistemas operativos móviles.
3. Y Microsoft se apiadó de él, y lo liberó del yugo del código cerrado y lo hizo open source y multiplataforma, y .Net Core ya era capaz de jugar con multitud de sistemas operativos.
4. Y dijo Blazor: ¡Haya navegadores! Y hubo navegadores.

Blazor es un framework Open Source de .Net para web, utilizando c#, CSS y html, que se puede ejecutar directamente en el navegador, sin transpilaciones, trampa ni cartón. Podremos generar Single Page applications utilizando c# y sintaxis Razor, desarrollando sitios webs completos de manera sencilla y utilizando un mismo lenguaje para todo el desarrollo, tanto servidor como cliente.
Y si no queremos utilizar Web Assembly, podremos optar por ejecutar Blazor en servidor, utilizando Server Side Rendering e interactuando con el cliente en tiempo real con Signal R. ¡Dos formas intercambiables en todo momento que aportarán gran flexibilidad a nuestros desarrollos!

En esta charla veremos mediante un proyecto de ejemplo qué posibilidades nos proporciona Blazor, y cómo meternos en este nuevo y fascinante universo de .Net con Web Assembly. Y lo mejor, utilizando solo los últimos estándares web, sin plugins ni software adicional, por lo que no solo podremos construir aplicaciones muy potentes, sino también totalmente accesibles.

¡.Net llevado al siguiente nivel!</abstract>
<description>1. En el principio estaba Windows, y sobre él, .Net Framework.
2. Pero .Net Framework se sentía solo, así que Xamarin le dio sistemas operativos móviles.
3. Y Microsoft se apiadó de él, y lo liberó del yugo del código cerrado y lo hizo open source y multiplataforma, y .Net Core ya era capaz de jugar con multitud de sistemas operativos.
4. Y dijo Blazor: ¡Haya navegadores! Y hubo navegadores.

Blazor es un framework Open Source de .Net para web, utilizando c#, CSS y html, que se puede ejecutar directamente en el navegador, sin transpilaciones, trampa ni cartón. Podremos generar Single Page applications utilizando c# y sintaxis Razor, desarrollando sitios webs completos de manera sencilla y utilizando un mismo lenguaje para todo el desarrollo, tanto servidor como cliente.
Y si no queremos utilizar Web Assembly, podremos optar por ejecutar Blazor en servidor, utilizando Server Side Rendering e interactuando con el cliente en tiempo real con Signal R. ¡Dos formas intercambiables en todo momento que aportarán gran flexibilidad a nuestros desarrollos!

En esta charla veremos mediante un proyecto de ejemplo qué posibilidades nos proporciona Blazor, y cómo meternos en este nuevo y fascinante universo de .Net con Web Assembly. Y lo mejor, utilizando solo los últimos estándares web, sin plugins ni software adicional, por lo que no solo podremos construir aplicaciones muy potentes, sino también totalmente accesibles.

¡.Net llevado al siguiente nivel!</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1618'>Juanjo</person>
</persons>
</event>
<event guid='1tHQ8STnFj_F4M1QTR1t7g' id='500'>
<date>2020-04-24T15:30:00+02:00</date>
<start>15:30</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>500-atomic-design-empezamos</slug>
<title>Atomic Design. ¿Empezamos?</title>
<subtitle></subtitle>
<track>Web</track>
<abstract>En esta Charla compartiré cómo fueron mis inicios en “Atomic Design”, qué tendremos que tener en cuenta antes de empezar y qué tendremos que aprender para poder llevarlo a cabo tanto en Diseño como en desarrollo. También pondré ejemplos y comparaciones en las distintas fases que tiene un proyecto con esta “Metodología”.

</abstract>
<description>En esta Charla compartiré cómo fueron mis inicios en “Atomic Design”, qué tendremos que tener en cuenta antes de empezar y qué tendremos que aprender para poder llevarlo a cabo tanto en Diseño como en desarrollo. También pondré ejemplos y comparaciones en las distintas fases que tiene un proyecto con esta “Metodología”.

</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1687'>Juan Serrano </person>
</persons>
</event>
<event guid='VUWOR69CABhKaDyupZv7FA' id='514'>
<date>2020-04-24T16:30:00+02:00</date>
<start>16:30</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>514-introduccion-a-apache-druid</slug>
<title>Introducción a Apache Druid</title>
<subtitle></subtitle>
<track>Data Science / BigData</track>
<abstract>Apache Druid es un proyecto open source Apache. (high performance real-time analytics database )

Apache Druid es una base de datos híbrida entre una Timeseries DB, un sistema OLAP  y un indexador de búsqueda. 

Permite construir un sistema de alto rendimiento con capacidades Big Data (despliegues de trillones de eventos y PB de datos).

Druid permite Queries OLAP sub second, ingesta de datos en Streaming y en batch, y dar soporte a aplicaciones analíticas para miles de usuarios concurrentes.

</abstract>
<description>Apache Druid es un proyecto open source Apache. (high performance real-time analytics database )

Apache Druid es una base de datos híbrida entre una Timeseries DB, un sistema OLAP  y un indexador de búsqueda. 

Permite construir un sistema de alto rendimiento con capacidades Big Data (despliegues de trillones de eventos y PB de datos).

Druid permite Queries OLAP sub second, ingesta de datos en Streaming y en batch, y dar soporte a aplicaciones analíticas para miles de usuarios concurrentes.

</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1697'>Adolfo Cortés</person>
</persons>
</event>
<event guid='dOg71b9Q50rCJ78SPbpoyA' id='448'>
<date>2020-04-24T17:30:00+02:00</date>
<start>17:30</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>448-limpieza-y-preparacion-de-datos-con-herramientas-gnu</slug>
<title>Limpieza y preparación de datos con herramientas GNU</title>
<subtitle></subtitle>
<track>Data Science / BigData</track>
<abstract>Desafortunadamente en la vida real los datos no aparecen pristinos y
listos para ser analizados como parecen sugerir los numerosos
tutoriales sobre ciencia de datos que podemos encontrar en Internet.

Afortunadamente existen a nuestra disposición una serie de
herramientas de código abierto (o libre según el caso) que fácilmente
nos permitiran inspeccionar el estado inicial de esos datos,
limpiarlos y formatearlos para poder proceder a su análisis con
nuestro software favorito.

Estas utilidades suelen estar disponibles en cualquier sistema Linux,
y nos van a permitir reducir considerablemente el tiempo dedicado a
procesar estos datos y dedicar nuestros esfuerzos al análisis que
realmente aporta valor.

Veremos como inspeccionar grandes ficheros sin desbordar nuestra
memoria, lidiar con problemas de codificaciones, extracción y descarte
de información, paralelización, etc.
</abstract>
<description>Desafortunadamente en la vida real los datos no aparecen pristinos y
listos para ser analizados como parecen sugerir los numerosos
tutoriales sobre ciencia de datos que podemos encontrar en Internet.

Afortunadamente existen a nuestra disposición una serie de
herramientas de código abierto (o libre según el caso) que fácilmente
nos permitiran inspeccionar el estado inicial de esos datos,
limpiarlos y formatearlos para poder proceder a su análisis con
nuestro software favorito.

Estas utilidades suelen estar disponibles en cualquier sistema Linux,
y nos van a permitir reducir considerablemente el tiempo dedicado a
procesar estos datos y dedicar nuestros esfuerzos al análisis que
realmente aporta valor.

Veremos como inspeccionar grandes ficheros sin desbordar nuestra
memoria, lidiar con problemas de codificaciones, extracción y descarte
de información, paralelización, etc.
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='902'>Jose Miguel Martinez</person>
</persons>
</event>
<event guid='-xxm8RFY_OW4IfuUIl1M5Q' id='396'>
<date>2020-04-24T18:30:00+02:00</date>
<start>18:30</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>396-ciencia-de-datos-reproducible-con-nix</slug>
<title>Ciencia de datos reproducible con Nix</title>
<subtitle></subtitle>
<track>Data Science / BigData</track>
<abstract>El *análisis de datos* siempre ha sido una tarea imprescindible dentro
de la ciencia y la ingeniería, y desde hace unos pocos años con la
aparición de los *notebooks* y bibliotecas como *pandas* que facilitan
dicho análisis con buenas herramientas de código abierto encontramos
dicho trabajo, renombrado como **ciencia de datos**, cada vez más
demandado por la industria (financiera, administraciones públicas,
laboratorios, periódicos, etc).

Lamentablemente existe un problema al que no se le suele dar la debida
importancia hasta que es demasiado tarde: cuando se quiere reproducir
dicho análisis por otra persona (y normalmente con otro ordenador).

En esta charla se mostrará como **Nix**, un gestor de paquetes funcional
y multiplataforma, nos sirve para reducir considerablemente el tiempo
requerido para satisfacer los requisitos previos de un análisis o
experimente que deseamos replicar.
</abstract>
<description>El *análisis de datos* siempre ha sido una tarea imprescindible dentro
de la ciencia y la ingeniería, y desde hace unos pocos años con la
aparición de los *notebooks* y bibliotecas como *pandas* que facilitan
dicho análisis con buenas herramientas de código abierto encontramos
dicho trabajo, renombrado como **ciencia de datos**, cada vez más
demandado por la industria (financiera, administraciones públicas,
laboratorios, periódicos, etc).

Lamentablemente existe un problema al que no se le suele dar la debida
importancia hasta que es demasiado tarde: cuando se quiere reproducir
dicho análisis por otra persona (y normalmente con otro ordenador).

En esta charla se mostrará como **Nix**, un gestor de paquetes funcional
y multiplataforma, nos sirve para reducir considerablemente el tiempo
requerido para satisfacer los requisitos previos de un análisis o
experimente que deseamos replicar.
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='902'>Jose Miguel Martinez</person>
</persons>
</event>
</room>
</day>
<day date='2020-04-25' index='2'>
<room name='Sala 1'>
<event guid='s6Im5ac4Gf4_8BYhY-1mtw' id='521'>
<date>2020-04-25T10:00:00+02:00</date>
<start>10:00</start>
<duration>04:00</duration>
<room>Sala 1</room>
<type>Evento</type>
<language></language>
<slug>521-akademy-es</slug>
<title>Akademy-es</title>
<subtitle>Evento de KDE España</subtitle>
<track>Akademy-es</track>
<abstract>Akademy-es es el encuentro anual de desarrolladores, colaboradores y usuarios de KDE en España. Más info en https://www.kde-espana.org/akademy-es-2020

En cuanto estén las actividades confirmadas las añadiremos al programa.</abstract>
<description>Akademy-es es el encuentro anual de desarrolladores, colaboradores y usuarios de KDE en España. Más info en https://www.kde-espana.org/akademy-es-2020

En cuanto estén las actividades confirmadas las añadiremos al programa.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
</persons>
</event>
<event guid='6ImxOsrTd1Cje1hMn0DfAw' id='519'>
<date>2020-04-25T15:30:00+02:00</date>
<start>15:30</start>
<duration>04:00</duration>
<room>Sala 1</room>
<type>Evento</type>
<language></language>
<slug>519-akademy-es</slug>
<title>Akademy-es</title>
<subtitle>Evento de KDE España</subtitle>
<track>Akademy-es</track>
<abstract>Akademy-es es el encuentro anual de desarrolladores, colaboradores y usuarios de KDE en España. Más info en https://www.kde-espana.org/akademy-es-2020

En cuanto las actividades estén confirmadas las añadiremos al programa.</abstract>
<description>Akademy-es es el encuentro anual de desarrolladores, colaboradores y usuarios de KDE en España. Más info en https://www.kde-espana.org/akademy-es-2020

En cuanto las actividades estén confirmadas las añadiremos al programa.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
</persons>
</event>
</room>
<room name='Sala 2'>
<event guid='uQdnqBfP6XxBQp5dBcKYxQ' id='324'>
<date>2020-04-25T10:00:00+02:00</date>
<start>10:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>324-opensource-para-un-mundo-opendata</slug>
<title>#OpenSource para un mundo #OpenData</title>
<subtitle>data por el pueblo, para el pueblo</subtitle>
<track>Meta</track>
<abstract>En esta charla os mostraré diferentes catálogos de datos abiertos (Madrid, Barcelona, España, Europa...) y cómo extraje y construí algunas aplicaciones con algunos de ellos sin gastar un euro. En concreto os enseñaré

- Cómo extraer, componer y publicar imágenes de la M-30
- Un bot de Telegram al que pedirle las cámaras de tráfico, o uno para localizar la fuente pública más cercana
- Cómo publicar de forma diaria los próximos eventos de Granada en un canal de Telegram con un simple script de Groovy ejecutándose en una cuenta gratutita de Gitlab

En definitiva, intentar aportar ideas para atacar los datos abiertos y demostrar que no hace falta ser un experto en BigData para sacarles partido</abstract>
<description>En esta charla os mostraré diferentes catálogos de datos abiertos (Madrid, Barcelona, España, Europa...) y cómo extraje y construí algunas aplicaciones con algunos de ellos sin gastar un euro. En concreto os enseñaré

- Cómo extraer, componer y publicar imágenes de la M-30
- Un bot de Telegram al que pedirle las cámaras de tráfico, o uno para localizar la fuente pública más cercana
- Cómo publicar de forma diaria los próximos eventos de Granada en un canal de Telegram con un simple script de Groovy ejecutándose en una cuenta gratutita de Gitlab

En definitiva, intentar aportar ideas para atacar los datos abiertos y demostrar que no hace falta ser un experto en BigData para sacarles partido</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1597'>Jorge Aguilera</person>
</persons>
</event>
<event guid='kPSYLLmhckbLFm7DX5UeUw' id='443'>
<date>2020-04-25T11:00:00+02:00</date>
<start>11:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>443-un-novato-en-un-proyecto-legacy</slug>
<title>Un novato en un proyecto legacy</title>
<subtitle>Historia del proyecto Hurd SMP</subtitle>
<track>Community</track>
<abstract>En esta charla hablaremos sobre las experiencias producidas durante el desarrollo del proyecto Hurd SMP: mi primer proyecto en desarrollo de sistemas operativos, con un código legacy proveniente de los años 80 y 90, y con muchos conceptos altamente específicos que había que aprender sobre la marcha.

Comentaremos los problemas que supuso este proyecto, tanto a nivel de conocimientos y experiencia, como de desarrollo; y cómo se han logrado solventar estos problemas gracias a la comunidad (y con mucha paciencia :D )

</abstract>
<description>En esta charla hablaremos sobre las experiencias producidas durante el desarrollo del proyecto Hurd SMP: mi primer proyecto en desarrollo de sistemas operativos, con un código legacy proveniente de los años 80 y 90, y con muchos conceptos altamente específicos que había que aprender sobre la marcha.

Comentaremos los problemas que supuso este proyecto, tanto a nivel de conocimientos y experiencia, como de desarrollo; y cómo se han logrado solventar estos problemas gracias a la comunidad (y con mucha paciencia :D )

</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='359'>Almudena Garcia</person>
</persons>
</event>
<event guid='6QTWt5944fnADWqtr3TFwA' id='440'>
<date>2020-04-25T12:00:00+02:00</date>
<start>12:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>440-esta-roto-el-open-source</slug>
<title>¿Está roto el open source?</title>
<subtitle>Reflexiones sobre las relaciones entre la gente que crea y la que usa open source software</subtitle>
<track>Community</track>
<abstract>Se dice que el open source ha ganado, que es el estándar para desarrollo de software, e incluso corporaciones que antes lo despreciaban, hoy defienden sus bondades y exhiben orgullosas sus contribuciones.

Otras voces no opinan igual. Dicen que el open source sólo es un mecanismo para que grandes proveedores se aprovechen del esfuerzo de otras personas en beneficio propio, sin contribuir de vuelta.

Han surgido iniciativas para dotar de recursos a las personas que mantienen proyectos open source, y aún así, hay personas quemadas, empresas e iniciativas para cambiar las licencias e impedir la explotación de sus proyectos bajo ciertas condiciones.

¿Está roto el modelo? Quizás el uso sin entender las implicaciones, sin pensar en contribuir a la sostenibilidad de los proyectos, o incluso esperando recibir servicios de forma gratuita, estén ayudando a romperlo.

Está claro que el ecosistema no es el mismo que hace 20 ni 30 años. Durante esta charla me gustaría compartir con la audiencia mis reflexiones sobre estos cambios, los riesgos y oportunidades alrededor del término open source. Todo ello esperando generar visión crítica y debate sobre la evolución futura del ecosistema.</abstract>
<description>Se dice que el open source ha ganado, que es el estándar para desarrollo de software, e incluso corporaciones que antes lo despreciaban, hoy defienden sus bondades y exhiben orgullosas sus contribuciones.

Otras voces no opinan igual. Dicen que el open source sólo es un mecanismo para que grandes proveedores se aprovechen del esfuerzo de otras personas en beneficio propio, sin contribuir de vuelta.

Han surgido iniciativas para dotar de recursos a las personas que mantienen proyectos open source, y aún así, hay personas quemadas, empresas e iniciativas para cambiar las licencias e impedir la explotación de sus proyectos bajo ciertas condiciones.

¿Está roto el modelo? Quizás el uso sin entender las implicaciones, sin pensar en contribuir a la sostenibilidad de los proyectos, o incluso esperando recibir servicios de forma gratuita, estén ayudando a romperlo.

Está claro que el ecosistema no es el mismo que hace 20 ni 30 años. Durante esta charla me gustaría compartir con la audiencia mis reflexiones sobre estos cambios, los riesgos y oportunidades alrededor del término open source. Todo ello esperando generar visión crítica y debate sobre la evolución futura del ecosistema.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1651'>jsmanrique</person>
</persons>
</event>
<event guid='MdpfZijpEOVo7FetZVmSxw' id='323'>
<date>2020-04-25T13:00:00+02:00</date>
<start>13:00</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>323-guia-de-cocina-para-desarrolladores</slug>
<title>Guía de cocina para desarrolladores</title>
<subtitle>O cómo convertirse en mejor cocinero aplicando los principios SOLID y de clean code, o cómo convertirse en mejor programador cocinando unas lentejas.</subtitle>
<track>Community</track>
<abstract>Seguro que a todo el mundo le han explicado el concepto de algoritmo por primera vez como una receta. En esta charla intentaremos justo lo contrario: explicar conceptos de cocina (más o menos creativa) para programadores, y cómo puedes aplicar conceptos como toolchain, provisionamiento, programación concurrente, programación reactiva, despliegue y, por supuesto, contenedores a cocinar para ti y para tus seres más cercanos.
Lo que se pretende en esta charla es animar a la persona media que trabaja en desarrollo, cuya experiencia culinaria suele estar más cercana a nula, al fascinante mundo de la cocina y cómo hacerlo de forma periódica y habitual puede ayudarte a mejorar tu alimentación, tus hábitos y también, por supuesto, tu porcentaje en los tests de cobertura.</abstract>
<description>Seguro que a todo el mundo le han explicado el concepto de algoritmo por primera vez como una receta. En esta charla intentaremos justo lo contrario: explicar conceptos de cocina (más o menos creativa) para programadores, y cómo puedes aplicar conceptos como toolchain, provisionamiento, programación concurrente, programación reactiva, despliegue y, por supuesto, contenedores a cocinar para ti y para tus seres más cercanos.
Lo que se pretende en esta charla es animar a la persona media que trabaja en desarrollo, cuya experiencia culinaria suele estar más cercana a nula, al fascinante mundo de la cocina y cómo hacerlo de forma periódica y habitual puede ayudarte a mejorar tu alimentación, tus hábitos y también, por supuesto, tu porcentaje en los tests de cobertura.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='20'>JJ Merelo</person>
</persons>
</event>
<event guid='xMaKiAGaec5pZsv7AjEUwQ' id='476'>
<date>2020-04-25T15:30:00+02:00</date>
<start>15:30</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>476-nextcloud-en-la-educacion</slug>
<title>NextCloud en la educación</title>
<subtitle>En el taller te contaré mi experiencia promoviendo el uso de tecnologías libres en la educación mediante servidores NextCloud y también uno de nuestros proyectos.</subtitle>
<track>Community</track>
<abstract># NextCloud en la Educación
## Introducción
En primer lugar, comenzaré con una breve introducción de LibreLabUCM, asociación de estudiantes de la Universidad Complutense de Madrid que promueve el software libre y la ciberseguridad.
En la introducción serán mencionadas las siguientes ideas:
- ¿Dónde nace LibreLabUCM?
- Nuestros proyectos (mirrors de distribuciones GNU/Linux, Mumble, Moodle y eventos en los que hemos participado)

## Necesidad de recursos y la falta de privacidad estudiantil
Una vez realizada dicha introducción se enlazará con &quot;la necesidad que tienen los estudiantes de recursos&quot; y la &quot;falta de privacidad&quot; que suelen tener dichas fuentes de recursos. Para solucionar este problema, surge la necesidad de crear un servidor de apuntes entre varias asociaciones de la Universidad.
Se mencionarán:
- Problemas en lo que se refiere a privacidad de algunos proveedores de dichos recursos (Wuolah).
- Problemas legales en lo que se refiere a subir apuntes dado que es necesario que la licencia o el autor de dichos apuntes nos haya concedido ese permiso.
- ¿Cómo salimos de todos estos problemas?

## Solución: Crear un servidor de apuntes libre con NextCloud
Una vez mencionados los problemas, explicaremos que nuestra solución fue la creación de un servidor NextCloud al cual todos los socios de la asociación pudiesen acceder.
- Introducción a NextCloud (orígenes): fork de OwnCloud, licencia AGPL, estándares abiertos, lo sencillo que es montar tu propio servidor y multiplataforma.

### Demostración
Mostraremos una ligera demostración de como funciona nuestro servidor y la posibilidad de iniciar sesión con GitHub, Telegram o crear un usuario, también la posibilidad de imprimir remotamente (para ello tendremos una cámara en el despacho apuntando a la impresora para que se vea en vivo).

## Soluciones a los problemas mostrados anteriormente.
Una vez realizada la demostración en nuestro servidor, procederemos a explicar las distintas soluciones a los problemas mencionados al principio:

- Para solucionar los problemas de la privacidad, no solicitaremos datos al usuario más allá del nombre de usuario y dirección de correo electronico dado que son necesarios para poder subir archivos al servidor, aunque siempre podrá elegir descargar dichos archivos sin registro alguno.
- Antes de que los archivos se distribuyan de manera pública a todo aquel que entre en la plataforma debemos obtener una autorización del autor original de dichos apuntes. Ejemplo: unas diapositivas de un profesor requieren que el profesor haya especificado una licencia o nos haya dado el permiso, por lo que para ello deberíamos contactar con dicho profesor u hablar con el departamento entero.

## Extensiones de NextCloud
Mencionaremos todas las posibilidades que nos ofrece NextCloud mediante extensiones como 
Calendario, NextCloud Talk (servidor COTURN), integración con Collabora Online (alternativa a las aplicaciones de Google), Polls, integración con XMPP entre otras.

## Conclusión

Nuestra visión del proyecto y las distintas formas de colaborar en el proyecto.</abstract>
<description># NextCloud en la Educación
## Introducción
En primer lugar, comenzaré con una breve introducción de LibreLabUCM, asociación de estudiantes de la Universidad Complutense de Madrid que promueve el software libre y la ciberseguridad.
En la introducción serán mencionadas las siguientes ideas:
- ¿Dónde nace LibreLabUCM?
- Nuestros proyectos (mirrors de distribuciones GNU/Linux, Mumble, Moodle y eventos en los que hemos participado)

## Necesidad de recursos y la falta de privacidad estudiantil
Una vez realizada dicha introducción se enlazará con &quot;la necesidad que tienen los estudiantes de recursos&quot; y la &quot;falta de privacidad&quot; que suelen tener dichas fuentes de recursos. Para solucionar este problema, surge la necesidad de crear un servidor de apuntes entre varias asociaciones de la Universidad.
Se mencionarán:
- Problemas en lo que se refiere a privacidad de algunos proveedores de dichos recursos (Wuolah).
- Problemas legales en lo que se refiere a subir apuntes dado que es necesario que la licencia o el autor de dichos apuntes nos haya concedido ese permiso.
- ¿Cómo salimos de todos estos problemas?

## Solución: Crear un servidor de apuntes libre con NextCloud
Una vez mencionados los problemas, explicaremos que nuestra solución fue la creación de un servidor NextCloud al cual todos los socios de la asociación pudiesen acceder.
- Introducción a NextCloud (orígenes): fork de OwnCloud, licencia AGPL, estándares abiertos, lo sencillo que es montar tu propio servidor y multiplataforma.

### Demostración
Mostraremos una ligera demostración de como funciona nuestro servidor y la posibilidad de iniciar sesión con GitHub, Telegram o crear un usuario, también la posibilidad de imprimir remotamente (para ello tendremos una cámara en el despacho apuntando a la impresora para que se vea en vivo).

## Soluciones a los problemas mostrados anteriormente.
Una vez realizada la demostración en nuestro servidor, procederemos a explicar las distintas soluciones a los problemas mencionados al principio:

- Para solucionar los problemas de la privacidad, no solicitaremos datos al usuario más allá del nombre de usuario y dirección de correo electronico dado que son necesarios para poder subir archivos al servidor, aunque siempre podrá elegir descargar dichos archivos sin registro alguno.
- Antes de que los archivos se distribuyan de manera pública a todo aquel que entre en la plataforma debemos obtener una autorización del autor original de dichos apuntes. Ejemplo: unas diapositivas de un profesor requieren que el profesor haya especificado una licencia o nos haya dado el permiso, por lo que para ello deberíamos contactar con dicho profesor u hablar con el departamento entero.

## Extensiones de NextCloud
Mencionaremos todas las posibilidades que nos ofrece NextCloud mediante extensiones como 
Calendario, NextCloud Talk (servidor COTURN), integración con Collabora Online (alternativa a las aplicaciones de Google), Polls, integración con XMPP entre otras.

## Conclusión

Nuestra visión del proyecto y las distintas formas de colaborar en el proyecto.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1673'>Rafael Joan Mateus Marques</person>
</persons>
</event>
<event guid='JDXF4rxHubQ7fKj3oHs14w' id='295'>
<date>2020-04-25T16:30:00+02:00</date>
<start>16:30</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>295-quien-esta-al-mando-de-tu-lenguaje-de-programacion-favorito</slug>
<title>¿Quién está al mando de tu lenguaje de programación favorito?</title>
<subtitle>...o cómo de ético, diverso y saludable es un lenguaje de programación y la comunidad que lo rodea</subtitle>
<track>Community</track>
<abstract>A menudo me he preguntado por qué siempre nos centramos en los detalles técnicos, olvidando los **aspectos éticos** de la tecnología. Hace unos años decidí centrarme en analizar el asunto en lo relativo a los lenguajes de programación, pero el enfoque se puede aplicar a otros conceptos. Esta charla no trata sobre qué lenguaje de programación tiene esta o aquella capacidad, o cuál tiene más rasgos funcionales. Lo que quería analizar es **cómo de ético, diverso y saludable es un lenguaje de programación y la comunidad que lo rodea**.

En esta charla explico lo que se puede medir y analizar con respecto a la **ética** y la **gobernanza** en los lenguajes de programación, y presento un **análisis crítico** de **catorce** lenguajes diferentes, no solo por ser más populares sino especialmente aquellos con alguna peculiaridad especial.

¿Qué puntos fuertes o débiles tiene la gobernanza de cada uno? ¿Quién marca los objetivos? ¿Quién prioriza? ¿Quién colabora en su desarrollo?

En definitiva, **¿Quién está al mando de tu lenguaje de programación favorito?**</abstract>
<description>A menudo me he preguntado por qué siempre nos centramos en los detalles técnicos, olvidando los **aspectos éticos** de la tecnología. Hace unos años decidí centrarme en analizar el asunto en lo relativo a los lenguajes de programación, pero el enfoque se puede aplicar a otros conceptos. Esta charla no trata sobre qué lenguaje de programación tiene esta o aquella capacidad, o cuál tiene más rasgos funcionales. Lo que quería analizar es **cómo de ético, diverso y saludable es un lenguaje de programación y la comunidad que lo rodea**.

En esta charla explico lo que se puede medir y analizar con respecto a la **ética** y la **gobernanza** en los lenguajes de programación, y presento un **análisis crítico** de **catorce** lenguajes diferentes, no solo por ser más populares sino especialmente aquellos con alguna peculiaridad especial.

¿Qué puntos fuertes o débiles tiene la gobernanza de cada uno? ¿Quién marca los objetivos? ¿Quién prioriza? ¿Quién colabora en su desarrollo?

En definitiva, **¿Quién está al mando de tu lenguaje de programación favorito?**</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1583'>Luis García Castro</person>
</persons>
</event>
<event guid='lJRvujIex4x5kcjsr8Oa1w' id='503'>
<date>2020-04-25T17:30:00+02:00</date>
<start>17:30</start>
<duration>00:45</duration>
<room>Sala 2</room>
<type>Charla / Talk</type>
<language></language>
<slug>503-bad-language</slug>
<title>Bad Language</title>
<subtitle>Simple changes to communicate better</subtitle>
<track>Community</track>
<abstract>Attendees will learn how, by making changes to the way they explain things, they can reach and convince a larger audience of the value of their projects. Useful for attracting more users, enticing supporters, and encouraging participation.</abstract>
<description>Attendees will learn how, by making changes to the way they explain things, they can reach and convince a larger audience of the value of their projects. Useful for attracting more users, enticing supporters, and encouraging participation.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1690'>Paul Brown</person>
</persons>
</event>
</room>
<room name='Aula 3'>
<event guid='5VVROyGPEkKX0j0d1G6SmQ' id='327'>
<date>2020-04-25T10:00:00+02:00</date>
<start>10:00</start>
<duration>00:45</duration>
<room>Aula 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>327-tecnicas-osint-que-te-dejaran-con-el-culo-torcido</slug>
<title>Técnicas OSINT que te dejarán con el culo torcido </title>
<subtitle>Como en Black Mirror, pero de verdad</subtitle>
<track>Security</track>
<abstract>¿Te preocupa que tus datos personales los tenga la CIA, el FBI y Putin?
¿Te has cambiado tu Huawei por que le pasa la biometría de tu cara al gobierno Chino?
¿Pasas de Chrome en favor de Brave por que te preocupa tu privacidad?
¿Pagas 20 pavos al mes por usar una VPN privada que difumine tu rastro por la red?

Pues igual deberías empezar a preocuparte también por la privacidad de otras cosas que te interesan... como tus servidores, por ejemplo.

En esta charla repasaremos las técnicas de extracción de datos más bizarras que hemos encontrado, y veremos cómo ninguno de nosotros, ni de nuestros servidores, está a salvo de la automatización.</abstract>
<description>¿Te preocupa que tus datos personales los tenga la CIA, el FBI y Putin?
¿Te has cambiado tu Huawei por que le pasa la biometría de tu cara al gobierno Chino?
¿Pasas de Chrome en favor de Brave por que te preocupa tu privacidad?
¿Pagas 20 pavos al mes por usar una VPN privada que difumine tu rastro por la red?

Pues igual deberías empezar a preocuparte también por la privacidad de otras cosas que te interesan... como tus servidores, por ejemplo.

En esta charla repasaremos las técnicas de extracción de datos más bizarras que hemos encontrado, y veremos cómo ninguno de nosotros, ni de nuestros servidores, está a salvo de la automatización.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1598'>Francisco Javier Barrena Castillo</person>
</persons>
</event>
<event guid='JEvsbcB0sKSRS6fUrJ_Q3g' id='305'>
<date>2020-04-25T11:00:00+02:00</date>
<start>11:00</start>
<duration>00:45</duration>
<room>Aula 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>305-cuando-el-open-source-salto-de-la-pantalla-al-hardware-pasando-por-webauthn</slug>
<title>Cuando el Open Source saltó de la pantalla al hardware pasando por WebAuthn</title>
<subtitle>Montando una web con autenticación passwordless y llaves de seguridad open hardware</subtitle>
<track>Security</track>
<abstract>Con el nuevo estándar propuesto desde la W3C para el registro y login en aplicaciones el panorama de la autenticación cambiará por completo para siempre. Se divisa un futuro sin passwords, con contextos de alta seguridad donde los usuarios podrán probar de forma física que poseen una acreditación válida y controlar en que dispositivos se permite la autenticación. 

Precisamente gracias al status de estándar que le da el W3C y las implementaciones, la mayoría de código abierto, para múltiples plataformas y dispositivos se está produciendo una rápida adopción. Puesto que además se requieren dispositivos hardware para la autenticación, están surgiendo diferentes  opciones Open Source tanto en su firmware como sus diseños físicos. 

En esta charla queremos enseñarte como funciona este nuevo protocolo, con una implementación práctica en forma de web usando **TypeScript** y **.Net Core**, el cual desde hace tiempo forma parte de diferentes iniciativas Open Source, y una **llave usb Open Hardware**.
</abstract>
<description>Con el nuevo estándar propuesto desde la W3C para el registro y login en aplicaciones el panorama de la autenticación cambiará por completo para siempre. Se divisa un futuro sin passwords, con contextos de alta seguridad donde los usuarios podrán probar de forma física que poseen una acreditación válida y controlar en que dispositivos se permite la autenticación. 

Precisamente gracias al status de estándar que le da el W3C y las implementaciones, la mayoría de código abierto, para múltiples plataformas y dispositivos se está produciendo una rápida adopción. Puesto que además se requieren dispositivos hardware para la autenticación, están surgiendo diferentes  opciones Open Source tanto en su firmware como sus diseños físicos. 

En esta charla queremos enseñarte como funciona este nuevo protocolo, con una implementación práctica en forma de web usando **TypeScript** y **.Net Core**, el cual desde hace tiempo forma parte de diferentes iniciativas Open Source, y una **llave usb Open Hardware**.
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1561'>manuvilachan</person>
<person id='1589'>Antonio Marín</person>
</persons>
</event>
<event guid='PCFneLEP3OefTTnPUazztQ' id='329'>
<date>2020-04-25T12:00:00+02:00</date>
<start>12:00</start>
<duration>00:45</duration>
<room>Aula 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>329-open-security</slug>
<title>Open Security</title>
<subtitle>the importan of freedom of the software in CYbersecurity</subtitle>
<track>Security</track>
<abstract>## Introduction

How I use open tools and **freedom of the software** for working as an offensive security professional. From scripts using bash and pyhton, to hardware hacking using Arduino, Linux native utilities and open _pentesting_ tools. This speech is aimed both for tech professionals into security and curious users who wants to know how important is the security community.

## Fast overview
* How is offensive security daily job
* How to write basic bash and Python scripts for security and git push them!
* The importance of community for the security professional area
* The origin of cybersecurity

## Notes, and resources 
I can give this speech either in English or in Spanish. This is [the blog where I write about security](dev.to/terceranexus6) which is also open source. </abstract>
<description>## Introduction

How I use open tools and **freedom of the software** for working as an offensive security professional. From scripts using bash and pyhton, to hardware hacking using Arduino, Linux native utilities and open _pentesting_ tools. This speech is aimed both for tech professionals into security and curious users who wants to know how important is the security community.

## Fast overview
* How is offensive security daily job
* How to write basic bash and Python scripts for security and git push them!
* The importance of community for the security professional area
* The origin of cybersecurity

## Notes, and resources 
I can give this speech either in English or in Spanish. This is [the blog where I write about security](dev.to/terceranexus6) which is also open source. </description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1599'>Paula</person>
</persons>
</event>
<event guid='3N2qyPXPyU6Uo99m4yBpoA' id='470'>
<date>2020-04-25T13:00:00+02:00</date>
<start>13:00</start>
<duration>00:45</duration>
<room>Aula 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>470-las-trampas-de-los-frameworks-django</slug>
<title>Las trampas de los Frameworks: Django</title>
<subtitle></subtitle>
<track>Web</track>
<abstract>A veces las facilidades que nos ofrecen los Frameworks se pueden volver en nuestra contra. Usando Django como modelo para explorar como algunas funcionales que a primera vista nos podrían ser muy útiles, se vuelven en nuestra contra con mucha facilidad:

- ORM -&gt; Es fácil dejarse llevar y crear modelos &quot;gigantes&quot; y poco flexibles y que son una pesadilla en cuanto a rendimiento.
- Señales -&gt; Si nos descuidamos con su uso pueden dar lugar a comportamientos &quot;mágicos&quot; en nuestro código.
- Templates -&gt; Acoplamiento fuerte entre el front-end y el back-end.

Intentaremos dar algunas pautas para que nuestros Frameworks sean nuestras herramientas y no al revés.</abstract>
<description>A veces las facilidades que nos ofrecen los Frameworks se pueden volver en nuestra contra. Usando Django como modelo para explorar como algunas funcionales que a primera vista nos podrían ser muy útiles, se vuelven en nuestra contra con mucha facilidad:

- ORM -&gt; Es fácil dejarse llevar y crear modelos &quot;gigantes&quot; y poco flexibles y que son una pesadilla en cuanto a rendimiento.
- Señales -&gt; Si nos descuidamos con su uso pueden dar lugar a comportamientos &quot;mágicos&quot; en nuestro código.
- Templates -&gt; Acoplamiento fuerte entre el front-end y el back-end.

Intentaremos dar algunas pautas para que nuestros Frameworks sean nuestras herramientas y no al revés.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='190'>Antonio Illescas</person>
</persons>
</event>
<event guid='if97DPdtkIOqKrRREq-NRw' id='461'>
<date>2020-04-25T15:30:00+02:00</date>
<start>15:30</start>
<duration>00:45</duration>
<room>Aula 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>461-diseno-de-hardware-libre-con-python-y-freecad</slug>
<title>Diseño de hardware libre con Python y FreeCAD</title>
<subtitle></subtitle>
<track>Hardware</track>
<abstract>El hardware libre permite que cualquiera pueda fabricar, modificar, distribuir y usar dicho hardware. Para que un dispositivo sea considerado realmente hardware libre es necesario que el diseño y la documentación estén disponibles públicamente, y preferiblemente en un formato abierto y modificable con herramientas libres.
La impresión 3D y Arduino son ejemplos del auge de proyectos de hardware libre y que han simplificado la fabricación y replicación de todo tipo de dispositivos.

Para facilitar la modificación y adaptación de los diseños para otras aplicaciones es recomendable realizar un diseño paramétrico. Esto permite que las dimensiones y características del modelo puedan ser fácilmente alteradas con solo cambiar los valores de sus parámetros.

El diseño parametrizable normalmente requiere el uso de un lenguaje de programación para la descripción del diseño. Esto no solo implica un mayor tiempo y esfuerzo de diseño, sino unos conocimientos de programación que no todos los diseñadores CAD tienen.

En el diseño de hardware libre se recomienda el uso de software libre y estándares abiertos. OpenSCAD es el programa más utilizado para el diseño CAD parametrizable. Si bien OpenSCAD es software libre, no es capaz de exportar los diseños CAD en un formato estándar sin pérdida de la información paramétrica. 

Entre las alternativas a OpenSCAD se encuentra FreeCAD. FreeCAD, además de exportar a ficheros estándar, permite el modelado tanto mediante scripts de Python como de forma gráfica. Python ofrece, entre otras ventajas, el uso de la gran variedad de funciones y métodos de sus bibliotecas. 

La interfaz gráfica de FreeCAD es totalmente configurable y permite añadir nuevas herramientas, menús y bancos de trabajo (workbenches).

En esta charla presentamos un workbench de FreeCAD en el que se integra una biblioteca de diseños parametrizables de modo que el usuario pueda particularizar los modelos para ajustarlos a sus necesidades. Esto se realiza mediante la interfaz gráfica de FreeCAD haciendo que el usuario no necesite ver los scripts de los modelos o incluso sin que precise de grandes conocimientos de diseño CAD.

Además, presentamos una biblioteca de funciones y métodos que faciliten la creación de nuevos modelos paramétricos descritos en Python para ser incluidos en el workbench propuesto.
</abstract>
<description>El hardware libre permite que cualquiera pueda fabricar, modificar, distribuir y usar dicho hardware. Para que un dispositivo sea considerado realmente hardware libre es necesario que el diseño y la documentación estén disponibles públicamente, y preferiblemente en un formato abierto y modificable con herramientas libres.
La impresión 3D y Arduino son ejemplos del auge de proyectos de hardware libre y que han simplificado la fabricación y replicación de todo tipo de dispositivos.

Para facilitar la modificación y adaptación de los diseños para otras aplicaciones es recomendable realizar un diseño paramétrico. Esto permite que las dimensiones y características del modelo puedan ser fácilmente alteradas con solo cambiar los valores de sus parámetros.

El diseño parametrizable normalmente requiere el uso de un lenguaje de programación para la descripción del diseño. Esto no solo implica un mayor tiempo y esfuerzo de diseño, sino unos conocimientos de programación que no todos los diseñadores CAD tienen.

En el diseño de hardware libre se recomienda el uso de software libre y estándares abiertos. OpenSCAD es el programa más utilizado para el diseño CAD parametrizable. Si bien OpenSCAD es software libre, no es capaz de exportar los diseños CAD en un formato estándar sin pérdida de la información paramétrica. 

Entre las alternativas a OpenSCAD se encuentra FreeCAD. FreeCAD, además de exportar a ficheros estándar, permite el modelado tanto mediante scripts de Python como de forma gráfica. Python ofrece, entre otras ventajas, el uso de la gran variedad de funciones y métodos de sus bibliotecas. 

La interfaz gráfica de FreeCAD es totalmente configurable y permite añadir nuevas herramientas, menús y bancos de trabajo (workbenches).

En esta charla presentamos un workbench de FreeCAD en el que se integra una biblioteca de diseños parametrizables de modo que el usuario pueda particularizar los modelos para ajustarlos a sus necesidades. Esto se realiza mediante la interfaz gráfica de FreeCAD haciendo que el usuario no necesite ver los scripts de los modelos o incluso sin que precise de grandes conocimientos de diseño CAD.

Además, presentamos una biblioteca de funciones y métodos que faciliten la creación de nuevos modelos paramétricos descritos en Python para ser incluidos en el workbench propuesto.
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1663'>David Muñoz Bernal</person>
<person id='1689'>Felipe</person>
</persons>
</event>
<event guid='636xEu847DnPOLwnukIs3w' id='471'>
<date>2020-04-25T16:30:00+02:00</date>
<start>16:30</start>
<duration>00:45</duration>
<room>Aula 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>471-jugando-en-linux-desmontando-el-mito</slug>
<title>Jugando en Linux, desmontando el mito</title>
<subtitle>Desde SuperTuxKart hasta los triple A del momento</subtitle>
<track>Meta</track>
<abstract>Siempre ha existido la creencia de que para jugar, necesitas Windows si o si. Pero, ¿y si te dijese que el gaming en Linux está casi a la par que otros sistemas operativos? Valve, Wine, máquinas virtuales, juegos nativos... Todo lo que te gusta, al alcance del pingüino.</abstract>
<description>Siempre ha existido la creencia de que para jugar, necesitas Windows si o si. Pero, ¿y si te dijese que el gaming en Linux está casi a la par que otros sistemas operativos? Valve, Wine, máquinas virtuales, juegos nativos... Todo lo que te gusta, al alcance del pingüino.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='140'>Juanjo Salvador</person>
</persons>
</event>
<event guid='2T-_VkVST93bNBNylqeYtw' id='451'>
<date>2020-04-25T17:30:00+02:00</date>
<start>17:30</start>
<duration>00:45</duration>
<room>Aula 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>451-digital-decoupling-y-otras-historias-de-terror</slug>
<title>Digital Decoupling y otras historias de terror</title>
<subtitle>Del monolito al Cluster de Kubernetes</subtitle>
<track>Meta</track>
<abstract>Muchas organizaciones se están enfrentando a procesos de transformación de sus sistemas legacy, muchos de los cuales mantienen con éxito sistemas críticos con éxito desde hace años (y décadas) pero que son incapaces de implementar los patrones que los nuevos sistemas digitales requieren.
En el camino de transformación de estas organizaciones el concepto de &quot;Digital Decoupling&quot; ayuda a los arquitectos a plantear las estrategias a seguir pero, ¿qué ocurre cuando pasamos del papel a la implementación real de la arquitectura.
En esta charla recorreremos algunos del los problemas (y soluciones) planteados en un proyecto de este tipo y como el equipo de arquitectura tuvo que adaptarse a los problemas reales del cliente más allá de las definiciones formales.</abstract>
<description>Muchas organizaciones se están enfrentando a procesos de transformación de sus sistemas legacy, muchos de los cuales mantienen con éxito sistemas críticos con éxito desde hace años (y décadas) pero que son incapaces de implementar los patrones que los nuevos sistemas digitales requieren.
En el camino de transformación de estas organizaciones el concepto de &quot;Digital Decoupling&quot; ayuda a los arquitectos a plantear las estrategias a seguir pero, ¿qué ocurre cuando pasamos del papel a la implementación real de la arquitectura.
En esta charla recorreremos algunos del los problemas (y soluciones) planteados en un proyecto de este tipo y como el equipo de arquitectura tuvo que adaptarse a los problemas reales del cliente más allá de las definiciones formales.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='389'>restalion</person>
</persons>
</event>
</room>
<room name='Aula 1'>
<event guid='Xro-PtsFEuvK52iJO5CccA' id='517'>
<date>2020-04-25T10:00:00+02:00</date>
<start>10:00</start>
<duration>04:00</duration>
<room>Aula 1</room>
<type>Taller 4h</type>
<language></language>
<slug>517-opensouthkids</slug>
<title>OpensouthKids</title>
<subtitle></subtitle>
<track></track>
<abstract>Taller de programación y actividades enfocadas a los más pequeños. </abstract>
<description>Taller de programación y actividades enfocadas a los más pequeños. </description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='10'>pablonete</person>
</persons>
</event>
<event guid='jjAYWde25jW4P0Fek1Brog' id='495'>
<date>2020-04-25T15:30:00+02:00</date>
<start>15:30</start>
<duration>02:00</duration>
<room>Aula 1</room>
<type>Taller / Workshop</type>
<language></language>
<slug>495-refactor-your-php-code-without-losing-your-health-refactorizar-tu-codigo-php-sin-perder-tu-salud</slug>
<title>Refactor your PHP Code without losing your health / Refactorizar tu Código PHP sin perder tu salud</title>
<subtitle>Working with legacy code is the reality of many developers, learning to refactor is the most powerful weapon / Trabajar con legacy code es la realidad de muchos desarrolladores, aprender a refactorizar es el arma mas poderosa</subtitle>
<track>Development</track>
<abstract>Hola, mi nombre es Antonio Alcaide, soy desarrollador back-end en Enreach. En la oficina de Málaga programamos principalmente en PHP y Java, nos encontramos en un período de transición a Microservicios y somos entusiastas del software libre.

---

Hello my name is Antonio Alcaide, I am a back-end developer at Enreach. In the office of Málaga we program mainly in PHP and Java, we are in a period of transition to Microservices and we are free software enthusiasts.

---

Presentación:

Taller especializado en refactorizacion de código. Adaptar antiguos códigos regalando al proyecto una nueva vida.

Navegando a través de diferentes claves refactorizaremos un código legacy, cada participante puede seguir el taller con un código que traiga consigo o bien el código propuesto. Durante el mismo, iremos profundizando en diferentes conceptos ejecutando los cambios commit a commit.

Durante el taller aplicaremos Principios SOLID, veremos algunos patrones de diseño y los implementaremos sin abusar de los mismos, escribiremos algún test, se harán menciones de Clean Code que ayudarán a que nuestro programa gane legibilidad, nos iremos dando cuenta como poco a poco nuestro proyecto irá migrando hacia una arquitectura hexagonal.

El objetivo final del taller, es otorgar a los asistentes una serie de conocimientos que puedan ser útiles en el día a día.

---
Presentation:

Workshop specialized in code refactoring, adapting old legacy codes giving the project a new life is possible.

Navigating through different keys we will refactor a legacy code, each participant can follow the workshop with a code that brings with them or the code proposed in the workshop. During the same we will go deeper into different concepts executing the changes commit to commit.

During the workshop we will apply SOLID Principles, we will see some design patterns and implement them without abusing them, we will write some tests, mentions of Clean Code will be made that will help our program gain legibility, we will gradually realize our project will migrate towards a hexagonal architecture.

The final objective of the workshop is to give attendees a series of knowledge that they can use on a day-to-day basis.</abstract>
<description>Hola, mi nombre es Antonio Alcaide, soy desarrollador back-end en Enreach. En la oficina de Málaga programamos principalmente en PHP y Java, nos encontramos en un período de transición a Microservicios y somos entusiastas del software libre.

---

Hello my name is Antonio Alcaide, I am a back-end developer at Enreach. In the office of Málaga we program mainly in PHP and Java, we are in a period of transition to Microservices and we are free software enthusiasts.

---

Presentación:

Taller especializado en refactorizacion de código. Adaptar antiguos códigos regalando al proyecto una nueva vida.

Navegando a través de diferentes claves refactorizaremos un código legacy, cada participante puede seguir el taller con un código que traiga consigo o bien el código propuesto. Durante el mismo, iremos profundizando en diferentes conceptos ejecutando los cambios commit a commit.

Durante el taller aplicaremos Principios SOLID, veremos algunos patrones de diseño y los implementaremos sin abusar de los mismos, escribiremos algún test, se harán menciones de Clean Code que ayudarán a que nuestro programa gane legibilidad, nos iremos dando cuenta como poco a poco nuestro proyecto irá migrando hacia una arquitectura hexagonal.

El objetivo final del taller, es otorgar a los asistentes una serie de conocimientos que puedan ser útiles en el día a día.

---
Presentation:

Workshop specialized in code refactoring, adapting old legacy codes giving the project a new life is possible.

Navigating through different keys we will refactor a legacy code, each participant can follow the workshop with a code that brings with them or the code proposed in the workshop. During the same we will go deeper into different concepts executing the changes commit to commit.

During the workshop we will apply SOLID Principles, we will see some design patterns and implement them without abusing them, we will write some tests, mentions of Clean Code will be made that will help our program gain legibility, we will gradually realize our project will migrate towards a hexagonal architecture.

The final objective of the workshop is to give attendees a series of knowledge that they can use on a day-to-day basis.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1676'>Antonio Alcaide</person>
</persons>
</event>
</room>
<room name='Sala 3'>
<event guid='LOOPNMgY83A_cYbqsck_fA' id='294'>
<date>2020-04-25T10:00:00+02:00</date>
<start>10:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>294-traefik-enruta-servicios-de-docker-sin-que-te-duela-la-cabeza</slug>
<title>Traefik: Enruta servicios de docker sin que te duela la cabeza</title>
<subtitle></subtitle>
<track>Systems</track>
<abstract>Si usamos docker para ejecutar servicios, tanto en entornos de desarrollo, como de pre y producción, uno de los problemas es acceder a ellos de la forma más sencilla posible.

En desarrollo, si lo vinculamos a un puerto fijo, tenemos que estar levantando y tirando contenedores según los vayamos necesitando. Si cada uno va a un puerto distinto, tenemos que ir con cuidado de no repetir ninguno. Si usamos un puerto dinámico, tenemos el incordio de tener que mirarlo cada vez que lo iniciemos. No hay solución que no nos complique la vida de alguna manera.

En producción la cosa no mejora salvo que usemos algún orquestador, lo que a veces no siempre necesitamos. La solución más simple es configurar nginx para ir accediendo a los contenedores. Pero igualmente se nos plantean los mismos escenarios que en desarrollo, a lo que hay que sumar la configuración de los certificados. Todo a mano.

Traefik es un proxy inverso de código abierto que nos resolverá estos y otros problemas. Una vez que lo conozcas te preguntarás como pudiste trabajar sin él.</abstract>
<description>Si usamos docker para ejecutar servicios, tanto en entornos de desarrollo, como de pre y producción, uno de los problemas es acceder a ellos de la forma más sencilla posible.

En desarrollo, si lo vinculamos a un puerto fijo, tenemos que estar levantando y tirando contenedores según los vayamos necesitando. Si cada uno va a un puerto distinto, tenemos que ir con cuidado de no repetir ninguno. Si usamos un puerto dinámico, tenemos el incordio de tener que mirarlo cada vez que lo iniciemos. No hay solución que no nos complique la vida de alguna manera.

En producción la cosa no mejora salvo que usemos algún orquestador, lo que a veces no siempre necesitamos. La solución más simple es configurar nginx para ir accediendo a los contenedores. Pero igualmente se nos plantean los mismos escenarios que en desarrollo, a lo que hay que sumar la configuración de los certificados. Todo a mano.

Traefik es un proxy inverso de código abierto que nos resolverá estos y otros problemas. Una vez que lo conozcas te preguntarás como pudiste trabajar sin él.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1582'>Sergio Gómez Bachiller</person>
</persons>
</event>
<event guid='5qDe5p4reflmRXcz0J3UMg' id='515'>
<date>2020-04-25T11:00:00+02:00</date>
<start>11:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>515-drlm-version-3-from-bash-to-go</slug>
<title>DRLM version 3: From Bash to Go</title>
<subtitle></subtitle>
<track>Systems</track>
<abstract>En esta charla haremos una muy breve introducción al proyecto DRLM y explicaremos los motivos
por los que hemos decidido realizar semejantes cambios para la futura version.
También mostraremos en que punto estamos del desarrollo de la nueva DRLMv3.

Disponemos de un entorno de desarrollo, testing y compilación completo en Docker para facilitar
la colaboración y el uso del proyecto.
En esta sessión lo usaremos para mostrar lo facil que es disponer de un
entorno completo con un par de comandos y ponernos a &quot;trastear&quot;.

Para finalizar realizaremos una pequeña DEMO de lo que ya, a dia de hoy, podemos
hacer en la nueva versión.</abstract>
<description>En esta charla haremos una muy breve introducción al proyecto DRLM y explicaremos los motivos
por los que hemos decidido realizar semejantes cambios para la futura version.
También mostraremos en que punto estamos del desarrollo de la nueva DRLMv3.

Disponemos de un entorno de desarrollo, testing y compilación completo en Docker para facilitar
la colaboración y el uso del proyecto.
En esta sessión lo usaremos para mostrar lo facil que es disponer de un
entorno completo con un par de comandos y ponernos a &quot;trastear&quot;.

Para finalizar realizaremos una pequeña DEMO de lo que ya, a dia de hoy, podemos
hacer en la nueva versión.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='352'>Didac Oliveira</person>
</persons>
</event>
<event guid='QhuPpuw8UfKNOwe7cbcVXg' id='518'>
<date>2020-04-25T12:00:00+02:00</date>
<start>12:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>518-infraestructura-en-un-proyecto-de-alto-rendimiento</slug>
<title>Infraestructura en un proyecto de alto rendimiento</title>
<subtitle></subtitle>
<track>Systems</track>
<abstract>Infraestructura en un proyecto de alto rendimiento</abstract>
<description>Infraestructura en un proyecto de alto rendimiento</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1701'>Alejandro Gómez</person>
</persons>
</event>
<event guid='W-5wVWshtpyq_-XbbVhMBg' id='455'>
<date>2020-04-25T13:00:00+02:00</date>
<start>13:00</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>455-nixos-un-ano-con-esta-distribucion-gnu-linux</slug>
<title>NixOS: un año con esta distribución GNU/Linux</title>
<subtitle></subtitle>
<track>Systems</track>
<abstract>NixOS es una distribución GNU/Linux con un enfoque particular en lo
que respecta a la gestión de paquetes. En otras distribuciones, con
sus gestores de paquetes propios, una actualización puede corromper el
estado del sistema dejándonos en el peor de los casos con la
obligación de reinstalar el sistema operativo.

NixOS y su gestor de paquetes Nix prometen una *declaración funcional*
del sistema, es decir, la configuración es inmutable y de esta forma
es más fiable realizar actualizaciones.

En esta charla describiré mi experiencia usando NixOS como mi
principal sistema operativo, compartiendo enseñanzas y comparándolo
con otras distribuciones que he usado.
</abstract>
<description>NixOS es una distribución GNU/Linux con un enfoque particular en lo
que respecta a la gestión de paquetes. En otras distribuciones, con
sus gestores de paquetes propios, una actualización puede corromper el
estado del sistema dejándonos en el peor de los casos con la
obligación de reinstalar el sistema operativo.

NixOS y su gestor de paquetes Nix prometen una *declaración funcional*
del sistema, es decir, la configuración es inmutable y de esta forma
es más fiable realizar actualizaciones.

En esta charla describiré mi experiencia usando NixOS como mi
principal sistema operativo, compartiendo enseñanzas y comparándolo
con otras distribuciones que he usado.
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='902'>Jose Miguel Martinez</person>
</persons>
</event>
<event guid='-GBIMAifiXjgyDDfao_mGg' id='513'>
<date>2020-04-25T15:30:00+02:00</date>
<start>15:30</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>513-containers-from-scratch</slug>
<title>Containers from scratch</title>
<subtitle></subtitle>
<track>Systems</track>
<abstract>Esta charla técnica explica cómo ejecutar containers desde cero, usando coreutils y cgroups. Revisaremos los conceptos básicos implementando scripts que consiguen ejecutar containers con diferentes restricciones.</abstract>
<description>Esta charla técnica explica cómo ejecutar containers desde cero, usando coreutils y cgroups. Revisaremos los conceptos básicos implementando scripts que consiguen ejecutar containers con diferentes restricciones.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1695'>cbueno</person>
</persons>
</event>
<event guid='jz1gUXVA102KrJgm4y-tfA' id='344'>
<date>2020-04-25T16:30:00+02:00</date>
<start>16:30</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>344-la-estandarizacion-de-ci-cd-en-la-infraestructura-gitops</slug>
<title>La estandarización de CI/CD en la infraestructura: Gitops</title>
<subtitle>Charla sobre la metodología GitOps de despliegue de infraestructura como código</subtitle>
<track>Systems</track>
<abstract>GitOps es una metodología de despliegue de infraestructura como código pensada para sobrevivir en los entornos cambiantes a la que la Cloud nos está llevando.

En está charla revisaremos los principios de está metodología (https://www.weave.works/technologies/gitops/):

1. Todos el sistema es descrito declarativamente.
2. El estado deseado del sistema versionado en Git.
3. Los cambios aprobados se aplican automáticamente en el sistema.
4. Agentes de software para garantizar la corrección y alertar sobre divergencias.

Y hablaremos de varias soluciones que aplican está filosofía, desde entornos CI/CD con Terraform a soluciones sobre Kubernetes tipo Flux y Flagger.</abstract>
<description>GitOps es una metodología de despliegue de infraestructura como código pensada para sobrevivir en los entornos cambiantes a la que la Cloud nos está llevando.

En está charla revisaremos los principios de está metodología (https://www.weave.works/technologies/gitops/):

1. Todos el sistema es descrito declarativamente.
2. El estado deseado del sistema versionado en Git.
3. Los cambios aprobados se aplican automáticamente en el sistema.
4. Agentes de software para garantizar la corrección y alertar sobre divergencias.

Y hablaremos de varias soluciones que aplican está filosofía, desde entornos CI/CD con Terraform a soluciones sobre Kubernetes tipo Flux y Flagger.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='273'>Alejandro Escanero Blanco</person>
</persons>
</event>
<event guid='CdZxX9a00RjcSwcL9RTfmw' id='298'>
<date>2020-04-25T17:30:00+02:00</date>
<start>17:30</start>
<duration>00:45</duration>
<room>Sala 3</room>
<type>Charla / Talk</type>
<language></language>
<slug>298-construccion-de-robots-moviles</slug>
<title>Construcción de Robots móviles</title>
<subtitle></subtitle>
<track>Hardware</track>
<abstract>La charla consiste en dar una explicación de construcción de un robot de reconocimiento desde el diseño, 
hasta la fase de programación incluyendo la fase de construcción, así como su software.  
El proyecto lo pueden ver en  [Proyecto hastag](http://espelectronicdesign.com/ProyectoRobotica/Proyecto_Hashtag.php).

Caracteríasticas:
•	Robot teleoperado.
•	Arduino Mega.
•	Programa de control en C#.
•	Dimensiones:
	o	70 cm de largo.
	o	50 cm de ancho.
	o	40 cm de alto.
•	Cámara.
•	GPS.
•	Red GSRM.
•	Control inalámbrico.

Vídeo del robot.
https://www.dropbox.com/sc/3oltua2pyinp0cq/kNM4-3_b6a
</abstract>
<description>La charla consiste en dar una explicación de construcción de un robot de reconocimiento desde el diseño, 
hasta la fase de programación incluyendo la fase de construcción, así como su software.  
El proyecto lo pueden ver en  [Proyecto hastag](http://espelectronicdesign.com/ProyectoRobotica/Proyecto_Hashtag.php).

Caracteríasticas:
•	Robot teleoperado.
•	Arduino Mega.
•	Programa de control en C#.
•	Dimensiones:
	o	70 cm de largo.
	o	50 cm de ancho.
	o	40 cm de alto.
•	Cámara.
•	GPS.
•	Red GSRM.
•	Control inalámbrico.

Vídeo del robot.
https://www.dropbox.com/sc/3oltua2pyinp0cq/kNM4-3_b6a
</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1565'>Luis Miguel Fernández Espinosa</person>
</persons>
</event>
</room>
<room name='Aula 2'>
<event guid='ZvvuRrZTS6XWqUTPr_P01A' id='261'>
<date>2020-04-25T10:00:00+02:00</date>
<start>10:00</start>
<duration>02:00</duration>
<room>Aula 2</room>
<type>Taller / Workshop</type>
<language></language>
<slug>261-taller-de-desarrollo-de-juegos-retro-con-herramientas-libres</slug>
<title>Taller de desarrollo de Juegos Retro con herramientas Libres</title>
<subtitle>Taller de creación de videojuegos retro para Sega mega Drive</subtitle>
<track></track>
<abstract> Muchos conoceran las antiguas consolas de los años noventa como la **Super Nintendo** o la **Mega Drive**. Muchos habran pasado muchas horas jugando con estos sistemas y seguro que han pensado en hacer algún juego para estas consolas. Ahora puedes hacerlo con herramientas más modernas en vez del antiguo ensamblador. En este taller aprenderas a usar herramientas libres para poder **desarrollar tu propio videojuego para Sega Mega Drive**. Solo necesitas traer tu portatil, ganas, y un poco de conocimiento básico de C. Para el final del taller podrás tener **tu propio videojuego que puedes ejecutar en un emulador o en una megaDrive Real**.

Para poder seguir este taller, recomendamos tener instalado [vscode](https://code.visualstudio.com/) y el kit de desarrollo ([SGDK](https://github.com/Stephane-D/SGDK)). Durante el taller veremos como configurarlo.</abstract>
<description> Muchos conoceran las antiguas consolas de los años noventa como la **Super Nintendo** o la **Mega Drive**. Muchos habran pasado muchas horas jugando con estos sistemas y seguro que han pensado en hacer algún juego para estas consolas. Ahora puedes hacerlo con herramientas más modernas en vez del antiguo ensamblador. En este taller aprenderas a usar herramientas libres para poder **desarrollar tu propio videojuego para Sega Mega Drive**. Solo necesitas traer tu portatil, ganas, y un poco de conocimiento básico de C. Para el final del taller podrás tener **tu propio videojuego que puedes ejecutar en un emulador o en una megaDrive Real**.

Para poder seguir este taller, recomendamos tener instalado [vscode](https://code.visualstudio.com/) y el kit de desarrollo ([SGDK](https://github.com/Stephane-D/SGDK)). Durante el taller veremos como configurarlo.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1566'>Victor Suarez</person>
</persons>
</event>
<event guid='S3HARNkzHcjO_XnywutSWQ' id='510'>
<date>2020-04-25T12:00:00+02:00</date>
<start>12:00</start>
<duration>02:00</duration>
<room>Aula 2</room>
<type>Taller / Workshop</type>
<language></language>
<slug>510-taller-de-pintura-digital-con-krita</slug>
<title>Taller de pintura digital con Krita.</title>
<subtitle></subtitle>
<track></track>
<abstract>Si eres de los que te gusta la pintura digital y quieres pasar un buen rato aprendiendo y divirtiéndote, ven a este taller de pintura digital con Krita.

Va a ser un taller donde es necesario que traigas tu portátil y tu tableta de dibujo.
Si traes Krita instalado mejor. Si no, espero poder ayudarte.

Si te gusta la idea...¡Bienvenido! vamos a aprender juntos un buen rato.</abstract>
<description>Si eres de los que te gusta la pintura digital y quieres pasar un buen rato aprendiendo y divirtiéndote, ven a este taller de pintura digital con Krita.

Va a ser un taller donde es necesario que traigas tu portátil y tu tableta de dibujo.
Si traes Krita instalado mejor. Si no, espero poder ayudarte.

Si te gusta la idea...¡Bienvenido! vamos a aprender juntos un buen rato.</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='1308'>Ramón Miranda</person>
</persons>
</event>
<event guid='xCp-zl2qZzp_5NDMswWmhA' id='259'>
<date>2020-04-25T15:30:00+02:00</date>
<start>15:30</start>
<duration>02:00</duration>
<room>Aula 2</room>
<type>Taller / Workshop</type>
<language></language>
<slug>259-flutter-un-codigo-todas-las-plataformas</slug>
<title>Flutter, un código, todas las plataformas</title>
<subtitle>¡Crea tu primer ambient computing!</subtitle>
<track>Development</track>
<abstract># En este taller aprenderemos a crear nuestra primera aplicación desplegable en Android, IOS, Web y Desktop desde un mismo código.

### Prework:

- Tener instalado un IDE compatible con Flutter como VSCode o Android Studio.
- Tener instalado Flutter -&gt; https://flutter.dev/docs/get-started/install
- ¡Muchas ganas de aprender!

### El taller constará de 3 partes:

- Introducción a Flutter y sus Widgets
- Hello world y simples layouts
- Programación asíncrona, llamadas a API y trabajar con datos.

**Desde [Flutterconf](https://flutterconf.dev/), evento anual sobre Flutter en España, nos proponemos hacer llegar esta tecnología a muchas más personas para que el desarrollo de aplicaciones móviles multiplataforma sea más sencilla.**</abstract>
<description># En este taller aprenderemos a crear nuestra primera aplicación desplegable en Android, IOS, Web y Desktop desde un mismo código.

### Prework:

- Tener instalado un IDE compatible con Flutter como VSCode o Android Studio.
- Tener instalado Flutter -&gt; https://flutter.dev/docs/get-started/install
- ¡Muchas ganas de aprender!

### El taller constará de 3 partes:

- Introducción a Flutter y sus Widgets
- Hello world y simples layouts
- Programación asíncrona, llamadas a API y trabajar con datos.

**Desde [Flutterconf](https://flutterconf.dev/), evento anual sobre Flutter en España, nos proponemos hacer llegar esta tecnología a muchas más personas para que el desarrollo de aplicaciones móviles multiplataforma sea más sencilla.**</description>
<recording>
<license />
<optout>false</optout>
</recording>
<persons>
<person id='804'>Alfredo Bautista Santos</person>
</persons>
</event>
</room>
</day>
</schedule>
