
Sign up to save your podcasts
Or


Participantes:
Jesús Cea, email: [email protected], twitter:
Víctor Ramírez, twitter: @virako,
Felipem, conectando desde Cantabria.
Juan José, Nekmo, https://nekmo.com/,
Jesús, conectando desde Ferrol.
Eduardo Castro, email:
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:52] "Vamos a ir cortando" es la entrada de Jesús Cea para
[02:27] ¡Ha salido el primer podcast!: Python en español #7:
Plataformas de podcasting.
No necesitas ninguna plataforma, puedes usar directamente el
Funkwhale https://funkwhale.audio/.
toc2audio https://docs.jcea.es/toc2audio/.
Jesús Cea tiene su propia plataforma de podcasting,
[07:37] Mercurial https://es.wikipedia.org/wiki/Mercurial y
En Mercurial https://es.wikipedia.org/wiki/Mercurial es
Es imposible hacer nada sofisticado en Git
Mercurial - Filosofía y visión de alto nivel:
Bitbucket https://bitbucket.org/ ya no soporta Mercurial.
Hay alternativas pequeñitas. Por ejemplo, Heptapod
¡Evita la centralización!
Al final, el 99.9% de los proyectos de código abierto los
Microsoft to acquire GitHub for $7.5 billion
¿Trabajar por visibilidad? Eso se cura con la edad.
Mantener infraestructura propia tiene su coste, pero puedes
En cada campo de internet, hay uno o dos ganadores y nadie
[21:54] Herramientas de aprendizaje automático (Machine
Diferencia entre aprendizaje automático "de toda la vida" y
Redes neuronales: TensorFlow
Procesado de texto: NLTK
scikit-learn https://scikit-learn.org/stable/index.html.
Algunos libros:
Python Machine Learning - Second Edition: Machine
"TensorFlow en un dia"
Packt publica un libro gratis al día, muchos de
"Towards Data Science" https://towardsdatascience.com/.
Vídeos:
Dot CSV:
Slack https://slack.com/. ¡Arggg, otra plataforma privada
[30:32] PyConES 2021 https://2021.es.pycon.org/. Llamada a
[31:11] Incompatibilidad entre pydantic
PEP 563 -- Postponed Evaluation of Annotations
Aún quedan meses para que se publique Python 3.10, se puede
[37:02] ¿Qué pensais del comportamiento actual, que ejecuta la
[38:47] Más aclaraciones sobre Flit
[40:14] Muchas erratas en las tertulias. Hay que fiarse más de
¡Son charlas de bar! Conversaciones informales, sin
¿Publicar audios de fé de erratas?
[45:07] Truquillo que puede ser útil a alguien, sobre todo al
[46:15] Extraer parámetros "keyword" de "**keywords", de forma
Se explican algunos casos de uso.
toc2audio https://docs.jcea.es/toc2audio/.
[49:42] Dataclasses
PEP 557 -- Data Classes
Decoradores de clases: PEP 3129 -- Class Decorators
attrs https://pypi.org/project/attrs/.
pydantic https://pypi.org/project/pydantic/. Validación de
Mypy http://mypy-lang.org/. Validación de tipos en tiempo
[01:01:12] Truco: "dar por cerrada la sesión" siempre abre temas
Libro: Python avanzado en un fin de semana
Libro de iniciación: Aprende Python en un fin de semana
[01:03:50] GIL
Aunque solo se pueda ejecutar un hilo simultaneamente, es
Multihilo
Ha habido muchos intentos de cargarse el GIL de Python, con
Ejemplos de beneficios de multihilo y de tener varias CPUs
Charla de Jesús Cea en la PyConES 2018: GIL: Todo lo que
[01:22:27] Truco: "dar por cerrada la sesión" siempre abre temas
[01:24:32] Uso de IDEs
Vim https://es.wikipedia.org/wiki/Vim.
Sublime Text https://www.sublimetext.com/.
PyCharm https://www.jetbrains.com/pycharm/.
Eclipse https://www.eclipse.org/ide/.
Automatizar cosas implica que puedes perder la capacidad de
[01:34:42] Eduardo "no tiene casa" :-). Eduardo nos presenta
Se emplaza un futuro debate sobre IDEs
Inercia para cambiar. El coste de cambiar el evidente, y lo
"Intentar salir de vim". Fuente inagotable de memes
Módulo Mercurial que interactúa con GIT: hg-git
FTP https://es.wikipedia.org/wiki/Ftp.
WebDAV: https://es.wikipedia.org/wiki/WebDAV.
Wing Python IDE: https://wingware.com/.
El tiempo se va en pensar, no en picar código.
También importa el perfil de código o proyecto concreto. Por
[01:47:42] Truco: "dar por cerrada la sesión" siempre abre temas
[01:48:00] Cierre:
Apuntarnos temas para traer a lo largo de la semana.
Canal de Telegram https://t.me/joinchat/y__YXXQM6bg1MTQ0.
[01:49:27] Mejorar el sistema de grabación de la tertulia. Jitsi
Jesús Cea explica cómo graba. Algo bizarro y que
Cuando Jesús Cea grababa podcasts
ALSA
PulseAudio https://es.wikipedia.org/wiki/PulseAudio.
PipeWire https://en.wikipedia.org/wiki/PipeWire.
Jesús Cea explica por qué no está usando esa tecnología
Jibri: Jitsi BRoadcast Infraestructure
aiortc https://pypi.org/project/aiortc/.
Hay un montón de plataformas de grabación online, de pago.
[01:58:35] Despedida.
[01:59:15] Final.
Participantes:
Jesús Cea, email: [email protected], twitter:
Jesús, conectando desde Ferrol.
Felipem, conectando desde Cantabria.
Eduardo Castro, email:
Víctor Ramírez, twitter: @virako,
Sergio, conectando desde Vigo.
Juan José, Nekmo, https://nekmo.com/,
Miguel Sánchez, email:
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:52] Presentaciones.
[03:47] Utilizar diferentes versiones de Python en el mismo
Cada paquete instalado está vinculado a una instancia
Nunca hacer pip install, sino indicar la versión: pip3.9
A la hora de instalar paquetes Python en la versión nativa
[16:37] Un problema de los paquetes precompilados ("wheels"
[19:52] ¿Bibliotecas para manejar imágenes, compatibles con PyPy
[21:17] ¿Qué es PyPy https://www.pypy.org/ exactamente?
Jit: Compilación al vuelo
Barrera de entrada muy grande para entrar en el proyecto.
Problemas con los módulos en C. No valoraron la
HPy https://hpyproject.org/.
[27:27] Experiencia de un par de semanas con Flit
Jesús Cea lo está utilizando para publicar su biblioteca
Herramienta propuesta en la charla "Python Packaging: Lo
https://github.com/astrojuanlu/charla-python-packaging.
https://nbviewer.jupyter.org/format/slides/github/astrojuanlu/charla-python-packaging/blob/main/Charla%20Python%20packaging.ipynb#/
PEP 621 -- Storing project metadata in pyproject.toml
Lo importante que es tener enlaces directos al "changelog" o
[31:32] Módulos de documentación. Carencias.
Docstrings.
doctest
Sphinx https://pypi.org/project/Sphinx/.
Tema eterno: Incluir una biblioteca en la biblioteca
ReST: reStructuredText
docutils: https://pypi.org/project/docutils/.
[40:02] ¿Formato tertulia o preguntas y respuestas?
[41:22] Estado actual de Durus
Jesús Cea ha estado intentando conectar con los autores, con
Jesús Cea tiene problemas con la licencia.
¿Abandonar el proyecto y pasarse a ZODB
La gente está haciendo "forks"
Jesús Cea se está currando varios cambios de licencia en
ZOPE https://zopefoundation.github.io/Zope/.
COPYRIGHT ASSIGNMENT
[50:32] ¿Cómo funciona un sistema de persistencia?
Modelo completamente diferente a un ORM
SQL: https://en.wikipedia.org/wiki/SQL.
Working set: https://en.wikipedia.org/wiki/Working_set.
[58:17] Volvemos al tema de licencias.
[59:52] Explícame esto:
[01:03:42] A la gente le encanta que le "piquen".
[01:03:52] Las versiones actuales de Python ya han integrado el
[01:04:22] Llamada a ponencias de la PyConES
[01:05:22] Volvemos al reto en
Pista: los métodos son descriptores:
Bound method:
Métodos estáticos:
No se ha entendido nada porque ha habido numerosos cortes de
[01:10:02] Atributos de función. PEP 232 -- Function Attributes
[01:14:42] Notas de las grabaciones, temas futuros y enviar
[01:16:06] Final.
Participantes:
Jesús Cea, email: [email protected], twitter:
Eduardo Castro, email:
Víctor Ramírez, twitter: @virako,
Javier, conectando desde Madrid.
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:52] Prólogo y comentarios sobre la calidad del audio en las
Auriculares para evitar pedir demasiado al sistema de
¡Manos fuera del teclado!
[03:32] Consejos que ha dado Pablo Gómez para mejorar nuestras
[04:52] Cómo conecta y graba las tertulias Jesús Cea.
[06:22] Publicación inminente de las tertulias.
[07:22] Revisamos el micro de Jesús Cea y sus roces con la ropa
[09:32] Repaso de la tertulia pasada.
toc2audio https://docs.jcea.es/toc2audio/ usa Flit
Erratas de lo que se dijo la tertulia pasada sobre Flit
[11:20] ¿Cómo se añaden comandos nuevos al sistema en MS
[17:52] La nota legal de rigor y presentación de los tertulianos.
[19:27] Revisión estética de "Python en Español"
[20:52] Más sobre Flit https://pypi.org/project/flit/
[21:42] Estilo de código. La mayor parte del código abierto lo
[24:44] Mejor explícito que implícito.
"from X import Y as Z".
Cuidado con las microoptimizaciones.
Reducir no es optimizar, necesariamente.
Comentarios obvios sin utilidad.
Los comentarios deben explicar el contexto, no lo que puedes
Ejemplos de comentarios inútiles.
Metacomentarios:
Linter https://es.wikipedia.org/wiki/Lint.
Vim https://es.wikipedia.org/wiki/Vim.
[55:32] Temas de actualidad.
Nuevas versiones (fallidas) de Python 3.8 y 3.9.
Última alpha de Python 3.10.
Caída de PyPI https://pypi.org/: PyPI Unavailable :
[57:27] Rarezas Python.
What does this print, #1:
Depende de la implementación.
Da pistas de cómo funciona la implementación Python por
Hay muchas ambigüedades en las implementaciones de Python.
[01:00:52] Uso de variables globales.
Condiciones de carrera:
Conflictos entre múltiples instancias o múltiples hilos.
Patrón de diseño "singleton"
¿Qué es una variable global?
"Contextvars":
"Closures":
[01:08:02] ¿Cómo se hacen pruebas con "closures"
¿Los tests unitarios están sobrevalorados?
¿Concentrarse en tests funcionales?
Mock: unittest.mock
Tests unitarios cuando se solucionan bugs, para evitar
Al refactorizar https://es.wikipedia.org/wiki/Refactorizar
Inyección de dependencias
[01:13:07] Algunos comentarios sobre "Machete Mode":
[01:14:54] Detalles de la grabación e ideas de mejora.
Jesús Cea se ha pasado la tertulia sujetando el micro con la
Jesús Cea tiene "ideas" de cómo grabar mejor. ¡Peligro!
Plataformas de grabación online.
El problema del cocktail:
Supresión de ruido: rnnoise
Cancelación de ruido espectacular de NVIDIA:
Pablo Gómez utiliza Ardour https://ardour.org/ para editar
[01:22:52] PÉRDIDA DE SONIDO.
[01:23:07] Enlace al canal de Telegram de la tertulia:
A Jesús Cea no le gusta nada utilizar mensajería instantanea
[01:24:02] PÉRDIDA DE SONIDO.
[01:24:47] "Lo que se ha perdido ha sido la mejor conversación
[01:26:35] Final.
Este audio tiene mucho ruido producido por el roce del micrófono
Participantes:
Jesús Cea, email: [email protected], twitter:
Felipem, conectando desde Cantabria.
Víctor Ramírez, twitter: @virako,
Javier, conectando desde Madrid.
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:50] Preludio.
Hay que automatizarlo todo, y lo que no se puede
Detalles de calidad de grabación.
Lo que falta para publicar los audios.
La publicación de audios es inminente.
Diversas plataformas de podcast
Spotify https://es.wikipedia.org/wiki/Spotify.
¿Y publicar en Youtube?
Estadísticas de descarga.
[08:20] Autonomía digital.
¡Muerte al MP3! https://es.wikipedia.org/wiki/MP3
[10:20] Jesús Cea se queja de que la encuesta de programadores
[11:55] Python Packaging: Lo estás haciendo mal
https://github.com/astrojuanlu/charla-python-packaging.
https://nbviewer.jupyter.org/format/slides/github/astrojuanlu/charla-python-packaging/blob/main/Charla%20Python%20packaging.ipynb#/
La charla ha gustado bastante en general.
Flit https://pypi.org/project/flit/.
Mucha documentación online está anticuada. Viene bien una
El peso del "legado" anticuado.
El ecosistema se está moviendo muy rápido.
Buenas prácticas: https://packaging.python.org/. Esperemos
PEP 621 -- Storing project metadata in pyproject.toml
Pecado que Jesús Cea comete constantemente: ¡instalar
pipenv es el mal https://pypi.org/project/pipenv/.
pip-tools https://pypi.org/project/pip-tools/.
pipdeptree https://pypi.org/project/pipdeptree/.
[35:28] A la hora de fijar dependencias, no es lo mismo
[40:58] ¿Estar a la última o actualizar cuando no hay más
¡Tests de integración!
[45:15] Un 100% de cobertura de código no garantiza que se
[49:10] Tests de mutaciones
hypothesis https://pypi.org/project/hypothesis/.
mutant https://pypi.org/project/mutant/.
[50:50] Flit https://pypi.org/project/flit/.
PEP 420 -- Implicit Namespace Packages
PEP 621 -- Storing project metadata in pyproject.toml
[55:35] PEP 427 -- The Wheel Binary Package Format 1.0
Conda: https://docs.conda.io/en/latest/.
Problemas para que los Wheel soporten las nuevas versiones
Cuando sale una nueva versión de Python, suele ser
ELF (Executable and Linkable Format):
[01:03:10] ¿Alguien usando un sistema operativo viejo va a
Si puedes instalar Python desde código fuente, seguro
Ojo con los paquetes binarios avanzados en CPUs
SSE:
cmov:
[01:10:48] Docker
[01:11:20] Réplicas locales de PyPI https://pypi.org/ y
[01:14:45] ccache https://ccache.dev/.
Ansible: https://es.wikipedia.org/wiki/Ansible_(software).
[01:18:58] HPy https://hpyproject.org/.
[01:20:10] ¿Proponer temas esotéricos? ¿Mandar deberes?
[01:21:05] Más sobre HPy https://hpyproject.org/.
API alternativa para módulos Python en C.
Permite generar un Wheel
Buen rendimiento tanto en CPython como en PyPy
Posible API
[01:29:02] Ayuda para adecentar la página web de los podcasts:
La publicación de los audios es inminente.
Reusaremos el podcast "Python en español"
CSS:
Hay tanto retraso en la publicación que cualquier
[01:35:10] Canal de Telegram de coordinación:
[01:36:10] Machete Mode
Usarlo para depurar un bug.
Pena de muerte en producción.
Ideas locas: James Powell https://twitter.com/dontusethiscode.
Conocimiento íntimo del lenguaje y de su implementación.
[01:42:30] El parche de Memory Leak ya se ha integrado el
[01:43:30] Despedida y deberes futuros.
Security funding & NYU
TUF (The Update Framework) https://theupdateframework.io/.
PEP 458 -- Secure PyPI downloads with signed repository
PEP 480 -- Surviving a Compromise of PyPI: End-to-end
En honor a Eduardo, que no se ha conectado hoy, metemos
[01:48:20] Final.
Participantes:
Jesús Cea, email: [email protected], twitter:
Felipem, conectando desde Cantabria.
Jesús, conectando desde Ferrol.
Víctor Ramírez, twitter: @virako,
Eduardo Castro, email:
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:52] Advertencia de que el audio tiene lagunas y puede ser
[01:07] Conecta gente nueva y cambio de horario.
[04:57] Python 3.10: ¿Mandar y cómo mandar deberes?
[08:19] Presentaciones.
[10:32] Jesús Cea ha enviado ya el parche para el bug que se
[11:12] Los que se autodenominan novatos también tienen mucho
[12:21] Unpacking en bucles for: PEP 3132 -- Extended Iterable
Busca en Internet: "Python tuple unpacking".
PEP 448 -- Additional Unpacking Generalizations:
[15:57] Python Packaging: Lo estás haciendo mal
https://github.com/astrojuanlu/charla-python-packaging.
https://nbviewer.jupyter.org/format/slides/github/astrojuanlu/charla-python-packaging/blob/main/Charla%20Python%20packaging.ipynb#/
[18:07] Machete Mode:
[18:42] Pattern Matching en Python 3.10:
PEP 622 -- Structural Pattern Matching
PEP 634 -- Structural Pattern Matching: Specification
PEP 635 -- Structural Pattern Matching: Motivation and
PEP 636 -- Structural Pattern Matching: Tutorial
Tema recurrente: ¿Compensa complicar la sintaxis del
[22:27] ¡Combina todo eso con el Walrus operator (operador
[24:32] Temas recurrentes de Jesús Cea: complejidad accidental
Guido van Rossum
El principio del fin fue la implementación de
[27:02] Código que puede funcionar tanto en el mundo síncrono y
Biblioteca asyncio:
Biblioteca unsync: https://pypi.org/project/unsync/.
inspect.iscoroutinefunction(object):
inspect.iscoroutine(object):
inspect.isawaitable(object):
inspect.isasyncgenfunction(object):
inspect.isasyncgen(object):
[29:12] Lo bueno de tener dificultad para mezclar el mundo
Sans IO: https://sans-io.readthedocs.io/.
Máquina de estados:
[33:15] How to write obfuscated python
[33:52] Seguridad en PyPI https://pypi.org/: New packaging
PEP 458 -- Secure PyPI downloads with signed repository
Permite meter espejos de PyPI https://pypi.org/ sin tener
[36:27] Encuesta mundial de programadores Python: Python
Aquí no vamos a describir cada respuesta de la encuesta en las
[40:32] Usar Python en el navegador web: Brython
[44:42] ¿No molaría poder mezclar código Python y
[45:42] Precendente: Python y Java: Jython
[47:42] Python soportado en los navegadores.
PyXPCOM:
WebAssembly:
asm.js: https://en.wikipedia.org/wiki/Asm.js.
Emscripten: https://emscripten.org/.
Javascript en javascript: Polyfill
Pyodide https://pyodide.org/en/stable/index.html.
[59:37] Aún hay mucha documentación online sin actualizar,
[01:00:42] Corte de conexión. Se supone que había un más
[01:04:12] pipenv https://pypi.org/project/pipenv/.
[01:09:22] Las características deseadas de Python chocan
[01:11:32] La documentación de FastAPI
[01:18:07] Libro "Modern Tkinter for Busy Python Developers"
[01:19:12] En la escuesta no salen librerías de generación
Reportlab https://pypi.org/project/reportlab/.
PyPDF3 https://pypi.org/project/PyPDF3/.
weasyprint https://pypi.org/project/weasyprint/.
[01:21:52] No hay representación de tecnologías de
[01:22:22] Tortoise ORM
[01:22:47] SQLite https://sqlite.org/ es perfecta si
[01:26:42] Map/Reduce
[01:27:32] Lo dejamos en la mitad de la encuesta:
[01:28:22] Intentamos coordinar el acceso a la segunda captura
[01:29:22] Queda pendiente comentar cómo va la publicación de
[01:30:17] ¡Nuevo horario!
[01:31:05] Final.
Participantes:
Jesús Cea, email: [email protected], twitter:
Jesús, conectando desde Ferrol.
Víctor Ramírez, twitter: @virako,
Eduardo Castro, email:
Gato, desde Chile.
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:53] Volvemos a estar poquita gente.
Comunidades locales en Galicia.
Python Vigo: https://www.python-vigo.es/.
Makerspaces: https://en.wikipedia.org/wiki/Hackerspace.
GPUL: Grupo de Programadores e Usuarios de Linux:
[05:48] Propuesta de cambio en la sintaxis de lambda.
Ventaja de la sintaxis actual: al aparecer el término
El lenguaje cada vez es más opaco y complejo.
[09:58] Asistencia escasa en las últimas tertulias. ¿Cómo
[12:23] Volvemos al cambio de sintaxis de lambda.
[15:03] Guido van Rossum
[16:58] ¿Python intenta seguir la estela de otros lenguajes con
PEP 617 -- New PEG parser for CPython
El parser nuevo abre muchas posibilidades peligrosas.
Lista de correo de Python-ideas:
[23:38] ¿Dónde se almacenan los valores por defecto de los
Librerías para procesar y generar bytecode
Ejemplo: simplificar la sintaxis de meter código ensamblador
Decoradores que manipulan las tripas de las funciones, a
Módulo "dis" https://docs.python.org/3/library/dis.html.
[30:13] Cómo mezclar código síncrono y asíncrono, en función del
inspect.iscoroutinefunction(object):
inspect.iscoroutine(object):
inspect.isawaitable(object):
inspect.isasyncgenfunction(object):
inspect.isasyncgen(object):
[32:03] Bibliotecas con "plugins". Namespaces: PEP 420 --
Problemas con el "modo desarrollo" del paquete.
PEP 402 -- Simplified Package Layout and Partitioning:
PEP 382 -- Namespace Packages
Ficheros pth:
[42:21] Charla Python Madrid: Python Packaging: Lo estás
Buenas prácticas actuales.
Se puso como deberes futuros.
[45:11] Metareferencia: Podcast: Python en español:
Notas y capítulos para poder navegar por las grabaciones.
Temas pendientes para poder publicar los audios.
Biblioteca toc2audio: https://docs.jcea.es/toc2audio/.
MP3 https://es.wikipedia.org/wiki/Mp3 en formato VBR
¿Dónde colgar las grabaciones? ¿Secuestrar y resucitar el
Zope: https://es.wikipedia.org/wiki/Zope.
[51:33] Temas Django https://www.djangoproject.com/:
Consultas complejas usando el ORM
SQL: https://es.wikipedia.org/wiki/SQL.
Postgresql: https://www.postgresql.org/.
MySQL: https://www.mysql.com/.
MariaDB: https://mariadb.org/.
[55:38] Novedades Python 3.10:
PEP 622 -- Structural Pattern Matching
PEP 634 -- Structural Pattern Matching: Specification
PEP 635 -- Structural Pattern Matching: Motivation and
PEP 636 -- Structural Pattern Matching: Tutorial
¿Deberes futuros?
What the f*ck Python!
Docker: https://en.wikipedia.org/wiki/Docker_(software).
[01:02:18] Podcast: Python Bytes: https://pythonbytes.fm/.
Hablar de las cosas habiéndolas probado.
Real Python https://realpython.com/.
No hay contenido comparable en español.
[01:05:08] Traducción de la documentación Python al español:
Documentación Python en Español:
Documentación oficial de Python en español
GitHub: https://github.com/python/python-docs-es/.
Documentación oficial de Python en Español
docs.python.org en Español
[01:06:43] Tutorial de Python en español:
[01:07:08] Python España: Aprende Python
[01:07:43] Eventos Python en España:
[01:09:03] Automatizaciones de seguimientos.
[01:09:43] La dificultar para crear comunidad.
[01:10:38] Iniciativa de comunidades tecnológicas de Madrid.
Problemas comunes de los organizadores: conseguir ponentes,
Calendario de actividades tecnológicas en Madrid.
[01:13:18] Python para desarrollar herramientas de sonido.
Latencia.
PulseAudio: https://es.wikipedia.org/wiki/PulseAudio.
Instrumentos VST:
Jesús Cea ha escrito software de control de una emisora de
[01:19:43] Capítulos en podcasts. Más detalles sobre el
Biblioteca: https://docs.jcea.es/toc2audio/.
rnnoise: https://jmvalin.ca/demo/rnnoise/.
[01:22:53] Despedida.
[01:24:18] Final.
Audio procesado con "rnnoise": https://jmvalin.ca/demo/rnnoise/.
Participantes:
Jesús Cea, email: [email protected], twitter:
Jesús, conectando desde Ferrol.
Víctor Ramírez, twitter: @virako,
Gato, desde Chile.
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:53] Hoy no se han conectado los habituales (Virako conectó
¿Cómo empezamos a programar en Python?
Empezar con el tutorial:
[05:43] Jesús Cea coleccionaba lenguajes de programación en
Forth: https://es.wikipedia.org/wiki/Forth.
Ensamblador:
[06:23] "La mejor herramienta para cada trabajo" tiene un
[07:23] Mercado laboral en España para trabajar en remoto.
[09:18] Hay mucho material para aprender.
[12:48] Formación formal.
[14:03] Comunidades locales Python:
Python Vigo: https://www.python-vigo.es/.
Se intentaba montar algo en La Coruña.
Makerspaces: A Industriosa https://aindustriosa.org/.
[16:23] ¿Recursos que pueda usar un novato para aprender?
Asociación Python España: https://www.es.python.org/.
Lista de correo Python-es:
Internet.
[19:23] Raspberry PI https://www.raspberrypi.org/, ESP8266
[21:43] Puesta al día de la semana.
[23:28] Encuesta mundial de programadores de Python: Python
[24:04] Ya estamos repasando las grabaciones, con vista a
Las notas jugarán un papel importante en las grabaciones.
Capítulos.
[26:03] IPFS: https://es.wikipedia.org/wiki/IPFS.
Peer 2 Peer: https://es.wikipedia.org/wiki/Peer-to-peer.
webrtc: https://es.wikipedia.org/wiki/WebRTC.
Contribuir compartiendo las fotos de Python España.
BitTorrent: https://es.wikipedia.org/wiki/BitTorrent.
[29:33] Métricas de calidad de código.
Complejidad ciclomática:
Radon: https://pypi.org/project/radon/.
Cobertura de test: Coverage
Cada pequeño paso ayuda.
[35:08] Porcentaje de código nuevo y mantenimiento.
[36:33] Se perdió parte de la grabación de la tertulia de la
[41:13] Packt https://www.packtpub.com/. Muchos libros
Un libro gratis al día:
Bot de telegram de notificaciones diarias:
[44:33] Funciones que son malas prácticas en C.
[46:23] Tema recurrente: ¿poner deberes?
[48:08] ¿Progresos sobre Issue24676: Error in pickle using
Bug poco prioritario.
Jesús Cea propone algunos rodeos al problema.
runpy: https://docs.python.org/3/library/runpy.html.
[52:09] Volvemos al tema de cómo un novato puede aprender desde
Hacer un proyecto pequeño.
Intentar no extenderse mucho, no hacer "muchas cosas".
Si no tiene base, el código del novato va a ser malo y con
Examinar un proceso ajeno "pequeño" y estudiarlo.
Project Euler: https://projecteuler.net/.
Kata: https://es.wikipedia.org/wiki/Kata.
Ventajas de un libro: Aprendizaje estructurado, gradual y
Aprende Python en un fin de semana || Libro – PDF – EPUB –
Python España: Aprende Python
Comunidades locales.
¿Alguien que no sabe programar en absoluto entiende qué
Commodore VIC-20:
BASIC: https://es.wikipedia.org/wiki/BASIC.
Escribir código a mano puede ayudar.
[01:11:13] ¿Los emails de recordatorio a las listas de correo
[01:13:43] Python y seguridad. ¿Recomendaciones para novatos?
OWASP: https://owasp.org/.
OWASP Top Ten Web Application Security Risks:
Listas de correo de seguridad.
Desbordamiento de búfer:
Podcast: Security Now https://twit.tv/shows/security-now.
Hispasec: Noticias de seguridad diaria: Una al Día:
The CERT C Secure Coding Standard
Cada lenguaje tiene sus propios fallos de seguridad típicos,
[01:22:43] PEP 578 -- Python Runtime Audit Hooks
[01:24:43] Los "Framework" te protegen de fallos típicos
Si el "framework" es popular y se le encuentra un bug, eres
Hay que preocuparse de tenerlo actualizado.
Django: https://www.djangoproject.com/.
Ataque de cadena de suministro:
[01:28:53] DevOps: https://es.wikipedia.org/wiki/DevOps.
Docker: https://www.docker.com/.
¿Quién se preocupa de actualizarlo?
[01:31:53] Volvemos al tema OWASP https://owasp.org/.
[01:32:53] ¿En qué posición está Python respecto a la seguridad,
DB-API 2.0: PEP 249 -- Python Database API Specification
sqlite3: https://docs.python.org/3/library/sqlite3.html.
Aunque un lenguaje de programación sea razonablemente
pickle: https://docs.python.org/3/library/pickle.html.
eval:
[01:36:43] Ataque de cadena de suministro:
Poison packages – “Supply Chain Risks” user hits Python
Cualquiera puede subir un módulo nuevo a PYPI:
[01:40:53] Costes del código abierto.
La reputación no basta.
Trabajo ingrato.
Depender del trabajo voluntario es un problema.
[01:43:13] Auditoría automática de código.
Hay una diferencia entre código con bugs y ataques
Ejemplo, Antivirus. VirusTotal:
Un clásico de 1984: "Reflections on Trusting Trust":
[01:46:08] Es un problema universal. Dependemos del trabajo de
Referencia obligada a XKCD https://xkcd.com/:
Dependency https://xkcd.com/2347/.
Wikipedia XKCD: https://es.wikipedia.org/wiki/Xkcd.
OpenSSL https://es.wikipedia.org/wiki/OpenSSL:
WordPress: https://es.wikipedia.org/wiki/WordPress.
[01:50:03] Empresas que dan soporte comercial a productos de
Red Hat: https://es.wikipedia.org/wiki/Red_Hat.
Opinión de Jesús Cea: Se vende tranquilidad, no seguridad.
Desplazas la responsabilidad a otro.
Gestión de riesgo. Proteger su puesto de trabajo.
"No han despedido nunca a nadie por comprar IBM":
[01:55:23] Hoy ha sido un día raro en la tertulia, faltan (casi)
[02:00:33] Falta la voz del "novato".
[02:09:03] Traducción de la documentación Python al español:
Documentación Python en Español:
Documentación oficial de Python en español
GitHub: https://github.com/python/python-docs-es/.
Documentación oficial de Python en Español
docs.python.org en Español
[02:11:28] Final.
Participantes:
Jesús Cea, email: [email protected], twitter:
Javier, conectando desde Madrid.
Miguel Sánchez, email:
Eduardo Castro, email:
Víctor Ramírez, twitter: @virako,
José Juan.
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:53] Vamos progresando en la publicación de las grabaciones.
Pablo Gómez, twitter:
Capítulos en audios: Biblioteca toc2audio
Jesús Cea quiere notas exhaustivas de cada grabación. El
[06:45] El aviso legal de rigor para grabar los audios y
[06:58] Presentaciones.
[09:58] Jesús Cea habla mucho.
[10:53] Interacción entre clases abstractas
[18:28] Expansión explosiva del tamaño del bytecode
Ojo, teclear este código tal cual puede tumbar tu máquina y
Build a Compiler Bomb: Python 3, 13 byte source,
16 bytes of Python code compiles to 32 terabytes of bytecode
[27:48] GitHub actions: https://github.com/features/actions.
[28:43] PEP 637 -- Support for indexing with keyword arguments
La sintaxis de Python es cada vez más compleja.
Jesús Cea se sorprende de que Guido van Rossum
Muchos cambios de sintaxis se justifican para ciertos
Los lenguajes empiezan simples y se van complicando...
Estos temas se han tratado con frecuencia y profundidad en
El lenguaje se particiona en "sublenguajes" y "subculturas".
BNF (Backus–Naur form):
JavaScript: The Good Parts:
¿Cómo aprende Python la gente novata?
Grupos de excepciones: PEP 654
asyncio https://docs.python.org/3/library/asyncio.html
[44:26] Metaconversacion sobre temas recurrentes en la tertulia.
[45:08] ¿Cómo se numeran los PEP
Cuando se actualiza un PEP, no cambia de numeración.
Black: https://pypi.org/project/black/.
Los PEP incluyen una sección de cambios, historia del PEP.
PEP 494 -- Python 3.6 Release Schedule
PEP 373 -- Python 2.7 Release Schedule
[51:08] A veces para ver los cambios de un proyecto, a veces no
[53:28] El valor de los DeprecationWarning:
Deuda técnica.
Estrategia: Bloquear dependencias.
Acumular actualizaciones tampoco es buena idea.
Que tus tests comprueben tus dependencias suele ser una mala
[58:13] Los problemas de bloquear dependencias de forma
pip freeze https://pip.pypa.io/en/stable/cli/pip_freeze/.
virtualenv: https://pypi.org/project/virtualenv/.
[01:02:56] pip https://pypi.org/project/pip/ no tiene "hooks"
[01:05:43] Paquete "safety" https://pypi.org/project/safety/.
[01:07:38] Salto de fe al hacer pip install. Paquetes
[01:09:23] Motivación económica para secuestrar el DNS
[01:10:58] Nombres inexplicables de paquetes en PIP.
[01:11:28] RFC 2606: Reserved Top Level DNS Names
[01:13:53] Recursos en español de Python:
Pybonacci: https://pybonacci.org/.
Chema Cortés: https://blog.ch3m4.org/.
AlgoriSoft: https://algorisoft.com/. Cursos de Django
[01:16:28] Comparativa entre Bokeh https://bokeh.org/ y Plotly
[01:19:46] La grabación se cortó aquí debido a "un problema
[01:19:55] Final.
Este audio tiene mucho ruido producido por el roce del micrófono
Participantes:
Jesús Cea, email: [email protected], twitter:
Javier, conectando desde Madrid.
Miguel Sánchez, email:
Eduardo Castro, email:
Víctor Ramírez, twitter: @virako,
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[00:53] El aviso legal de rigor.
[02:23] Pasamos a reunirnos en la sala "py2021" en vez de en la
[03:13] ¿Las cadenas son inmutables? Las cadenas son inmutables,
[07:23] ¿Hay forma de mutar una cadena? No desde el propio
[10:03] Grupos de excepciones: PEP 654
Lista de correo de Python Ideas:
Si usas la funcionalidad, la sintaxis y semántica de las
Como ocurrió con async y await, si alguno de los
[14:28] Probar una biblioteca en diferentes versiones de Python.
Tener varias versiones instaladas de Python.
make altinstall es tu amiga para poder instalar varias
Diferencia entre llamar a python3 y llamar a python3.6.
Matriz de tests.
Docker: https://es.wikipedia.org/wiki/Docker_(software).
Flake8: https://pypi.org/project/flake8/.
[22:43] Bibliotecas y cambios de sintaxis en Python con la
Si código Python 3 funciona en Python 2... ¿El código era
Proyectos con compatibilidad mal especificada.
[25:53] Pruebas en varias versiones:
Tox: https://pypi.org/project/tox/.
pyenv: https://pypi.org/project/pyenv/.
Pylint: https://pypi.org/project/pylint/.
[27:53] Black: https://pypi.org/project/black/.
Reformateador de código "nazi".
Se acabaron las discusiones de estilo.
¿Puede un formateador "nazi" ser configurable? ¿No es un
[32:28] Pasar tests y comprobaciones cuando se mete código en el
gitlint: https://jorisroovers.com/gitlint/.
vim-autopep8:
[34:53] PEPs recientes con cambios de sintaxis: Grupos de
Grupos de excepciones: PEP 654 -- Exception Groups and
PEP 622 -- Structural Pattern Matching
PEP 634 -- Structural Pattern Matching: Specification
PEP 635 -- Structural Pattern Matching: Motivation and
PEP 636 -- Structural Pattern Matching: Tutorial
[40:28] Trio https://pypi.org/project/trio/ programación
[44:23] Python ha cumplido 30 años. La primera versión pública
Happy birthday, Python, you're 30 years old this week: Easy
Compilación en sistemas operativos modernos:
[45:13] Comparación de diferentes tipos. En Python 2 se podían
Programar funciones de comparación personalizadas.
Definir tipos personalizados que sepan compararse entre sí.
Problemas al migrar un sistema de persistencia de Python 2 a
[52:33] ¿Por qué Pillow https://pypi.org/project/Pillow/ se
Confuso.
Casos similares (hay muchos más):
python-dateutil
Beautiful Soup:
dnspython https://pypi.org/project/dnspython/.
[59:18] Seguridad en PYPI https://pypi.org/.
[01:00:48] ¿El buscador de PYPI https://pypi.org/ sirve para
[01:02:18] Estadísticas de descarga en PYPI https://pypi.org/:
Antes había contadores de descargas.
Ahora tenemos: (depende de Google)
PyPI Download Stats https://pypistats.org/.
pypinfo https://pypi.org/project/pypinfo/.
[01:09:48] Servicios que Google ha matado:
[01:10:23] Jesús y su ideología de servicios gratuitos que
Encima dependes de ellos y queman el mercado para servicios
La resignación y pasividad de los usuarios.
[01:13:28] Idea de Jesús: Estamos viviendo en la edad oscura
Por ejemplo: Videojuegos en red con servidores.
https://archive.org/.
GeoCities https://es.wikipedia.org/wiki/GeoCities.
Tumblr https://es.wikipedia.org/wiki/Tumblr.
[01:16:43] ¿Mirrors de PYPI https://pypi.org/? Ahora mismo no
Package signing & detection/verification:
Red distribuida por IPFS
[01:21:13] Montar servicios encima de PYPI https://pypi.org/.
PYPI proporciona RSS https://es.wikipedia.org/wiki/Rss.
PyPI recent updates https://pypi.org/rss/updates.xml.
PyPI newest packages
[01:24:43] GitHub: Security vulnerability alerts for Python
[01:25:13] Compilar paquetes binarios para Windows.
[01:26:48] Cython https://pypi.org/project/Cython/ y mypyc
[01:28:33] A veces te importa a ti más el código que al dueño de
Dinámicas de colaboración en proyectos de código abierto.
Core developer de Python: Mariatta Wijaya - What is a Python
La importancia de la realimentación.
[01:35:43] Kodi https://es.wikipedia.org/wiki/Kodi y
La compresión de datos en WebDAV.
Que la gestión de base de datos sea Python.
Bajar la barrera de entrada al proyecto.
[01:39:21] ¿Qué micros tenemos para grabar? ¿Cómo hablamos?
[01:45:08] Digresión sobre BitCoins
Blockchain https://es.wikipedia.org/wiki/Cadena_de_bloques.
BitCoin desarrolla ideas muy interesantes.
Prueba de trabajo:
Cypherpunk: https://en.wikipedia.org/wiki/Cypherpunk.
Contrato inteligente:
Datos abiertos:
[01:55:23] Ojo, que todo queda grabado para la posteridad.
[01:58:03] ¿Poner deberes? Nadie tiene tiempo...
[01:58:58] La motivación para hacer todo esto.
[02:00:23] Despedida.
[02:01:45] Final.
Participantes:
Eduardo Castro, email:
Jesús Cea, email: [email protected], twitter:
Víctor Ramírez, twitter: @virako,
Javier, conectando desde Madrid.
Audio editado por Pablo Gómez, twitter:
La música de la entrada y la salida es "Lightning Bugs", de Jason
[01:33] Cómo documentar en Python.
Google docs: https://docs.google.com.
Wikis en GitHub:
Ventajas de tener la documentación en el control de
Ventajas de ir escribiendo la documentación mientras
Sphinx: https://www.sphinx-doc.org/en/master/.
sphinx.ext.autodoc:
plantuml: https://github.com/sphinx-contrib/plantuml.
Markdown: https://www.markdownguide.org/.
[03:48] La vieja guardia es escéptica con las novedades de
La documentación guía el desarrollo.
Paralelismo con los tests.
[08:38] Open source y la vergüenza: tests y documentación.
[09:28] CPython Internals Book
[11:13] HPy https://hpyproject.org/. Nuevo API
[13:18] Internet Archive como biblioteca de libros modernos:
Funciona como una biblioteca tradicional.
Préstamo de libros.
Están escaneando a toda velocidad: 2.5 millones de libros en
Internet Archive: https://archive.org/.
Wayback Machine: https://web.archive.org/.
Preservación de videojuegos, páginas en flash, discos de
[17:03] Web de Python en Internet Archive.
1997:
1998:
Un ejemplo de "batteries included":
[17:53] Jesús Cea echa de menos la internet distribuida.
[18:23] Pattern Matching en Python 3.10. PEP 622 -- Structural
¿"match" y "case" serán palabras reservadas?
PEP 617 -- New PEG parser for CPython
Se repasa la funcionalidad un poco por encima.
[27:48] Logs fáciles de configurar y decorados con colorines:
Daiquiri: https://daiquiri.readthedocs.io/en/latest/.
Colorama: https://pypi.org/project/colorama/. Compatible
[29:28] Truco: Python -i: Ejecuta un script y pasa a modo
Comentado hace unas semanas.
También se puede hacer desde el propio código con
Jesús Cea se queja de que usando la invocación desde código
[30:48] Manhole: https://pypi.org/project/manhole/.
[31:53] Breakpoints condicionales
breakpoint() como función nativa: PEP 553 -- Built-in
import pdb; pdb.set_trace().
[33:28] Scraping a mano:
scrapy shell:
Jesús Cea no echa de menos Scrapy
[36:03] Indexador y buscador de documentos: Whoosh
Jesús necesitaba ignorar tildes, lo que impacta en la
El backend está documentado, para que te lo puedas currar tú
[38:23] ¿Cómo hacer copia de seguridad de un fichero de 600
[40:58] Eduardo Castro ha ganado un hackathon en Pontevedra.
Software para Django: https://www.djangoproject.com/.
[46:38] Experiencias agridulces con los hackathones
[50:38] Una URL puede no estar no disponible ya cuando escuchas
[52:28] Jamii https://jamii.es/.
API https://es.wikipedia.org/wiki/Api
[55:38] GraphQL https://es.wikipedia.org/wiki/GraphQL.
REST:
Permisos de usuario.
No hay cacheo.
Vulcain: https://github.com/dunglas/vulcain.
[01:02:53] HTTP/2 https://en.wikipedia.org/wiki/HTTP/2.
HTTP/2 Server Push:
No se tiene que responder por orden. Multiplexación.
[01:08:53] La explosión de la complejidad innecesaria ocultada
OAuth2
OpenID: https://en.wikipedia.org/wiki/OpenID.
[01:10:33] Complejidad creciente de la sintaxis de Python.
Volvemos a Structural Pattern Matching
Complejidad de la sintaxis.
Un lenguaje pequeño y capaz reemplaza a lenguajes
[01:12:13] Metaclases
Closures:
[01:15:08] Empiezan a aparecer sublenguajes, tribus,
Ciertos cambios de sintaxis pueden unificar subculturas: "la
El operador ternario de Python v = VALOR1 if CONDICIÓN
List comprehension: [f(i) for i in ITER if
[01:20:18] En los viejos tiempos, podías hacer barbaridades
[01:21:53] Jesús Cea echa de menos que se eliminen cosas.
[01:25:23] El lenguaje C incluye solo lo mínimo imprescindible.
[01:26:48] Curiosidades: What the f*ck Python!
[01:28:03] Algunos avances en la investigación del bug descrito
Issue24676: Error in pickle using cProfile
Issue9914: trace/profile conflict with the use of
Issue9325: Add an option to pdb/trace/profile to run library
Requiere mejorar el módulo runpy
A nadie le ha dolido lo suficiente el bug como para
[01:35:53] Nuitka https://nuitka.net/.
Ejecutables Python independientes de lo que tengas instalado
También funciona en MS Windows.
[01:39:43] Tertulia previa: Fuentes de caracteres con ligaduras.
Combinación de caracteres unicode.
Las banderas de los países, por ejemplo, son un código
La bandera de Taiwan se ve distinta en China que en el resto
"Collation"
[01:50:23] Cuando el Steering Council
[01:52:53] Despedida.
[01:53:55] Final.
From the publisher's feed

1,118 Listeners