+ Como compartir tu código en tiempo real con livecode y ngrok +
+ + + + + + + +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.
+ +Luego de la instalación, hay que autenticarse buscando la contaseña (el Authtoken) en la siguiente sección
+ +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:
+ +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.
+ +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.
+