OrderedCollection [
	GrafoscopioNode {
		#header : '%metadata',
		#body : '| metadata pandocOptions revision |

revision := {\'thisNotebook\' -> \'markdownFileChecksumUpto: 10\'} asDictionary.
pandocOptions := {
\' --pdf-engine=lualatex \', 
\' -H preamble.tex \',
\' --variable fontsize=12pt\', 
\' --variable documentclass:book \', 
\' --variable papersize:letter \',
\' --variable classoption:openright \',
\' --top-level-division=chapter \'
}.
metadata := { 
\'title\' -> \'Microblog y micropolítica: Retratos de datos y data selfies en Twitter\'.
\'lang\' -> \'es\'.

\'pandocOptions\' -> pandocOptions
} asOrderedDictionary.

',
		#tags : OrderedCollection [
			'código'
		],
		#children : OrderedCollection [ ],
		#parent : GrafoscopioNode {
			#header : 'Arbol principal',
			#body : '',
			#tags : OrderedCollection [
				'código'
			],
			#children : @1,
			#level : 0,
			#nodesInPreorder : OrderedCollection [
				@5,
				@2,
				GrafoscopioNode {
					#header : '%idea Dia 1',
					#body : 'Presentamos los proyectos.',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						''
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 2',
					#body : 'Taller de Personal Data.',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						''
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 3',
					#body : '---
breaks: false

---

# Data Selfies Día 3, en Visualizar 2018

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior]() | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia4)

## Presentación de los asistentes, panorámica y de la metodología

Cuatros pasos:

  - Colectar los datos.
  - Publicarlos.
  - Procesarlos y Visualizarlos.
    - [Grafoscopio][grafoscopio]

  - Apuestas de carácter estético y ético:
    - El [Data Week](https://mutabit.com/dataweek/):
      (Anti)hackatón+taller:
      - Anti: no es la hackatón fashionista.
      - hackatón: Intensiva y orientada a prototipos.
      - Taller: aprendemos haciendo y mediante ejemplo, mutuo.
    - Una "hackatón" es:
      - Puente entre el pasado y el futuro de una comunidad (usualmente de caracter festivo).
      - Un lugar de diálogo entre las comunidades de base y las instituciones, usando el 
        lenguaje de los prototipos.
      - Fortalecer y mostrar capacidades en comunidades de base. 
  - Apuestas de carácter tecnológico:
    - "Infraestructuras de bolsillo":
      - Simples.
      - Autocontenidas: no requieren de muchas dependencias externas.
      - Online + Offline.
    - Perspectivas críticas en tecnología.
    - Herramientas amoldables  
      - Mapa mental:
        - [Vectorial (SVG)](http://mutabit.com/grafoscopio/Docs/En/Talks/Overview/grafoscopio-mapa.svg).
          - [Jupyter](https://jupyter.org/).
        - [Web (HTML)](http://mutabit.com/grafoscopio/Docs/En/Talks/Overview/grafoscopio-mapa.html).
    - Reproducible:
      - [Panama Papers](http://mutabit.com/offray/blog/en/entry/panama-papers-1).
      - [Manifiesto Hackers](http://mutabit.com/offray/blog/en/entry/panama-papers-1).
      - [Manual de Periodismo de Datos][mapeda].

## Documentación Ágil

  - [Reproducible Remixable Research and Publishing](https://docutopia.tupale.co/inkit:r3p:toc)
    - [Agile documentación](https://docutopia.tupale.co/inkit:r3p:agiledoc#).
    - [Markdown](./markdown).

Después de hacer nuestro ejercicio de aprendizaje,
compartamos el enlace acá:

  - [Texto Ferran](https://docutopia.tupale.co/arenara:prueba1visualizar).
  - [Texto Samuel](https://docutopia.tupale.co/arenara:%3CMyPad%3E).

## De los *data silos* a los *data commons*

Queremos alentar una perspectiva crítica sobre alfabetismo digital y los datos,
diferente a la introducción tipo "[hola mundo][hola-mundo]"

Extenderemos lo [hecho para celebrar el Open Data Day][odd].

Pedíamos dos cosas:
 - [Invitar][invitacion] a los políticos e instituciones.
 - Publicar nosotros mismos los datos. Esta segunda parte es la que explicamos a continuación.

:::info
 Es diferente la portabilidad a la transparencia.
 Recomendamos leer este [artículo de la EFF al respecto][transparency-vs-portability]
:::

### Colectar los datos (de los silos)

Seguimos las [instrucción de exportación][twitter:exportacion].


### Publicalos en los *commons*

Seguimos las [instrucciones de publicación](./twitter:publicacion).

[hola-mundo]: http://mutabit.com/offray/blog/en/entry/dumb-hello-world
[invitacion]: http://mutabit.com/repos.fossil/dataweek/doc/tip/Artefactos/OpenDataDay/Invitacion/index.html
[mapeda]: http://mutabit.com/repos.fossil/mapeda/
[odd]: http://mutabit.com/repos.fossil/dataweek/doc/tip/Artefactos/OpenDataDay/index.html
[transparency-vs-portability]: https://www.eff.org/deeplinks/2018/09/what-we-mean-when-we-say-data-portability
[twitter:exportacion]: https://docutopia.tupale.co/twitter:exportacion#

[grafoscopio]: https://mutabit.com/grafoscopio/',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'https://docutopia.tupale.co/vis18:dataselfies:dia3',
						'https://docutopia.tupale.co/vis18:dataselfies:dia3/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 4',
					#body : '---
breaks: false

---

# Data Selfies día 4, en Visualizar 2018

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia3) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia5)

## Recuento

  - Mejorar la navegación: [Registro en CodiMD](./inkit:r3p:codimd#).

## Ubicar el problema:

- Estamos navegando [océanos Azules y Rojos](https://en.wikipedia.org/wiki/Blue_Ocean_Strategy)
  y ubicando nuestro propio oceáno azul (puede ser una laguna).
- Qué parte del oceáno habitamos:
  - [Documentación y Datos](./markdown).
    ![](https://docutopia.tupale.co/uploads/upload_4e1775c0726a355ac50203d0ef1db2de.jpg)
    - Ejp: [Manual de Periodismo](http://mutabit.com/repos.fossil/mapeda/uv/mapeda.pdf).
  - Código e infraestructura:
    ![](https://docutopia.tupale.co/uploads/upload_70233ab5327da3022595df9af91f653d.jpg)


## Abrir el problema:

Eso implica considerar la relación entre:

  - Los datos,
  - las preguntas,
  - las respuestas/visualizaciones.

Esto es lo que hemos hecho previamente es una [maqueta de los data selfies][dataselfies-prev],

## Ejercicio

Ahora consideraremos un catalogo de visualizaciones:
- [Por función](https://datavizcatalogue.com/search.html): Qué quiero mostrar.
- [Por técnica](https://datavizcatalogue.com/index.html): Cómo puedo revisarlos. 

La intención es revisar el catálogo anterior y mirar si podemos preguntarnos nuevas
preguntas o responder las antiguas con las técnicas que el catálogo presenta, de
modo que aumentemos el repertorio de *data selfies* posibles.

Al final la intención es proponer un técnica de visualización y una pregunta que podamos responder con ella.


| Pregunta | Técnica | Por que |
| -------- | -------- |-----|
| ¿Cuántas variables hay un tuit | | Nos permite cartografiar las preguntas posibles|
| ¿Cuando son más activos los retuits con respecto a la época electoral? | Bar Char | Es una visualización rápida y fácil de entender |
| ¿Cuándo/Dónde están las contradicciones en su discurso? | | |

Otras preguntas abiertas:

  - ¿Dónde están ubicados los participantes en una conversación?
  - ¿Hasta dónde acotar la cantidad de tuits o retuits en un visualización?
  - ¿Qué tanto aportan los colores en la distinción del tipo de mensaje?
  - ¿Están al mismo nivel los conceptos de tuit, retuit, y *reply*?
  - ¿Cuándo parte de tu discurso público se vuelve en tu contra?

## Instalar Grafoscopio

Seguimos las instrucciones de [instalación de Grafoscopio](./grafoscopio).

:::danger
  Es importante actualizar Grafoscopio y su documentación desde el menú "Update" de la barra superior, después de la instalación.
:::

## Usar Grafoscopio

Explorando algunos elementos del [Manual de Grafoscopio][grafoscopio-manual]:

  - Crear jerarquías de documentos.
  - Tipos de nodos: texto y de código.
  - Cargar libretas de la web.
  - Salvar una libreta (terminan en `.ston`).
  - Ejemplos de libretas:
    - Dataviz (Panama Papers, preempaquetado).
    - [Manual de Periodismo de Datos][mapeda-ston].

### Explorar los datos de Twitter

Vamos a abrir una libreta interactiva de Grafoscopio y desde ella vamos a explorar el Dataset que ayer
exportamos, intentando contestar las preguntas que
nos hemos formulado al respecto, e introduciendo de manera paralela, el lenguaje de Smalltalk.

  - Abrir el archivo [data-selfies.ston](http://mutabit.com/repos.fossil/dataweek/doc/tip/Artefactos/DataSelfies/data-selfies.ston).
  - Intentamos ejecutar el ejemplo. No funciono,
    y vamos a depurarlo.

### Compatir trozos de código

Publicación de scripts, es una manera de compartir trozos de código, similar a lo que en otros sistemas se conoce como [Pastebin](https://es.wikipedia.org/wiki/Pastebin).

En caso de Pharo, este cuenta con sus propio sistema de pastebin (cesta de pegado), para publicar y compartir trozos de código.

  - Hacemos click en el ícono de la puerta ("Remote publish") y nos preguntará si queremos publicarlo en línea:
 
    ![](https://i.imgur.com/knmgHE5l.png)
   
   decimos que sí y esto nos dará un enace que podemos
   compartir con el resto, en este caso: http://ws.stfx.eu/2G0DJ43LQOEC

Vamos a aprender cómo leer y depurar el código (corregir lo que no funciona).

### Notas sobre el código

En Smalltalk siempre voy a programar de la forma

```
  Objeto mensaje
```

Que se parece mucho a las formas de los lenguajes naturales con:

```
  Sujeto predicado
```

por ejemplo:

```smalltalk=
  robot sacaLaBasura: delPatio
```

En este caso nuestro sujeto es el `robot` el predicado es `sacaLaBasura: delPatio` que tiene como acción, `sacaLaBasura:` y como argumento para esa acción `delPatio`

  - Para depurar nuestro script vamos a descargar uno de los archivos que colocamos en los *data commons*, 
    que sea del tamaño pequeño.
    [Este][samu] es un buen candidato.
  - Descomprimos el archivo previo en (una subcarpeta de) la carpeta temporal. 

### Leyendo el archivo JSON

Al final estaremos leyendo un archivo JSON que se parece a esto:

```javascript=
Grailbird.data.tweets_2011_10 = 
 [ {
  "source" : "\\u003Ca href=\\"http:\\/\\/twitter.com\\/download\\/iphone\\" rel=\\"nofollow\\"\\u003ETwitter for iPhone\\u003C\\/a\\u003E",
  "entities" : {
    "user_mentions" : [ ],
    "media" : [ ],
    "hashtags" : [ ],
    "urls" : [ ]
  },
  "geo" : { },
  "id_str" : "129556479207419904",
  "text" : "Prova",
  "id" : 129556479207419904,
  "created_at" : "2011-10-27 13:54:06 +0000",
  "user" : {
    "name" : "Ferran Morales",
    "screen_name" : "ferranmorales",
    "protected" : false,
    "id_str" : "301136196",
    "profile_image_url_https" : "https:\\/\\/pbs.twimg.com\\/profile_images\\/1708373856\\/DIBUIX_JAVIER_SOTERAS_normal.jpg",
    "id" : 301136196,
    "verified" : false
  }
} ]
```

[dataselfies-prev]: http://mutabit.com/offray/blog/en/entry/ds-twitter-mockup
[grafoscopio-manual]: http://mutabit.com/repos.fossil/grafoscopio/uv/Docs/En/Books/Manual/manual.pdf.
[mapeda-ston]: http://mutabit.com/repos.fossil/mapeda/doc/tip/mapeda.ston
[samu]: https://zenodo.org/record/1434254/files/301136196_cbaedf675ad91956737d5c14d56ba463ef63e5ff.zip?download=1
',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia4/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 5',
					#body : '---
breaks: false
---

# Data Selfies día 5:

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia4) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia6)

Hoy trabajamos de manera distribuida en algunos aspectos:

  - Depurar la instalación de Grafoscopio en Windows (aún la biblioteca libgit2
    sigue molestado).
  - Algunas maneras gráficas de expresar la interacción en Twitter.

## Intentando la instalación de Grafoscopio en Windows

Parece ser que el problema lo genera la biblioteca `libgit2`, que
es requerida para mejorar la integración de Pharo con Git y que en máquinas
Linux y Mac se resuelve en minutos, pero en Windows es bastante más complicado.

Probamos copiando [este binario][libgit2-bin] en `C:\\Windows\\System32\\`


[libgit2-bin]: https://github.com/pnedev/compare-plugin/tree/master/libs/x64

Al final, tras probar varios métodos durante varias horas, incluyendo Moose,
y máquinas virtuales de 32 bits para Pharo, ninguna acabó de funcionar, por lo
cual decidimos probar para el día siguiente un LiveUSB que contuviese Linux y
trabajar todos con plataformas Unix.

## Live Coding para visualizaciones

Mostramos y conversamos con motivo del live coding (código en vivo) para 
visualización de datos en Pharo, mostrado en este video:

{%vimeo 94724841 %}

## Actualizando Grafoscopio

Estamos teniendo algunos problemas de actualización, por lo cual debemos depurar
el proceso.
Empezamos a hacerlo ejecutando este playground: http://ws.stfx.eu/898CUI1J8ZYO,
pero el tema aún está pendiente.

## La lógica general de visualización

Lo que hacemos es modelar nuestros datos, diciendo:

  - de dónde los extraemos (fuente),
  - cuáles propiedades nativas (presentes ya en los datos) o derivadas de ellos
    nos importan,
  - y cuáles acciones queremos realizar con nuestros datos. 

Dos ejemplos previos de este flujo de trabajo son:

  - Mirar el histograma de todos nuestros datos de Twitter a partir del archivo zip que 
    nos entrega, cuando este los subimos a una url podemos ejecutar el script en 
    http://ws.stfx.eu/H0U9V2XR1E5A
  - Por ejemplo el script que permite extraer sólo los datos de un mes y clasificarlos por 
    tipo de mensaje (tweets, retweets o replies) es: http://ws.stfx.eu/EJBJK2Z02DJY. 
    (**Advertencia** para poder ejecutar este último es conveniente ejecutar el del punto anterior).
    
Lo siguiente que querremos hacer es explorar los datos extendiendo los pasos
previos y creando visualizaciones a la medida.
Para esto último es conveniente contar con un catálogo de visualizaciones posibles.
Hay varias fuentes que nos dicen de dónde proviene este catálogo:

  - Desde la barra superior de Grafoscopio seleccionamos `Launch > Roassal visualizations gallery...`,
    que nos desplegará una galería previa de visualizaciones en miniatura y dentro de ellas podemos
    verlas en tamaño ampliado y el código fuente que las produce.
  - Revisar el libro de [Agile Visualization](http://agilevisualization.com/) ',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia5/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 6',
					#body : '---
breaks: false

---

# Data Selfies, día 6

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia5) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia7)


En el marco de [Visualizar 2018](./vis18).

Agenda:

  - Recuento
  - Continuación:
    - Tutorial Agile Visualization Techniques: Nos dará una introducción a los elementos básicos para realizar visualización de datos con live coding..
    - Crear los primeros paquetes.

## Elementos básicos del lenguaje

  - Cargar el [tutorial interactivo][tutorial], usando `Launch > Notebook from the internet`.
  - Recorrer el tutorial interactivo leyéndolo y realizando los ejercicios propuestos.
  - Las soluciones las vamos a guardar en esta [libreta de aprendiz][aprendiz] que nos sirve de plantilla. 

## Mob programming para visualización

:::info
  Suponemos que estás familiarizado con la introducción al [mob programming](./mob-programming)
:::


Para nuestro ejercicio de Mob Programming vamos a detectar la frecuencia de la palabras.

  1. Partimos de una visualización preexistente que la detecte, por ejemplo una nube de etiquetas:

   ![](https://i.imgur.com/ntyLv7Kl.png)
    
  cuyo script de producción es este: http://ws.stfx.eu/95UE5WY7OQZ0.
    
  2. Empezaremos a personalizar este código de forma que podamos adaptarlo a nuestro propio dataset.
     Para lo cual tomaremos una lista de palabras controlada y aplicaremos el mismo script, y luego lo adaptaremos para un subconjunto de nuestros datos en Twitter (luego lo generalizamos).
    
     1. **Importante** Descargar un dataset de pruebas, ejecutando http://ws.stfx.eu/FJCGV99F82N8 
        antes de hacer cualquiera de los pasos previos.
        Luego empezar por el último paso, pues los previos son aquellos que nos permitieron construir
        el último.
     2. Seleccionamos los trinos de un mes particular de este dataset: http://ws.stfx.eu/6ZIA8USZOYXE.
     3. Aplicar nube de etiquetas a los trinos de un mes: http://ws.stfx.eu/IO4XU8UBX2UJ.
     4. El script con código modularizado, por tipo de mensaje: http://ws.stfx.eu/BMRRWTAW87U3, lo cual nos produce algo así:
        
        ![](https://i.imgur.com/DgdxSu7.png)

  3. Ya que tenemos esta visualización, vamos a depurar los datos que **no** queremos en ella, creando un a colección de palabras no interesantes.
     Una vez lo hemos hecho, llegamos a este script: http://ws.stfx.eu/HQ6P8VVEVMVP.

     ![](https://docutopia.tupale.co/uploads/upload_49f57799b80d2749f0070001875a0798.jpg)

     
[tutorial]: http://mutabit.com/repos.fossil/grafoscopio/doc/tip/Docs/En/Books/DataActivism/techniques-for-datactivism.ston
[aprendiz]: http://mutabit.com/repos.fossil/grafoscopio/doc/tip/Docs/En/Books/DataActivism/data-activism-apprentice-notebook.ston',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia6/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 7',
					#body : '---
breaks: false

---

# Data selfies día 7, en Visualizar 2018

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia6) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia8)

Agenda:

  - Continuar con la visualización de ayer, extrayendo las n palabras más frecuentes en un discurso.
  - Construir el histograma de palabras.
  - Crear una composición de las visualizaciones que tenemos hasta el momento.
  - Crear un [builder](http://agilevisualization.com/AgileVisualization/Builder/0201-Builder.html).

## Extraer las *n* palabras más frecuentes

Ayer logramos crear una nube de palabras y ahora partiremos de ahí para extraer las *n* palabras más frecuentes.

Recordemos el script en el que estábamos por últimas vez http://ws.stfx.eu/HQ6P8VVEVMVP, que produce este resultado:

![](https://docutopia.tupale.co/uploads/upload_49f57799b80d2749f0070001875a0798.jpg)

Estamos consultando en los canales de discord, de la comunidad de Pharo sobre la plantilla
que tenemos para la visualización.
Estos son los canales de discord:

  - Enlace de invitación: http://discord.gg/Sj2rhxn
  - Invitación instantánea: https://discord.gg/gtKeHne
  - Canal de Roassal en Discord: https://discord.gg/bAuNJMP

Esta parte ya funciona y el script que lo hace es este:http://ws.stfx.eu/1BC6RI4PLI70

## Histograma de las palabras más frecuentes

Empezamos por este script: http://ws.stfx.eu/JXFI848SZUW6, pero resolvimos cómo integrar 
las dos visualizaciones, sobre las que veníamos conversando, en una sola, que muestre 
tanto la dimensión de tiempo, como la del perfil de interacción, es decir el balance o
acento entre tweets, retweets y replies.

![](https://docutopia.tupale.co/uploads/upload_0be86868033d183820a5a05b3fd99e7a.jpg)

![](https://docutopia.tupale.co/uploads/upload_fae2e5bc00b3e6c0b336b4a63aafc20d.jpg)

![](https://docutopia.tupale.co/uploads/upload_cd69374bc277281eb7e3f5bcc8cd41d6.jpg)

![](https://docutopia.tupale.co/uploads/upload_fd517468191b356618e73205966d72ba.jpg)

![](https://docutopia.tupale.co/uploads/upload_36942d4bbf0a1ad4ab51f3edc69cf1b5.jpg)

![](https://docutopia.tupale.co/uploads/upload_b744091020493ece27ea928609ec00b2.jpg)

![](https://docutopia.tupale.co/uploads/upload_950235f220c401aa07d421f067019384.jpg)

![](https://docutopia.tupale.co/uploads/upload_8901e4be5073e974003587fb83131cb2.jpg)

',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia7/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 8',
					#body : '---
breaks: false

---

# Data selfies día 8, en Visualizar 2018

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia7) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia9)

Agenda: Desarrollar la estrategia de visualización:

  - Ejecutar Grafoscopio en máquinas con Windows vía un LiveUSB con Linux.
  - Recolectar información por años.
    - Definir una carpeta de datos, como parte del modelo de objetos.
    - Agregar los mensajes para todos los meses de una año en particular, y partirlos por tipo de mensaje, guardándolos para el histograma (todos los tweets, retweets, y replies de todos los meses de 2010).
    - Crear el histograma.
    - Recomponer el infograma central (el triángulito con paticas y bracitos asimétricos).

:::info
  Es recomendables que abras en Grafoscopio [esta libreta interactiva de trabajo][data-selfies.ston] y la personalices de acuerdo a cómo avanza el evento.
Nuevas versiones se colocaran en el mismo enlace.
:::

[data-selfies.ston]: http://mutabit.com/repos.fossil/dataweek/doc/tip/Artefactos/DataSelfies/data-selfies.ston

## Grafoscopio vía Live USB

Descargamos [MX Linux](https://mxlinux.org/) que se puede usar en modo LiveUSB y almacenar de
[modo persistente][persistencia] los cambios hechos de vuelta a la memoria USB.
Si bien usamos la persistencia desde el disco duro, esta alternativa puede facilitar el
uso de la plataforma en entornos Windows no actualizados o donde la instalación de dependencias,
como `libgit2` es difícil, como ocurría con las máquinas de algunos participantes.

De este modo todos pudimos trabajar replicando y sincronizando los resultados de la 
visualización en las máquinas de todos los participantes, por primera vez, y no sólo en máquinas 
que ya traían instalado Mac y Gnu/Linux, como hasta el momento.

[persistencia]: https://mxlinux.org/current-release-features#Advanced%20LiveUSB

## Recolectar la información por años

Extendemos la funcionalidad de `TwitterMessages` usando este par de scripts:

  - Exploratorio original: http://ws.stfx.eu/72MAXSBV95D4
  - Con la nueva funcionalidad implementada: http://ws.stfx.eu/PFJ2HTD8H117

## Actualizar el sistema vía Monticello

Seguir las instrucciones en [este enlace](./pharo:monticello).

## Preguntas y referencias

  - Cómo saber los mensajes que se pueden enviar a un objeto.
    - Si pensamos desde la perspectiva de libro para programadores con alguna experiencia, 
      una buena introducción son este par de libros:
      -  [Deep into Pharo](http://books.pharo.org/deep-into-pharo/).
      -  [Enterprise Pharo](http://books.pharo.org/enterprise-pharo/).
  - [Live Coding](./live-coding).
 ',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia8/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 9',
					#body : '---
breaks: false

---

# Data selfies día 9, en Visualizar 2018

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia8) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia10)

Agenda:

  - [Integrado de la visualización](https://docutopia.tupale.co/HbIK-fjrRlyZt2en0Nf2Qw)
  - Ejercicio práctico: seleccionar los datos por mes y por tipo de mensaje, con lo cual podremos crear diferentes visualizaciones (histogragramas, apiladas, etc.).
    Para ello vamos a introducir el tutorial de la sintaxis de Pharo e intentar responder esa preguntas.
    
## Tutorial introductorio de Pharo

Abriremos una de las libretas interactivas [listadas acá](./grafoscopio:libretas) 

Drawing with data: http://ws.stfx.eu/OBJIN05SJJBX

## Extraer los datos por mes y tipo de mensaje

  - Nos actualizamos a la versión `Dataviz-OffrayLuna.176` o posterior.
  - Importamos y ejecutamos: http://ws.stfx.eu/NW6VEF636ZS4

## Explorar visualizaciones con los datos antes extraidos

Lanzamos la galería de visualizaciones de Roassal y miramos gráficas que se puedan hacer con los datos que ya hemos extraído en el paso anterior (histogramas, gráficas apiladas, etc.)

Compartamos el código de las visualizaciones base que estamos probando acá:

  - `exampleMultiDataPoint`: http://ws.stfx.eu/5ML4L2UO0WJI .
  - Explorar un archivo de Tweets: http://ws.stfx.eu/1BYDSRUTEMTC.
  - Script para histograma anual de mensajes: http://ws.stfx.eu/8NP2E2P3E1R3

',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia9/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Dia 10',
					#body : '---
breaks: false

---

# Data selfies día 10, en Visualizar 2018

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia9) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia11)

Agenda:

  - Llenar la [ficha del proyecto](/vis18:dataselfies:ficha).
  - Tabla y visualización del histograma:
    - Gráfica apilada (stack plot) y otros tipos de gráficas.
    - Nubes de palabras (mejorar los filtros de palabras) y [hashtags](http://ws.stfx.eu/IP73KI1D0V4H).
    - Visualización a lo "hoja de vida" (resume o curriculum vitae): Inyectar en una plantilla de LaTeX los gráficos "tradicionales" que hemos obtenido como paso intermedio hacia el Data Selfie que hemos pensado  
  - Otras formas de consultar los datos y otras visualizaciones:

## Ficha del proyecto

[Ficha del proyecto](/vis18:dataselfies:ficha).

## Visualizaciones alternativas

### En otras tecnologías

Se plantean alternativas complementarias de trabajo según:

1) Fuente de los datos
   
   Además del archivo propio que se pueda descargar cada uno de twitter, también podemos scrapear los tweets de otra persona (por ejemplo un [político](http://www.elmundo.es/enredados/2015/03/27/5501872d22601d9f0e8b4576.html)). 
   
   Para ello es puede usar:
    - la herramienta [twarc](https://gwu-libraries.github.io/sfm-ui/posts/2018-03-20-twitter-command-line).
    - servicios on-line como [tweetbeaver](https://tweetbeaver.com) que nos ofrece [completos datos](https://drive.google.com/drive/folders/1hGT8USqdiMlIJrVmSitIlHQZvd_u65_a?usp=sharing). También hay servicios online especializados en detectar [seguidores falsos](https://clipset.20minutos.es/twitter-seguidores-falsos-politicos-espana/) como [twitteraudit](https://www.twitteraudit.com).
 

3) Visualización de los mismos 

En una visualización se pueden distinguir tres fases de desarrollo:

- A. Planteamiento de una pregunta (por ejemplo "¿una persona manda más mensajes propios o repite lo que escucha?").

Posibles preguntas

REFERIDOS A UNA SOLA PERSONA (SELFIE)
- ¿cuál es la proporción entre seguidores y friends (a quién seguimos)?.
- Cuán interesante el para el ciudadano su discurso. Es decir, los temas que preocupan al ciudadano qué lugar ocupan en su wordcloud.

DATOS ENTRE VARIAS PERSONAS
- ¿Qué friends tienen en común?
- ¿Qué conversaciones han mantenido entre pares? 

- B. Pregunta + visualización resuelta "a mano" con una serie de datos dada
    - Herramientas de [wordcloud](https://www.wordclouds.com/) online.
    - Una foto de la persona donde sus facciones se "deforman" según la proporción entre tweets, retweets y replys.
- C. Pregunta + visualización resuelta por código para cualquier serie de datos

Se plantea, además de llegar a la fase C. con una visualización, plantear nuevas visualizaciones complementarias o alternativas, bien sea en fase A o B.

[RESULTADOS](https://docs.google.com/document/d/1Jt7uX0T8889OmF01yRAlVuyEkmJm3yZamOxKyQr51Dg/edit?usp=sharing)


### En Pharo/Grafoscopio

Explorar visualizaciones pre hechas y alimentarlas con los datos obtenidos a partir de un script parecido a este:

```smalltalk=
| messages |

messages := TwitterMessages new
\tdataFolder: FileLocator temp asFileReference / \'samuelnacar\'.
messages monthlyMessagesSizeByTypeAsTableIn: 2011.
```
También se puede importar desde http://ws.stfx.eu/G4W4LS18EFWC.

Lo clave es usar el método `#monthlyMessagesSizeByTypeAsTableIn:` o afinar aquellas visualizaciones que produzcan nubes de palabras, para que no incluyan enlaces o incluyan hashtags.

  - Visualizar hashtags: http://ws.stfx.eu/IP73KI1D0V4H

## Inyectar las visualizaciones en una plantilla de LaTeX

Inyectar en una plantilla de LaTeX los gráficos "tradicionales" que hemos obtenido como **paso intermedio** hacia el Data Selfie que hemos pensado 

Una plantilla interesante puede ser esta:

![](https://ia801501.us.archive.org/25/items/template-8233/8233.jpeg)

Que se puede descargar en detalle [desde acá](https://www.overleaf.com/latex/examples/recreating-business-insiders-cv-of-marissa-mayer-using-altacv/gtqfpbwncfvp). 

Otras plantillas interesantes son:

  - [Entry Level Resume Template](https://www.overleaf.com/latex/templates/entry-level-resume-template-latex/jsmpwkcwyntg).
  - [Twenty Seconds Résumé/CV](https://www.overleaf.com/latex/templates/twenty-seconds-resume-slash-cv/mhyfwrmwjkbc).




',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia10/download'
					]
				},
				GrafoscopioNode {
					#header : '%idea Día 11',
					#body : '---
breaks: false
---

# Data selfies día 11, en Visualizar 2018

[^ indice](https://docutopia.tupale.co/vis18:dataselfies) | [< Anterior](https://docutopia.tupale.co/vis18:dataselfies:dia9) | [Siguiente >](https://docutopia.tupale.co/vis18:dataselfies:dia11)

Agenda:

  - Preparar el material para la exposición cuyo montaje inicia el próximo lunes.
    Dicho material estará recopilado en [la página de la expo](./vis18:dataselfies:expo).
- Recopilar [preguntas](https://docutopia.tupale.co/vis18:dataselfies:preguntas).
- Mejorar la exportación desde CodiMD/Docutopia de los documentos en Markdown.

## Exportar de Docutopia a PDF

Vamos a crear unos libritos que puedan agregarse a nuestro stand de exposición con la 
documentación que hemos creado durante este encuentro.
Para ello, continuaremos con los pasos realizados [acá](./inkit:r3p:codimd).
    
',
					#tags : OrderedCollection [
						'text'
					],
					#children : OrderedCollection [ ],
					#parent : @5,
					#level : 1,
					#links : OrderedCollection [
						'',
						'/download',
						'https://docutopia.tupale.co/vis18:dataselfies:dia11/download'
					]
				}
			]
		},
		#level : 1,
		#links : OrderedCollection [
			''
		]
	},
	@8,
	@12,
	@16,
	@20,
	@24,
	@28,
	@32,
	@36,
	@40,
	@44,
	@48
]