Resumen
En este episodio (E64, versión larga) los conductores preparan la charla que darán en la PyCon sobre Jupyter Notebooks en el ambiente laboral. Parten distinguiendo "notebook" como concepto general (cuaderno con código ejecutable) de Jupyter Notebook, y explican por qué este último es popular: es rápido, simple y útil para compartir análisis con su razonamiento. Luego revisan sus contras: el formato `.ipynb` (JSON con metadatos y outputs) hace casi imposible seguir cambios con Git, no permite ejecutar líneas o selecciones, tiene un ambiente separado de la terminal, puede exponer datos sensibles en los outputs, incentiva la ejecución desordenada, no mezcla kernels y usa funciones no nativas de Python (`display`, `%%time`). Se presentan alternativas: archivos `.py` con celdas (`# %%`) en Visual Studio Code, nbdev y, sobre todo, Quarto, que se muestra en una demo en vivo. La conclusión principal es que Quarto resuelve la mayoría de estos problemas y permite convertir de y hacia Jupyter fácilmente.
Capítulos
- 00:00IntroPresentan el episodio 64, que es una versión extendida de la charla que darán el domingo en la PyCon, donde solo tendrán unos 35 minutos. Aquí hay más espacio para conversar y tomar preguntas del chat.
- 01:17A qué nos referimos con NotebooksDefinen un notebook como un espacio de trabajo para escribir y ejecutar código, y aclaran que Jupyter es solo una de muchas opciones. Distinguen un Notebook (se ve lo que se ejecuta en el momento) de un documento R Markdown (se "teje" y se ejecuta de principio a fin, más reproducible). Durante este tramo también responden una duda del chat sobre predecir ventas por negocio (se mencionan Prophet y modelos de regresión).
- 08:45Por qué JN es tan popularLos motivos principales son que es rápido y simple, y sirve para compartir análisis y código junto con el razonamiento paso a paso, útil para divulgación. Debaten que su uso personal y exploratorio es aceptable, pero que en trabajo en equipo se necesita acordar una herramienta (como Confluence o un README) que facilite colaboración.
- 13:31Los prosLos pros reconocidos son que es estéticamente agradable, rápido e intuitivo. Aclaran que algunos puntos pro son de los notebooks en general y no de Jupyter en particular.
- 14:32Dificultad de trackear cambios con GitAbren el `.ipynb` en un editor de texto y muestran que es un JSON con metadatos, nombres de celdas e imágenes PNG codificadas. Demuestran que con solo ejecutar una celda, sin cambiar código, Git muestra cambios en muchas líneas (outputs y contadores de ejecución), lo que dificulta la revisión y genera conflictos de merge. Mencionan que guardar Checkpoints no resuelve la trazabilidad. De paso responden una pregunta del chat sobre extraer texto de PDFs.
- 25:17Ejecución en bloquesPor defecto no se pueden ejecutar líneas o selecciones, solo la celda entera, lo que obliga a crear y borrar celdas para pruebas. Jupyter Lab permite configurarlo parcialmente (con comportamiento inconsistente), y el ambiente del notebook queda separado del de la terminal interactiva, por lo que una variable "existe y no existe" según dónde se mire. Explican que ejecutar línea a línea es útil para depurar sin recargar datos grandes en un debugger, y para inspeccionar valores rápidamente. También comentan que Jupyter ejecuta desde la ruta del archivo, lo que es mala práctica frente a rutas relativas al proyecto.
- 35:00Exposición de datos sensiblesLos outputs pueden mostrar tablas o datos que no se querían compartir, y no hay forma fácil de elegir qué output mostrar u ocultar. Con una demo con `dotenv` y una variable de ambiente imprimida comprueban que, al borrar el output, la contraseña no queda en el archivo. Señalan que el riesgo real aparece al versionar en un repo o al enviar el archivo a proveedores.
- 41:00Incentiva la ejecución desordenadaNo se sabe en qué orden se ejecutaron las celdas, y lo recomendable sería borrar todo y ejecutar desde cero, cosa que a menudo falla. Cuentan un caso en que recibieron un informe con outputs que no se podía reejecutar, estando contra el tiempo.
- 42:26MultilenguajeJupyter permite elegir distintos kernels (Python, Julia, R, C), pero solo uno por notebook. Herramientas como Quarto y R Markdown permiten mezclar lenguajes en un mismo documento, por ejemplo procesar datos en R, modelar en Python y reportar en R.
- 45:32Funciones de JN que no son nativas de Python`display` y la magia `%%time` solo funcionan en Jupyter y se rompen al pasar el código a un `.py`, por lo que reducen la reproducibilidad. Recomiendan reemplazarlas por alternativas como medir tiempo de inicio y fin.
- 47:55Linting e IntellisenseJupyter Notebook puro no tiene linting ni Intellisense completos; Jupyter Lab y Visual Studio Code sí. Muestran que en VS Code se detecta de inmediato un paréntesis sin cerrar.
- 50:12MemesComentan un meme sobre compartir una torta donde Jupyter Notebook queda aparte del grupo. Retoman que varios problemas vienen del formato del archivo y no del editor donde se visualice.
- 53:42AlternativasPresentan una tabla comparativa de pros y contras de alternativas frente a Jupyter Notebook, y reiteran que nadie debería usar el Notebook base sino al menos Jupyter Lab. Responden además una consulta del chat sobre renombrar facturas en PDF, para la que se sugiere usar GPT con carga de archivos.
- 54:40Archivos .py con celdasExportan el notebook a un `.py` con celdas marcadas con `# %%` y las ejecutan en VS Code con Shift+Enter, enviando también líneas o selecciones a la terminal interactiva o a la terminal normal. Explican que hay que configurar el atajo (por ejemplo "run selection", Control+Enter) y que se pueden usar extensiones de macros, comentar/descomentar y reformatear código.
- 01:01:47nbdevEs una forma de desarrollar librerías con Jupyter Notebook, que genera scripts a partir del notebook y documentación. Los conductores no lo han usado en la práctica y cuestionan que genera código duplicado no modificable.
- 01:03:08Quarto y demo en vivoCrean un documento `.qmd` desde cero, con chunks de código, ejecución de selecciones con Control+Enter y opciones por chunk para mostrar solo código, solo output o nada. Al renderizar se ejecuta todo de principio a fin sin metadatos mezclados, porque el output está separado del input. Muestran la conversión entre `.ipynb` y `.qmd` con `quarto convert`, formatos de salida (HTML, PDF, presentaciones, libros, blogs), el flujo engine (Jupyter o Knitr) → Markdown → Pandoc, y la idea de un entorno común multilenguaje.
- 01:21:52CierrePiden retroalimentación al chat, comentan que mucha gente no sabe que se pueden ejecutar celdas o líneas en un `.py`, y anuncian que hablarán más de Quarto en futuros episodios, invitando a unirse al Discord y suscribirse al canal.