$30 off During Our Annual Pro Sale. View Details »

Inside TIPI

Pablo Martín
November 24, 2016

Inside TIPI

Tipi Ciudadano es un proyecto de incidencia política que rescata, categoriza y ordena la información producida en el Congreso de los Diputados (España), siempre en el marco de 21 temáticas relacionadas con la pobreza y la exclusión social.

En esta presentación se hace un amplio repaso a toda la tecnología que hace que tipiciudadano.es pueda funcionar día a día y ofrecer los datos que ofrece.

Proyecto de Ciecode (Fundación Salvador Soler) y la cooperativa Enreda.

Pablo Martín

November 24, 2016
Tweet

More Decks by Pablo Martín

Other Decks in Technology

Transcript

  1. Inside TIPI
    Universidad Politécnica de Valencia
    25 de noviembre de 2016

    View Slide

  2. Pablo Martín Muñoz
    Hacker Cívico | @pr3ssh
    Socio trabajador de Enreda.Coop
    Programador de TipiCiudadano.es
    Cofundador de Openkratio.Org

    View Slide

  3. A modo de intro...

    View Slide

  4. #CowCorollary
    Las vacas se alimentan de hierba en el campo y todo lo que comen es procesado y desechado en
    forma de heces. Dichas heces son depositadas en el campo, el cual las utiliza como nutriente para
    generar más hierba y por ello generar más alimento para las vacas.
    Las aplicaciones consumen datos para su funcionamiento y al final generan datos que serán

    View Slide

  5. View Slide

  6. BigData
    MediumData
    SmallData
    TinyData
    MicroData
    NanoData

    View Slide

  7. ● Rendición de cuentas
    ● Apertura de procesos participativos
    ● Investigación
    ● Internet de las cosas
    ● Infomediarios
    ● Marketing
    ● Nuevas economías
    ● …
    ● Incidencia política
    Proyectos basados en datos

    View Slide

  8. tipiciudadano.es

    View Slide

  9. View Slide

  10. Arquitectura de TIPI
    ● Aplicación web
    ● API
    ● Motor
    ● Base de datos
    ● Sistema de notificaciones
    Nota: Muchos de estos elementos son básicos para un proyecto basado en datos.

    View Slide

  11. La web de TIPI
    ● Web orientada a datos
    ● Buscador básico y avanzado
    ● Exportación de datos a CSV (formato reutilizable)
    ● Navegación completa
    ● Gráfica resumen
    ● Sistema de rankings
    ● Perfil de usuario
    ● Suscripción temática

    View Slide

  12. El motor de TIPI
    ● Obtención de datos
    ● Limpieza de datos
    ● Procesamiento de datos
    ● Análisis de datos
    ● Resumen
    ● Notificaciones

    View Slide

  13. SQL vs NoSQL
    ● Sistema relacional vs Sistema no relacional
    ● Implicaciones en velocidad de lectura/escritura
    ● Tipo y coste de escalabilidad
    ● Estructuramiento fuerte de datos vs Schemaless

    View Slide

  14. MongoDB almacena los datos
    ● Sistema NoSQL con una gran comunidad
    ● Gran ecosistema de servicios
    ● API muy potente (sobretodo la v3)
    ● Integración con muchos frameworks y lenguajes
    ● Instalación sencilla
    ● Lenguaje JSON (BSON para compresión)
    ● Integración directa con MeteorJS ;)
    ● mongodb.com

    View Slide

  15. MeteorJS en la capa de aplicación
    ● Javascript como lenguaje de la web
    ● MeteorJS habla javascript tanto en cliente como en servidor
    ● Mecanismo de publicación y suscripción
    ● Real time (data) apps (usando websockets)
    ● Bindings entre el elemento HTML y el dato
    ● Sistema de paquetes (atmospherejs.com)
    ● Integración directa con MongoDB ;)
    ● www.meteor.com

    View Slide

  16. D3js para la visualización
    ● Sistema de visualización basado en javascript
    ● Construye elementos SVG (renderizables por navegadores modernos)
    ● Facilidad de uso
    ● Amplio número de librerías y ejemplos
    ● d3js.com

    View Slide

  17. D3js para la visualización
    Un pequeño consejo: piensa en el usuario y elige y valida la visualización

    View Slide

  18. La rebelión de los crones
    ● Cron: tarea programable en el tiempo y que se ejecuta en background
    crontab -l # for listing
    crontab -e # for editing
    ● El tiempo, su mayor enemigo:
    ○ ¿Cuánto tiempo tarda su ejecución?
    ○ ¿Ha terminado ya la tarea de la que depende otra?

    View Slide

  19. Luigi to the rescue
    ● Herramienta creada por Spotify
    ● Usada gestionar tareas relacionadas en proyectos de BigData
    ● Construye sistema de ejecución basado en tuberías de procesos
    ● Liberado en Github para su uso
    ● github.com/spotify/luigi

    View Slide

  20. Scrapy obtiene los datos
    ● Obtención de información mediante webscraping
    ● Scrapy como librería base
    ● Python como lenguaje
    ● Muy potente y versátil
    ● Fácil integración con otras librerías Python
    ● scrapy.org

    View Slide

  21. El etiquetado de los datos
    ● Minería de textos básica
    ● Basada en reconocimiento de patrones (pcre)
    ● Casi 3000 expresiones regulares
    ● Implementación de “barajado de expresiones”

    View Slide

  22. Envío de alertas
    ● En el etiquetado se generan las diferentes alertas
    ● Se obtienen los usuarios y sus preferencias de temáticas
    ● Se envían los emails con las diferentes alertas a cada uno
    ● Usamos Sparkpost para el envío

    View Slide

  23. Las estadíßticas deTIPI
    ● Método de agregación de MongoDB
    db.iniciativas.aggregate({ $match: … }, { $unwind: … }, { $group: … } )
    ● Estadísticas que calculamos
    ○ Sumatorio de iniciativas de cada temática
    ○ Diputadas/os más activas/os por cada temática
    ○ Grupos más activos por temática
    ○ Últimas iniciativas de cada temática

    View Slide

  24. La API de TIPI
    ● REST API
    ● Mecanismo de reutilización (además de la exportación a CSV)
    ● Integración con otras aplicaciones
    ● tipiciudadno.es/api-doc
    ● Obtener las últimas 5 iniciativas de Sanidad:
    curl http://www.tipiciudadano.es/api/v1/tipis?limit=5&dict=sanidad
    ● Obtener las/os diputadas/os más activas/os en Sanidad:
    curl http://www.tipiciudadano.es/api/v1/stats/bydeputies/sanidad

    View Slide

  25. Código 100% libre
    ● Web: http://github.com/ciecode-madrid/tipi
    ● Motor: http://github.com/ciecode-madrid/tipi-engine

    View Slide

  26. más en:
    tipiciudadano.es
    enreda.coop/trabajos/tipi-ciudadano/

    View Slide