+
+ + + +

Una de las cosas que aprendí de The Carpentries que más me gustan es codear en vivo. +Además de obligarme a ir más despacio y permitir que mis estudiantes vean mis errores, simplemente me resulta mucho más divertido que leer diapositivas o ir siguiendo un script ya escrito.

+

Pero en cuanto empecé a hacer codeo en vivo me encontré con algunos problemas. +Durante las clases era muy común que algune estudiante parara la clase para decir que el código no le funcionaba. +Entonces tenía que pedirle que copiara el código en el chat para verlo y encontrar el error de tipeo que inevitablemente le estaba dando problemas. +Paréntesis no cerrados y nombre de variables mal escritos eran errores comunes que rompían el flujo de la clase y agregaban carga cognitiva y frustración extra sin sumar mucho pedagógicamente.

+

Para solucionar estos problemas, empecé a compartir el archivo en tiempo real utilizando el paquete livecode de Colin Rundel y el servicio ngrok.

+

Uso livecode::serve_file("archivo.Rmd", upgrade_content_security_policy = TRUE) en una terminal corriendo R. +El paquete livecode va a iniciar un servidor que publica el archivo en una IP local y se mantiene actualizado. +Luego en otra terminal uso ngrok http <ip> para crear una URL pública que comparto a les estudiantes y así pueden ver una versión del archivo que estoy modificando de la cual puede seleccionar el texto.

+
+

Instalar y setear ngrok

+

Una vez que te create una cuenta en ngrok, andá al dashboard y seguí las instrucciones de instalacion según tu sistema operativo.

+

Captura de pantalla de la pantalla de Setup e instalación de ngrok. Muestra un título grande que dice "Download ngrok" y un botón que dice "Download for linux". A la derecha, un listado de distintos sistemas operativos.

+

Luego de la instalación, hay que autenticarse buscando la contaseña (el Authtoken) en la siguiente sección

+

Captura de pantalla de la sección "Your Authtoken" de ngrok. Debajo del título hay una serie de caracteres aparentemente aleatorios. Más abajo, hay un título que dice "Command line" y el código "ngrok config add-authtoken" seguido de la misma seire de caracteres.

+

Lo más fácil es correr la línea de código que muestra ahí en la terminal. +Por ejemplo:

+
ngrok config add-authtoken 1jHXu6CoMQRfdRvLqN9exqUwETs_6kAJC9v7ELubcDk5QHkE5
+

Y tiene que devolver algo como

+
Authtoken saved to configuration file: /home/elio/.ngrok2/ngrok.yml
+
+
+

Instalar livecode

+

Para poder usar livecode con ngrok hay que instalar este fork, que agrega el argumento upgrade_content_security_policy:

+
remotes::install_github("nareal/livecode")
+

Una vez instalado, probá creando un archivo cualquiera en RStudio y corriendo

+
livecode::serve_file(upgrade_content_security_policy = TRUE)
+

En la consola de R. +(El argumento upgrade_content_security_policy es necesario para usar ngrok). +Vas a ver un mensaje como este

+
#> ✔ Started sharing '2023-10-28-livecode-ngrok-R.Rmd' at 'http://192.168.100.7:32868'.
+#> ✖ The current ip address ('192.168.100.7') for the server is private, only users on the same local network are likely to be able to connect.
+#> Error: 'markdownExtensions' is not an exported object from 'namespace:markdown'
+

Y se te va a abrir una ventana de explorador. +Nos dice que estamos compartiendo el archivo en http://192.168.100.7:32868/ y nos advierte de que esta dirección es privada y sólo accesible a dispositivos conectados a la misma red local. +Esto es lo que vamos a arreglar con ngrok.

+

Copiá la dirección y abrí una terminal y corré

+
ngrok http http://192.168.100.7:32868/
+

(Usando la dirección que te dio livecode).

+

Te va a aparecer algo así en la terminal:

+

Captura de pantalla de una terminal. Hay un servicio corriendo y dice "Session Status                online" así como una serie de otras entradas. Una dice "Forwarding" y tiene una dirección web larg que temrina con ngrok-free.app

+

Lo importante ahí es la dirección que está en la línea que dice “Forrwarding”. +Esa es la URL pública que le vas a compartir a tus estudiantes. +Si entrás, vas a ver que es una página web con una versión del documento que está en RStudio que se puede seleccionar y copiar.

+

Captura de pantalla de una ventana de Firefox con un documento de RMarkdown de ese mismo post.

+
+
+

Consejos

+

No recomiendo correr livecode::serve_file() en la misma sesión de R donde se está enseñando. +En vez de eso, abrí una terminal extra, corré R y usá livecode::serve_file("ruta al archivo", upgrade_content_security_policy = TRUE). +Las ventajas de esto es que el proceso que publica el archivo es independiente del proceso de R que usamos para enseñar, de modo que no se pierde todo si la sesión de R se cuelga o la reiniciás por alguna razón.

+

Tené en cuenta que tus estudiantes van a acceder a la versión en disco del archivo, por lo que no van a ver cualquier cambio que no guardes. +Podés usar esto para evitar que les estudiantes copien y peguen sin pensarlo. +Guardá el archivo al final de secciones donde se terminó de explicar algún concepto y evitá guardar el archivo si estás haciendo algún ejercicio formativo en el que escribís código en pantalla y preguntás cuál va a ser el resultado.

+

Espero que esta combinación de livecode y ngrok les sea útil para limar las asperezas del codeo en vivo.

+
+ + +
+