
Plataformas centralizadas, GIL, aprendizaje automático, Pydantic y Python 3.10, y hemos renunciado a llevar la cuenta de los gazapos que metemos en cada tertulia https://podcast.jcea.es/python/29
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
Felipem, conectando desde Cantabria.
Juan José, Nekmo, https://nekmo.com/,
https://github.com/Nekmo/. Madrileño conectando desde Málaga.
Jesús, conectando desde Ferrol.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:52] "Vamos a ir cortando" es la entrada de Jesús Cea para
que alguien proponga temas durante media hora más.
[02:27] ¡Ha salido el primer podcast!: Python en español #7:
¡Metapodcast de relanzamiento!
https://podcast.jcea.es/python/7.
Plataformas de podcasting.
No necesitas ninguna plataforma, puedes usar directamente el
feed RSS https://es.wikipedia.org/wiki/Rss.
Funkwhale https://funkwhale.audio/.
toc2audio https://docs.jcea.es/toc2audio/.
Jesús Cea tiene su propia plataforma de podcasting,
herramientas, etc. Quiere evitar la centralización a toda
costa.
[07:37] Mercurial https://es.wikipedia.org/wiki/Mercurial y
Git https://es.wikipedia.org/wiki/Git.
En Mercurial https://es.wikipedia.org/wiki/Mercurial es
imposible modificar la historia.
Es imposible hacer nada sofisticado en Git
https://es.wikipedia.org/wiki/Git sin recurrir a Google.
Mercurial - Filosofía y visión de alto nivel:
https://www.jcea.es/artic/mercurial_madrid/.
Bitbucket https://bitbucket.org/ ya no soporta Mercurial.
Hay alternativas pequeñitas. Por ejemplo, Heptapod
https://heptapod.net/.
Más referencias en
https://www.mercurial-scm.org/wiki/MercurialHosting.
¡Evita la centralización!
Al final, el 99.9% de los proyectos de código abierto los
mantienen los autores originales en exclusiva.
Microsoft to acquire GitHub for $7.5 billion
https://news.microsoft.com/2018/06/04/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
pagar a alguien para que lo haga, promoviendo multitud de
plataformas federadas en vez de centralizar internet más y
más.
En cada campo de internet, hay uno o dos ganadores y nadie
más pinta nada. Jesús Cea se queja mucho de eso.
[21:54] Herramientas de aprendizaje automático (Machine
Learning)
https://es.wikipedia.org/wiki/Aprendizaje_autom%C3%A1tico:
Diferencia entre aprendizaje automático "de toda la vida" y
el aprendizaje con refuerzo
https://es.wikipedia.org/wiki/Aprendizaje_por_refuerzo.
Redes neuronales: TensorFlow
https://es.wikipedia.org/wiki/TensorFlow y Keras
https://es.wikipedia.org/wiki/Keras.
Procesado de texto: NLTK
https://es.wikipedia.org/wiki/NLTK.
scikit-learn https://scikit-learn.org/stable/index.html.
Algunos libros:
Python Machine Learning - Second Edition: Machine
Learning and Deep Learning with Python, scikit-learn,
and TensorFlow
https://www.amazon.es/Python-Machine-Learning-Sebastian-Raschka/dp/1787125939/.
Hay versión en castellano.
"TensorFlow en un dia"
https://www.amazon.es/TensorFlow-Day-Neural-Network-English-ebook/dp/B07H474R7Q/.
Hay versión en castellano.
Packt publica un libro gratis al día, muchos de
aprendizaje automático:
https://www.packtpub.com/free-learning.
"Towards Data Science" https://towardsdatascience.com/.
Medium https://medium.com/. Otra plataforma
centralizada de las que tanto molestan a Jesús Cea.
Vídeos:
Dot CSV:
https://www.youtube.com/channel/UCy5znSnfMsDwaLlROnZ7Qbg.
La IMPRESIONANTE Cancelación de Ruido de NVIDIA |
Data Coffee #13
https://www.youtube.com/watch?v=d0g1EviDyWM.
Slack https://slack.com/. ¡Arggg, otra plataforma privada
centralizada!:
ML-Hispano https://machinelearninghispano.com/.
[30:32] PyConES 2021 https://2021.es.pycon.org/. Llamada a
ponencias.
[31:11] Incompatibilidad entre pydantic
https://pypi.org/project/pydantic/ y Python
3.10: IMPORTANT: PEP 563, PEP 649 and the future of pydantic
#2678 https://github.com/samuelcolvin/pydantic/issues/2678.
PEP 563 -- Postponed Evaluation of Annotations
https://www.python.org/dev/peps/pep-0563/.
Aún quedan meses para que se publique Python 3.10, se puede
dar marcha atrás.
Spoiler: Se dio marcha atrás temporalmente. Python 3.10
se publicará sin ese cambio polémico. En principio,
Python 3.11 (octubre de 2022) sí incluirá ese cambio.
Detalles: PEP 563 and Python 3.10
https://mail.python.org/archives/list/[email protected]/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/.
[37:02] ¿Qué pensais del comportamiento actual, que ejecuta la
anotación de tipos al importar un módulo?
>>> def pepe():
... print('hola')
...
>>> def perico(x:pepe()):
... pass
...
hola
[38:47] Más aclaraciones sobre Flit
https://pypi.org/project/flit/ y PEP 621 -- Storing project
metadata in pyproject.toml
https://www.python.org/dev/peps/pep-0621/.
[40:14] Muchas erratas en las tertulias. Hay que fiarse más de
las notas de los podcasts, que se elaboran con posterioridad.
¡Son charlas de bar! Conversaciones informales, sin
investigación detallada.
¿Publicar audios de fé de erratas?
[45:07] Truquillo que puede ser útil a alguien, sobre todo al
serializar objetos con ciertos protocolos que no soportan
True/False:
>>> int(True)
1
>>> int(False)
0
>>> bool(0)
False
>>> bool(1)
True
[46:15] Extraer parámetros "keyword" de "**keywords", de forma
automática.
>>> def a(pepe=5, **kwargs):
... print(pepe, kwargs)
...
>>> a(5, siete=5)
5 {'siete': 5}
Se explican algunos casos de uso.
toc2audio https://docs.jcea.es/toc2audio/.
[49:42] Dataclasses
https://docs.python.org/3/library/dataclasses.html.
PEP 557 -- Data Classes
https://www.python.org/dev/peps/pep-0557/.
Decoradores de clases: PEP 3129 -- Class Decorators
https://www.python.org/dev/peps/pep-3129/.
attrs https://pypi.org/project/attrs/.
pydantic https://pypi.org/project/pydantic/. Validación de
tipos en tiempo de ejecución. Esta biblioteca se nombra en
casi todas las tertulias.
Mypy http://mypy-lang.org/. Validación de tipos en tiempo
de "testing" o integración continua.
[01:01:12] Truco: "dar por cerrada la sesión" siempre abre temas
nuevos:
Libro: Python avanzado en un fin de semana
https://www.amazon.es/Python-avanzado-fin-semana-Aprende-ebook/dp/B08XLYC38D.
Libro de iniciación: Aprende Python en un fin de semana
https://www.amazon.es/Aprende-Python-en-fin-semana-ebook/dp/B07GXDXLYC/.
[01:03:50] GIL
https://en.wikipedia.org/wiki/Global_interpreter_lock.
Aunque solo se pueda ejecutar un hilo simultaneamente, es
ventajoso cuando hay hilos dominados por la entrada/salida.
Multihilo
https://es.wikipedia.org/wiki/Hilo_(inform%C3%A1tica).
Ha habido muchos intentos de cargarse el GIL de Python, con
poco éxito.
PEP 554 -- Multiple Interpreters in the Stdlib
https://www.python.org/dev/peps/pep-0554/.
Ejemplos de beneficios de multihilo y de tener varias CPUs
https://es.wikipedia.org/wiki/Unidad_central_de_procesamiento
en Python, aún con el GIL actual.
Charla de Jesús Cea en la PyConES 2018: GIL: Todo lo que
quisiste saber y no te atreviste a preguntar
https://www.youtube.com/watch?v=50eOwz9lek4.
[01:22:27] Truco: "dar por cerrada la sesión" siempre abre temas
nuevos (segunda parte):
¿Ponerse deberes para que todos podamos aportar temas cada
semana?
[01:24:32] Uso de IDEs
https://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado.
Vim https://es.wikipedia.org/wiki/Vim.
Autocompletado: Languaje Server Protocol
https://en.wikipedia.org/wiki/Language_Server_Protocol.
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
hacerlo "a mano", cuando lo necesites.
[01:34:42] Eduardo "no tiene casa" :-). Eduardo nos presenta
a la "jefa".
Se emplaza un futuro debate sobre IDEs
https://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado.
Inercia para cambiar. El coste de cambiar el evidente, y lo
que puede no ser evidente es el beneficio de cambiar.
Hace falta un mentor "al lado". Ver un caso de uso.
"Intentar salir de vim". Fuente inagotable de memes
https://es.wikipedia.org/wiki/Meme.
Módulo Mercurial que interactúa con GIT: hg-git
https://pypi.org/project/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
ejemplo, puede haber mucha plantilla fácil de automatizar.
[01:47:42] Truco: "dar por cerrada la sesión" siempre abre temas
nuevos (tercera parte).
[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
https://es.wikipedia.org/wiki/Jitsi.
Jesús Cea explica cómo graba. Algo bizarro y que
funciona casi de casualidad.
Cuando Jesús Cea grababa podcasts
https://es.wikipedia.org/wiki/P%C3%B3dcast con un
grupo cerrado de gente, la grabación era local cada uno
en su máquina. Cada uno grababa su micrófono local y la
suma de todos los demás en dos canales distintos. Eso
permite tener separación de canales para editar el
sonido y, si alguien se olvida de ponerlo, su voz ha
quedado grabada en remoto en todos los demás.
ALSA
https://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture.
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
en las tertulias.
Jibri: Jitsi BRoadcast Infraestructure
https://github.com/jitsi/jibri.
aiortc https://pypi.org/project/aiortc/.
ICE (Interactive Connectivity Establishment):
https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment.
Hay un montón de plataformas de grabación online, de pago.
El problema habitual es el soporte de conexiones desde
distintos dispositivos.
[01:58:35] Despedida.
[01:59:15] Final.
Jul 12, 2021
2 hr

Tener varias versiones de Python en el mismo ordenador, estado de Durus, su licencia y cómo funciona la persistencia de datos https://podcast.jcea.es/python/28
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Jesús, conectando desde Ferrol.
Felipem, conectando desde Cantabria.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
Sergio, conectando desde Vigo.
Juan José, Nekmo, https://nekmo.com/,
https://github.com/Nekmo/. Madrileño conectando desde Málaga.
Miguel Sánchez, email:
[email protected], conectando desde
Las Palmas.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:52] Presentaciones.
[03:47] Utilizar diferentes versiones de Python en el mismo
ordenador.
Cada paquete instalado está vinculado a una instancia
concreta de Python instalada en el sistema.
Nunca hacer pip install, sino indicar la versión: pip3.9
install.
A la hora de instalar paquetes Python en la versión nativa
del sistema operativo, se puede usar pip o bien el gestor
de paquetes del sistema operativo. Mezclar ambas es una
receta para el desastre.
[16:37] Un problema de los paquetes precompilados ("wheels"
https://www.python.org/dev/peps/pep-0427/) es que no se suelen
precompilar de forma retroactiva para la última versión de
Python que acaba de salir.
No suelen estar disponibles hasta que sale una versión nueva
del paquete, lo que puede tardar meses.
[19:52] ¿Bibliotecas para manejar imágenes, compatibles con PyPy
https://www.pypy.org/?
Numpy https://numpy.org/ aún no funciona en PyPy
https://www.pypy.org/.
[21:17] ¿Qué es PyPy https://www.pypy.org/ exactamente?
Jit: Compilación al vuelo
https://es.wikipedia.org/wiki/Compilaci%C3%B3n_en_tiempo_de_ejecuci%C3%B3n.
Barrera de entrada muy grande para entrar en el proyecto.
Curva de aprendizaje.
Problemas con los módulos en C. No valoraron la
importancia del ecosistema.
HPy https://hpyproject.org/.
[27:27] Experiencia de un par de semanas con Flit
https://pypi.org/project/flit/.
Jesús Cea lo está utilizando para publicar su biblioteca
toc2audio https://docs.jcea.es/toc2audio/.
Herramienta propuesta en la charla "Python Packaging: Lo
estás haciendo mal"
https://www.youtube.com/watch?v=OeOtIEDFr4Y, de Juan Luis
Cano.
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
https://www.python.org/dev/peps/pep-0621/.
Lo importante que es tener enlaces directos al "changelog" o
a la documentación en PyPI https://pypi.org/.
[31:32] Módulos de documentación. Carencias.
Docstrings.
doctest
https://docs.python.org/3/library/doctest.html.
Sphinx https://pypi.org/project/Sphinx/.
make html.
Tema eterno: Incluir una biblioteca en la biblioteca
estándar o como biblioteca estándar.
ReST: reStructuredText
https://docutils.sourceforge.io/rst.html.
PEP 287 -- reStructuredText Docstring Format
https://www.python.org/dev/peps/pep-0287/.
docutils: https://pypi.org/project/docutils/.
[40:02] ¿Formato tertulia o preguntas y respuestas?
[41:22] Estado actual de Durus
https://www.mems-exchange.org/software/DurusWorks/ y
comentarios variados sobre el sistema de persistencia.
Jesús Cea ha estado intentando conectar con los autores, con
poco éxito.
Jesús Cea tiene problemas con la licencia.
¿Abandonar el proyecto y pasarse a ZODB
https://zodb.org/en/latest/?
La gente está haciendo "forks"
https://en.wikipedia.org/wiki/Fork_(software_development)
pasando olímpicamente de las licencias.
Jesús Cea se está currando varios cambios de licencia en
ciertos proyectos que le interesan, con muy poco éxito.
ZOPE https://zopefoundation.github.io/Zope/.
COPYRIGHT ASSIGNMENT
https://www.copylaw.com/forms/copyassn.html.
[50:32] ¿Cómo funciona un sistema de persistencia?
Modelo completamente diferente a un ORM
https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping.
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:
https://lists.es.python.org/pipermail/general/2021-April/003476.html.
Creamos un fichero "a.py" con el contenido:
def x():
print('X')
Creamos otro fichero "b.py" con el contenido:
import a
class clase:
x = a.x
def p(self):
print(self.x)
self.x()
if __name__ == '__main__':
a.x()
b = clase()
b.p()
Ejecutas "b.py" y me explicas por qué sale lo que sale :-).
[01:03:42] A la gente le encanta que le "piquen".
[01:03:52] Las versiones actuales de Python ya han integrado el
parche del "memory leak" que se habló en navidades.
bpo-35930: Raising an exception raised in a "future"
instance will create reference cycles #24995
https://github.com/python/cpython/pull/24995.
[01:04:22] Llamada a ponencias de la PyConES
https://2021.es.pycon.org/.
[01:05:22] Volvemos al reto en
https://lists.es.python.org/pipermail/general/2021-April/003476.html.
Pista: los métodos son descriptores:
https://docs.python.org/3/howto/descriptor.html.
Bound method:
https://www.geeksforgeeks.org/bound-methods-python/.
Métodos estáticos:
https://pythonbasics.org/static-method/.
No se ha entendido nada porque ha habido numerosos cortes de
sonido. El tema está bastante mejor explicado y se entiende
en, por ejemplo, From Function to Method
https://wiki.python.org/moin/FromFunctionToMethod.
[01:10:02] Atributos de función. PEP 232 -- Function Attributes
https://www.python.org/dev/peps/pep-0232/.
Se pueden meter atributos a un método, pero se hace a nivel
de clase, no de instancia, porque los métodos pertenecen a
la clase, no a la instancia:class clase:
def p(self):
clase.p.hola = 78
>>> x=clase()
>>> x.p()
>>> x.p.hola
78
>>> y=clase()
>>> a.p.hola
78
>>> clase.p.hola
78
[01:14:42] Notas de las grabaciones, temas futuros y enviar
temas con algún tiempo previo a la tertulia si requieren pensar.
[01:16:06] Final.
Jun 29, 2021
1 hr 16 min

Flit, estilos de código, reducir no es optimizar, muchas opiniones sobre cómo documentar software y minutos sobre el audio de las tertulias y su inminente publicación https://podcast.jcea.es/python/27
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
Javier, conectando desde Madrid.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:52] Prólogo y comentarios sobre la calidad del audio en las
grabaciones.
Auriculares para evitar pedir demasiado al sistema de
cancelación de eco, sobre todo si la sala tiene
reverberación.
¡Manos fuera del teclado!
[03:32] Consejos que ha dado Pablo Gómez para mejorar nuestras
grabaciones.
[04:52] Cómo conecta y graba las tertulias Jesús Cea.
[06:22] Publicación inminente de las tertulias.
toc2audio https://docs.jcea.es/toc2audio/.
[07:22] Revisamos el micro de Jesús Cea y sus roces con la ropa
en tiempo real. Fue muy entretenido.
[09:32] Repaso de la tertulia pasada.
toc2audio https://docs.jcea.es/toc2audio/ usa Flit
https://pypi.org/project/flit/.
Erratas de lo que se dijo la tertulia pasada sobre Flit
https://pypi.org/project/flit/.
[11:20] ¿Cómo se añaden comandos nuevos al sistema en MS
Windows (en Python, claro)?
[17:52] La nota legal de rigor y presentación de los tertulianos.
[19:27] Revisión estética de "Python en Español"
https://podcast.jcea.es/python/. ¿Algún voluntario?
[20:52] Más sobre Flit https://pypi.org/project/flit/
Problemas con los namespaces (PEP 420 -- Implicit Namespace
Packages https://www.python.org/dev/peps/pep-0420/).
[21:42] Estilo de código. La mayor parte del código abierto lo
mantiene una sola persona. Tener una cultura común de código
abierto ayuda. PEP 8 https://pep8.org/.
[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
ver directamente en el código.
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 :
https://status.python.org/incidents/rw171ylf8jw3.
[57:27] Rarezas Python.
What does this print, #1:
https://blog.kevmod.com/2014/06/what-does-this-print-1/.
Depende de la implementación.
Da pistas de cómo funciona la implementación Python por
dentro.
Hay muchas ambigüedades en las implementaciones de Python.
Hay muchas reglas implícitas no documentadas.
[01:00:52] Uso de variables globales.
Condiciones de carrera:
https://es.wikipedia.org/wiki/Condici%C3%B3n_de_carrera.
Conflictos entre múltiples instancias o múltiples hilos.
Patrón de diseño "singleton"
https://es.wikipedia.org/wiki/Singleton.
¿Qué es una variable global?
"Contextvars":
https://docs.python.org/3/library/contextvars.html.
Jesús Cea amenaza con usar "Contextvars"
https://docs.python.org/3/library/contextvars.html en
su proyecto "toc2audio"
https://docs.jcea.es/toc2audio/ por pura chulería.
"Closures":
https://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica).
[01:08:02] ¿Cómo se hacen pruebas con "closures"
https://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica) o
decoradores sofisticados?
¿Los tests unitarios están sobrevalorados?
¿Concentrarse en tests funcionales?
Mock: unittest.mock
https://docs.python.org/3/library/unittest.mock.html.
Tests unitarios cuando se solucionan bugs, para evitar
regresiones.
Al refactorizar https://es.wikipedia.org/wiki/Refactorizar
el código, hay que refractorizar tanto el código como los
tests unitarios.
Inyección de dependencias
https://es.wikipedia.org/wiki/Inyecci%C3%B3n_de_dependencias.
[01:13:07] Algunos comentarios sobre "Machete Mode":
https://nedbatchelder.com/blog/202103/machete_mode_tagging_frames.html.
[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
mano y Eduardo no ha metido ruido de teclado.
Jesús Cea tiene "ideas" de cómo grabar mejor. ¡Peligro!
Plataformas de grabación online.
El problema del cocktail:
https://en.wikipedia.org/wiki/Signal_separation?wprov=srpw1_4#Cocktail_party_problem.
Supresión de ruido: rnnoise
https://jmvalin.ca/demo/rnnoise/.
Cancelación de ruido espectacular de NVIDIA:
https://www.youtube.com/watch?v=d0g1EviDyWM.
Pablo Gómez utiliza Ardour https://ardour.org/ para editar
los audios.
[01:22:52] PÉRDIDA DE SONIDO.
[01:23:07] Enlace al canal de Telegram de la tertulia:
https://t.me/joinchat/y__YXXQM6bg1MTQ0.
A Jesús Cea no le gusta nada utilizar mensajería instantanea
para cosas que se quieran conservar.
[01:24:02] PÉRDIDA DE SONIDO.
[01:24:47] "Lo que se ha perdido ha sido la mejor conversación
de la historia; lástima que no se haya grabado. La gente debería
conectarse en directo a la tertulia para no perderse estas
joyas". Es broma, ¿o no?. Muahahahaha :-).
[01:26:35] Final.
Jun 19, 2021
1 hr 27 min

Diseccionamos la charla de Juan Luis Cano "Python Packaging: Lo estás haciendo mal" y mucho DevOps https://podcast.jcea.es/python/26
Este audio tiene mucho ruido producido por el roce del micrófono
de Jesús Cea en la ropa.
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Felipem, conectando desde Cantabria.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
Javier, conectando desde Madrid.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:50] Preludio.
Hay que automatizarlo todo, y lo que no se puede
automatizar, se documenta.
Detalles de calidad de grabación.
Lo que falta para publicar los audios.
toc2audio https://docs.jcea.es/toc2audio/.
La publicación de audios es inminente.
Diversas plataformas de podcast
https://es.wikipedia.org/wiki/Podcasting.
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
de Python no es sobre Python.
Python Developers Survey 2020 Results
https://www.jetbrains.com/lp/python-developers-survey-2020/
[11:55] Python Packaging: Lo estás haciendo mal
https://www.youtube.com/watch?v=OeOtIEDFr4Y.
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
lista de "buenas prácticas" actualizadas.
El peso del "legado" anticuado.
El ecosistema se está moviendo muy rápido.
Buenas prácticas: https://packaging.python.org/. Esperemos
que alguien mantenga eso actualizado.
PEP 621 -- Storing project metadata in pyproject.toml
https://www.python.org/dev/peps/pep-0621/.
Pecado que Jesús Cea comete constantemente: ¡instalar
paquetes a nivel de sistema operativo!. No le da problemas
porque hace tantas barbaridades que se cancelan unas a
otras. ¡Tú mejor que sigas las recomendaciones de Juan Luis
Cano https://twitter.com/juanluisback!
pipenv es el mal https://pypi.org/project/pipenv/.
pip-tools https://pypi.org/project/pip-tools/.
pip-compile.
pipdeptree https://pypi.org/project/pipdeptree/.
[35:28] A la hora de fijar dependencias, no es lo mismo
bibliotecas que aplicaciones.
[40:58] ¿Estar a la última o actualizar cuando no hay más
remedio?
¡Tests de integración!
https://es.wikipedia.org/wiki/Prueba_de_integraci%C3%B3n
[45:15] Un 100% de cobertura de código no garantiza que se
ejecuten todos los estados del código.
[49:10] Tests de mutaciones
https://es.wikipedia.org/wiki/Prueba_de_mutaci%C3%B3n.
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
https://www.python.org/dev/peps/pep-0420/.
PEP 621 -- Storing project metadata in pyproject.toml
https://www.python.org/dev/peps/pep-0621/.
[55:35] PEP 427 -- The Wheel Binary Package Format 1.0
https://www.python.org/dev/peps/pep-0427/.
Conda: https://docs.conda.io/en/latest/.
Problemas para que los Wheel soporten las nuevas versiones
de Python.
Cuando sale una nueva versión de Python, suele ser
necesario esperar para tener soporte Wheels de los
paquetes que nos interesan.
ELF (Executable and Linkable Format):
https://en.wikipedia.org/wiki/Executable_and_Linkable_Format.
[01:03:10] ¿Alguien usando un sistema operativo viejo va a
instalar una versión moderna de Python?
Si puedes instalar Python desde código fuente, seguro
que puedes compilar mi librería desde código fuente
también.
Ojo con los paquetes binarios avanzados en CPUs
antiguas.
SSE:
https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions.
cmov:
https://en.wikipedia.org/wiki/Predication_(computer_architecture)#History.
[01:10:48] Docker
https://es.wikipedia.org/wiki/Docker_(software).
[01:11:20] Réplicas locales de PyPI https://pypi.org/ y
PyPI privados.
[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.
https://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones.
Permite generar un Wheel
https://www.python.org/dev/peps/pep-0427/ que funciona en
varias versiones de Python.
Buen rendimiento tanto en CPython como en PyPy
https://www.pypy.org/.
Posible API
https://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones
futuro para CPython.
[01:29:02] Ayuda para adecentar la página web de los podcasts:
https://podcast.jcea.es/python/.
La publicación de los audios es inminente.
Reusaremos el podcast "Python en español"
https://podcast.jcea.es/python/. He pedido permiso a mis
antiguos compañeros.
CSS:
https://es.wikipedia.org/wiki/Hoja_de_estilos_en_cascada.
Hay tanto retraso en la publicación que cualquier
"feedback" tardará en salir y en notarse sus efectos.
[01:35:10] Canal de Telegram de coordinación:
https://t.me/joinchat/y__YXXQM6bg1MTQ0.
[01:36:10] Machete Mode
https://nedbatchelder.com/blog/202103/machete_mode_tagging_frames.html.
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.
Javier disfruta dando charlas de temas profundos y
esotéricos.
[01:42:30] El parche de Memory Leak ya se ha integrado el
Python.
bpo-35930: Raising an exception raised in a "future"
instance will create reference cycles #24995
https://github.com/python/cpython/pull/24995.
[01:43:30] Despedida y deberes futuros.
Security funding & NYU
https://discuss.python.org/t/new-packaging-security-funding-nyu/7792.
TUF (The Update Framework) https://theupdateframework.io/.
PEP 458 -- Secure PyPI downloads with signed repository
metadata https://www.python.org/dev/peps/pep-0458/.
PEP 480 -- Surviving a Compromise of PyPI: End-to-end
signing of packages
https://www.python.org/dev/peps/pep-0480/.
En honor a Eduardo, que no se ha conectado hoy, metemos
ruido de teclado para que nuestro editor Pablo no lo eche de
menos.
[01:48:20] Final.
Jun 17, 2021
1 hr 49 min

Pattern Matching en Python 3.10, Sans IO y Encuesta mundial de programadores Python https://podcast.jcea.es/python/25
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Felipem, conectando desde Cantabria.
Jesús, conectando desde Ferrol.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:52] Advertencia de que el audio tiene lagunas y puede ser
difícil seguir el hilo.
[01:07] Conecta gente nueva y cambio de horario.
¡Queremos que las tertulias sean más cortas!
[04:57] Python 3.10: ¿Mandar y cómo mandar deberes?
¿Probar las novedades cuando se anuncian o esperar a que
entren en producción?
[08:19] Presentaciones.
[10:32] Jesús Cea ha enviado ya el parche para el bug que se
discutió en navidades: Issue35930: Raising an exception raised
in a "future" instance will create reference cycles
https://bugs.python.org/issue35930.
[11:12] Los que se autodenominan novatos también tienen mucho
que aportar.
[12:21] Unpacking en bucles for: PEP 3132 -- Extended Iterable
Unpacking: https://www.python.org/dev/peps/pep-3132/.
Busca en Internet: "Python tuple unpacking".
PEP 448 -- Additional Unpacking Generalizations:
https://www.python.org/dev/peps/pep-0448/.
[15:57] Python Packaging: Lo estás haciendo mal
https://www.youtube.com/watch?v=OeOtIEDFr4Y.
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:
https://nedbatchelder.com/blog/202103/machete_mode_tagging_frames.html.
[18:42] Pattern Matching en Python 3.10:
PEP 622 -- Structural Pattern Matching
https://www.python.org/dev/peps/pep-0622/.
PEP 634 -- Structural Pattern Matching: Specification
https://www.python.org/dev/peps/pep-0634/.
PEP 635 -- Structural Pattern Matching: Motivation and
Rationale https://www.python.org/dev/peps/pep-0635/.
PEP 636 -- Structural Pattern Matching: Tutorial
https://www.python.org/dev/peps/pep-0636/.
Tema recurrente: ¿Compensa complicar la sintaxis del
lenguaje?
[22:27] ¡Combina todo eso con el Walrus operator (operador
morsa)!: PEP 572 -- Assignment Expressions
https://www.python.org/dev/peps/pep-0572/.
Presentación en vídeo: Pattern Matching in Python 3.10:
https://morioh.com/p/aa1e6d5352c3, minuto 8:47.
[24:32] Temas recurrentes de Jesús Cea: complejidad accidental
del lenguaje. ¿Python ha perdido el rumbo?
Guido van Rossum
https://es.wikipedia.org/wiki/Guido_van_Rossum está
apoyando muchos cambios polémicos en Python.
El principio del fin fue la implementación de
async/await y dividir Python en dos mundos: síncrono y
asíncrono.
[27:02] Código que puede funcionar tanto en el mundo síncrono y
asíncrono.
Biblioteca asyncio:
https://docs.python.org/3/library/asyncio.html.
Biblioteca unsync: https://pypi.org/project/unsync/.
inspect.iscoroutinefunction(object):
https://docs.python.org/3/library/inspect.html#inspect.iscoroutinefunction.
inspect.iscoroutine(object):
https://docs.python.org/3/library/inspect.html#inspect.iscoroutine.
inspect.isawaitable(object):
https://docs.python.org/3/library/inspect.html#inspect.isawaitable.
inspect.isasyncgenfunction(object):
https://docs.python.org/3/library/inspect.html#inspect.isasyncgenfunction.
inspect.isasyncgen(object):
https://docs.python.org/3/library/inspect.html.
[29:12] Lo bueno de tener dificultad para mezclar el mundo
síncrono y el mundo asíncrono es que ha surgido un movimiento
para desvincular los protocolos del propio medio de
comunicación.
Sans IO: https://sans-io.readthedocs.io/.
Máquina de estados:
https://es.wikipedia.org/wiki/M%C3%A1quina_de_estados.
[33:15] How to write obfuscated python
https://archive.org/details/pyvideo_398___how-to-write-obfuscated-python.
[33:52] Seguridad en PyPI https://pypi.org/: New packaging
security funding & NYU
https://discuss.python.org/t/new-packaging-security-funding-nyu/7792.
PEP 458 -- Secure PyPI downloads with signed repository
metadata https://www.python.org/dev/peps/pep-0458/.
Permite meter espejos de PyPI https://pypi.org/ sin tener
que confiar en ellos.
[36:27] Encuesta mundial de programadores Python: Python
Developers Survey 2020 Results
https://www.jetbrains.com/lp/python-developers-survey-2020/.
Aquí no vamos a describir cada respuesta de la encuesta en las
notas de la tertulia, pero listamos puntos y enlaces que
pueden ser de interés.
[40:32] Usar Python en el navegador web: Brython
http://www.brython.info/.
[44:42] ¿No molaría poder mezclar código Python y
Javascript y poder llamarse mutuamente?
[45:42] Precendente: Python y Java: Jython
https://www.jython.org/.
WAR:
https://en.wikipedia.org/wiki/WAR_(file_format).
[47:42] Python soportado en los navegadores.
PyXPCOM:
https://developer.mozilla.org/pl/docs/PyXPCOM.
WebAssembly:
https://es.wikipedia.org/wiki/WebAssembly.
asm.js: https://en.wikipedia.org/wiki/Asm.js.
Emscripten: https://emscripten.org/.
Javascript en javascript: Polyfill
https://en.wikipedia.org/wiki/Polyfill_(programming).
Pyodide https://pyodide.org/en/stable/index.html.
[59:37] Aún hay mucha documentación online sin actualizar,
con ejemplos en Python 2.
[01:00:42] Corte de conexión. Se supone que había un más
gente grabando la tertulia, pero luego resultó que no.
[01:04:12] pipenv https://pypi.org/project/pipenv/.
[01:09:22] Las características deseadas de Python chocan
con lo que más se valora en él...
[01:11:32] La documentación de FastAPI
https://fastapi.tiangolo.com/ es fantástica y puedes
aprender muchísimos conceptos web.
REST:
https://en.wikipedia.org/wiki/Representational_state_transfer.
[01:18:07] Libro "Modern Tkinter for Busy Python Developers"
https://tkdocs.com/book.html.
[01:19:12] En la escuesta no salen librerías de generación
de PDFs https://es.wikipedia.org/wiki/PDF. Se sugieren
algunas:
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
persistencia de datos en los resultados de la encuesta.
[01:22:22] Tortoise ORM
https://tortoise-orm.readthedocs.io/en/latest/index.html
es asíncrona.
[01:22:47] SQLite https://sqlite.org/ es perfecta si
quieres SQL https://es.wikipedia.org/wiki/SQL, pero solo
hay un programa usando la base de datos.
[01:26:42] Map/Reduce
https://es.wikipedia.org/wiki/MapReduce.
Manta: Triton's object storage and converged analytics
solution https://apidocs.joyent.com/manta/.
[01:27:32] Lo dejamos en la mitad de la encuesta:
Technologies and Cloud.
[01:28:22] Intentamos coordinar el acceso a la segunda captura
de audio de la tertulia. Lamentablemente la cosa no
funcionó.
[01:29:22] Queda pendiente comentar cómo va la publicación de
las tertulias en formato podcast.
[01:30:17] ¡Nuevo horario!
[01:31:05] Final.
Jun 9, 2021
1 hr 31 min

Evolución de la sintaxis de Python, comunidades locales y metareferencias a las grabaciones de las tertulias https://podcast.jcea.es/python/24
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Jesús, conectando desde Ferrol.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Gato, desde Chile.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[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:
https://www.gpul.org/.
[05:48] Propuesta de cambio en la sintaxis de lambda.
Ventaja de la sintaxis actual: al aparecer el término
"lambda", se puede buscar en Internet.
El lenguaje cada vez es más opaco y complejo.
[09:58] Asistencia escasa en las últimas tertulias. ¿Cómo
afrontarlo?
¿Proponer temas a lo largo de la semana?
[12:23] Volvemos al cambio de sintaxis de lambda.
PEP 617 -- New PEG parser for CPython
https://www.python.org/dev/peps/pep-0617/.
[15:03] Guido van Rossum
https://es.wikipedia.org/wiki/Guido_van_Rossum está apoyando
muchos cambios polémicos en Python.
Nominación de Pablo Galindo al Steering Council:
https://discuss.python.org/t/steering-council-nomination-pablo-galindo-salgado-2021-term/5720.
[16:58] ¿Python intenta seguir la estela de otros lenguajes con
los que compite?
PEP 617 -- New PEG parser for CPython
https://www.python.org/dev/peps/pep-0617/.
El parser nuevo abre muchas posibilidades peligrosas.
Lista de correo de Python-ideas:
https://mail.python.org/mailman3/lists/python-ideas.python.org/.
[23:38] ¿Dónde se almacenan los valores por defecto de los
parámetros de una función?
Librerías para procesar y generar bytecode
https://es.wikipedia.org/wiki/Bytecode python.
Ejemplo: simplificar la sintaxis de meter código ensamblador
desde Python.
Decoradores que manipulan las tripas de las funciones, a
nivel de bytecode
https://es.wikipedia.org/wiki/Bytecode.
Módulo "dis" https://docs.python.org/3/library/dis.html.
import dis
>>> def a():
... return 5
...
>>> dis.dis(a)
2 0 LOAD_CONST 1 (5)
2 RETURN_VALUE
[30:13] Cómo mezclar código síncrono y asíncrono, en función del
tipo de función que te llama.
inspect.iscoroutinefunction(object):
https://docs.python.org/3/library/inspect.html#inspect.iscoroutinefunction.
inspect.iscoroutine(object):
https://docs.python.org/3/library/inspect.html#inspect.iscoroutine.
inspect.isawaitable(object):
https://docs.python.org/3/library/inspect.html#inspect.isawaitable.
inspect.isasyncgenfunction(object):
https://docs.python.org/3/library/inspect.html#inspect.isasyncgenfunction.
inspect.isasyncgen(object):
https://docs.python.org/3/library/inspect.html.
[32:03] Bibliotecas con "plugins". Namespaces: PEP 420 --
Implicit Namespace Packages
https://www.python.org/dev/peps/pep-0420/.
Problemas con el "modo desarrollo" del paquete.
PEP 402 -- Simplified Package Layout and Partitioning:
https://www.python.org/dev/peps/pep-0402/. Este PEP se
rechazó.
PEP 382 -- Namespace Packages
https://www.python.org/dev/peps/pep-0382/.
Ficheros pth:
https://docs.python.org/3/library/site.html.
[42:21] Charla Python Madrid: Python Packaging: Lo estás
haciendo mal https://www.youtube.com/watch?v=OeOtIEDFr4Y.
Buenas prácticas actuales.
Se puso como deberes futuros.
[45:11] Metareferencia: Podcast: Python en español:
https://podcast.jcea.es/python/.
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
https://es.wikipedia.org/wiki/Tasa_de_bits_variable.
¿Dónde colgar las grabaciones? ¿Secuestrar y resucitar el
podcast "Python en español":
https://podcast.jcea.es/python/?
Zope: https://es.wikipedia.org/wiki/Zope.
[51:33] Temas Django https://www.djangoproject.com/:
Consultas complejas usando el ORM
https://es.wikipedia.org/wiki/Asignaci%C3%B3n_objeto-relacional.
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
https://www.python.org/dev/peps/pep-0622/.
PEP 634 -- Structural Pattern Matching: Specification
https://www.python.org/dev/peps/pep-0634/.
PEP 635 -- Structural Pattern Matching: Motivation and
Rationale https://www.python.org/dev/peps/pep-0635/.
PEP 636 -- Structural Pattern Matching: Tutorial
https://www.python.org/dev/peps/pep-0636/.
¿Deberes futuros?
What the f*ck Python!
https://github.com/satwikkansal/wtfpython
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:
https://docs.python.org/es/3/.
Documentación oficial de Python en español
https://pyar.discourse.group/t/documentacion-oficial-de-python-en-espanol/238/23.
GitHub: https://github.com/python/python-docs-es/.
Documentación oficial de Python en Español
https://elblogdehumitos.com/posts/documentacion-oficial-de-python-en-espanol/.
docs.python.org en Español
https://elblogdehumitos.com/posts/docspythonorg-en-espanol/.
[01:06:43] Tutorial de Python en español:
https://docs.python.org/es/3/tutorial/index.html.
[01:07:08] Python España: Aprende Python
https://www.es.python.org/pages/aprende-python.html.
Parece abandonado.
[01:07:43] Eventos Python en España:
http://calendario.es.python.org/.
Costaba mucho que la gente avisase de los eventos. Al final
había que estar en todas partes y poner mucha oreja.
[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,
reservar locales, conseguir subvenciones, gente que se
apunta y luego no acude, etc.
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:
https://es.wikipedia.org/wiki/Virtual_Studio_Technology.
Jesús Cea ha escrito software de control de una emisora de
radio. Detalles.
Ojo con el sistema de recogida de basuras. gc — Garbage
Collector interface:
https://docs.python.org/3/library/gc.html.
[01:19:43] Capítulos en podcasts. Más detalles sobre el
"workflow" de edición de sonido.
Biblioteca: https://docs.jcea.es/toc2audio/.
rnnoise: https://jmvalin.ca/demo/rnnoise/.
[01:22:53] Despedida.
Experimento con deberes para poder tratar temas profundos
habiéndolos visto con anterioridad.
[01:24:18] Final.
Jun 7, 2021
1 hr 25 min

Hoy estamos poquitos en la tertulia y eso permite hablar a gente que nunca ha hablado antes: ¿Cómo puede aprender Python un novato? Python y seguridad https://podcast.jcea.es/python/23
Audio procesado con "rnnoise": https://jmvalin.ca/demo/rnnoise/.
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Jesús, conectando desde Ferrol.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
Gato, desde Chile.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:53] Hoy no se han conectado los habituales (Virako conectó
un rato en medio de la sesión). Por suerte, Jesús, un oyente
silencioso habitual, se apiadó de mí.
¿Cómo empezamos a programar en Python?
Empezar con el tutorial:
https://docs.python.org/es/3/tutorial/index.html.
[05:43] Jesús Cea coleccionaba lenguajes de programación en
su juventud.
Forth: https://es.wikipedia.org/wiki/Forth.
Ensamblador:
https://es.wikipedia.org/wiki/Lenguaje_ensamblador.
[06:23] "La mejor herramienta para cada trabajo" tiene un
coste oculto. Especializarse.
[07:23] Mercado laboral en España para trabajar en remoto.
Los empleadores tienen exigencias poco realistas.
[09:18] Hay mucho material para aprender.
Saqueadores edición técnica: http://set-ezine.org/.
[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:
https://mail.python.org/mailman/listinfo/python-es.
Internet.
[19:23] Raspberry PI https://www.raspberrypi.org/, ESP8266
https://es.wikipedia.org/wiki/ESP8266, ESP32
https://es.wikipedia.org/wiki/ESP32.
[21:43] Puesta al día de la semana.
[23:28] Encuesta mundial de programadores de Python: Python
Developers Survey 2020 Results
https://www.jetbrains.com/lp/python-developers-survey-2020/.
[24:04] Ya estamos repasando las grabaciones, con vista a
publicarlas.
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:
https://es.wikipedia.org/wiki/Complejidad_ciclom%C3%A1tica.
Radon: https://pypi.org/project/radon/.
Cobertura de test: Coverage
https://pypi.org/project/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
semana pasada. Explicaciones.
Explicación de cómo se graban las tertulias.
[41:13] Packt https://www.packtpub.com/. Muchos libros
digitales sobre Python.
Un libro gratis al día:
https://www.packtpub.com/free-learning.
Bot de telegram de notificaciones diarias:
https://t.me/packtpubfreelearning.
[44:33] Funciones que son malas prácticas en C.
C++ 'strcpy' gives a Warning (C4996):
https://stackoverflow.com/questions/4012222/c-strcpy-gives-a-warning-c4996
[46:23] Tema recurrente: ¿poner deberes?
[48:08] ¿Progresos sobre Issue24676: Error in pickle using
cProfile https://bugs.python.org/issue24676, visto en
tertulias anteriores?
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
cero.
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
mucho más esfuerzo del necesario. Hace falta cierto
tutelaje.
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
que prioriza lo importante.
Aprende Python en un fin de semana || Libro – PDF – EPUB –
Descargar
https://elcientificodedatos.com/aprende-python-en-un-fin-de-semana/.
Python España: Aprende Python
https://www.es.python.org/pages/aprende-python.html.
Comunidades locales.
¿Las charlas valen para algo?
¿Alguien que no sabe programar en absoluto entiende qué
significa a = a + 1?
Commodore VIC-20:
https://en.wikipedia.org/wiki/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
sirven para algo? ¿Son spam?
[01:13:43] Python y seguridad. ¿Recomendaciones para novatos?
OWASP: https://owasp.org/.
OWASP Top Ten Web Application Security Risks:
https://owasp.org/www-project-top-ten/.
Listas de correo de seguridad.
Desbordamiento de búfer:
https://es.wikipedia.org/wiki/Desbordamiento_de_buffer.
Podcast: Security Now https://twit.tv/shows/security-now.
Hispasec: Noticias de seguridad diaria: Una al Día:
https://unaaldia.hispasec.com/.
The CERT C Secure Coding Standard
https://www.amazon.com/CERT-Secure-Coding-Standard/dp/0321563212.
Cada lenguaje tiene sus propios fallos de seguridad típicos,
propios de las idiosincrasias o el estilo de ese lenguaje.
[01:22:43] PEP 578 -- Python Runtime Audit Hooks
https://www.python.org/dev/peps/pep-0578/
Audit events table:
https://docs.python.org/3/library/audit_events.html.
[01:24:43] Los "Framework" te protegen de fallos típicos
conocidos https://es.wikipedia.org/wiki/Framework.
Si el "framework" es popular y se le encuentra un bug, eres
susceptible a un ataque masivo.
Ejemplo: WordPress:
https://es.wikipedia.org/wiki/WordPress.
Hay que preocuparse de tenerlo actualizado.
Django: https://www.djangoproject.com/.
Ataque de cadena de suministro:
https://es.wikipedia.org/wiki/Ataque_a_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/.
OWASP Top Ten Web Application Security Risks:
https://owasp.org/www-project-top-ten/.
[01:32:53] ¿En qué posición está Python respecto a la seguridad,
respecto a otros lenguajes de programación?
DB-API 2.0: PEP 249 -- Python Database API Specification
v2.0 https://www.python.org/dev/peps/pep-0249/.
sqlite3: https://docs.python.org/3/library/sqlite3.html.
Aunque un lenguaje de programación sea razonablemente
seguro, los programadores introducen fallos de seguridad en
su código. Algunos ejemplos.
pickle: https://docs.python.org/3/library/pickle.html.
eval:
https://docs.python.org/3/library/functions.html#eval.
[01:36:43] Ataque de cadena de suministro:
https://es.wikipedia.org/wiki/Ataque_a_cadena_de_suministro.
Poison packages – “Supply Chain Risks” user hits Python
community with 4000 fake modules:
https://nakedsecurity.sophos.com/2021/03/07/poison-packages-supply-chain-risks-user-hits-python-community-with-4000-fake-modules/.
Cualquiera puede subir un módulo nuevo a PYPI:
https://pypi.org/.
[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
maliciosos conscientes.
Ejemplo, Antivirus. VirusTotal:
https://www.virustotal.com/gui/, Hispasec
https://hispasec.com/es/.
Un clásico de 1984: "Reflections on Trusting Trust":
https://users.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf.
[01:46:08] Es un problema universal. Dependemos del trabajo de
mucha gente que no cobra, que lo hace por amor al arte.
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:
Heartbleed https://es.wikipedia.org/wiki/Heartbleed.
WordPress: https://es.wikipedia.org/wiki/WordPress.
[01:50:03] Empresas que dan soporte comercial a productos de
código abierto.
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":
https://loscuenca.com/2010/04/nunca-han-despedido-a-nadie-por-contratar-a-______/
[01:55:23] Hoy ha sido un día raro en la tertulia, faltan (casi)
todos los habituales y habla gente que no ha hablado nunca.
Jesús Cea ya ha perdido el miedo a que no se conecte nadie a
la tertulia semanal.
[02:00:33] Falta la voz del "novato".
Aprende Python en un fin de semana || Libro – PDF – EPUB –
Descargar
https://elcientificodedatos.com/aprende-python-en-un-fin-de-semana/.
[02:09:03] Traducción de la documentación Python al español:
Documentación Python en Español:
https://docs.python.org/es/3/.
Documentación oficial de Python en español
https://pyar.discourse.group/t/documentacion-oficial-de-python-en-espanol/238/23.
GitHub: https://github.com/python/python-docs-es/.
Documentación oficial de Python en Español
https://elblogdehumitos.com/posts/documentacion-oficial-de-python-en-espanol/.
docs.python.org en Español
https://elblogdehumitos.com/posts/docspythonorg-en-espanol/.
[02:11:28] Final.
May 31, 2021
2 hr 12 min

Os dejamos con la miel en los labios, pero hasta ese momento hablamos de la interacción entre las clases abstractas y MYPY, más complejidad en la sintaxis de Python con el PEP 637, PIP, dependencias varias y seguridad, y los tipos de PEP que hay. ¿Bokeh o Plotly? Haberte conectado en directo... https://podcast.jcea.es/python/22
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Javier, conectando desde Madrid.
Miguel Sánchez, email:
[email protected], conectando desde
Las Palmas.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde
Huelva.
José Juan.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:53] Vamos progresando en la publicación de las grabaciones.
Pablo Gómez, twitter:
@julebek, nuestro sufrido
editor de audio, está enviando a Jesús Cea ya algunos audios
procesados.
La calidad de los audios originales es bastante mala.
Capítulos en audios: Biblioteca toc2audio
https://docs.jcea.es/toc2audio/.
Jesús Cea quiere notas exhaustivas de cada grabación. El
audio es casi redundante. Lo que estás leyendo ahora mismo,
vaya.
[06:45] El aviso legal de rigor para grabar los audios y
publicarlos luego.
[06:58] Presentaciones.
[09:58] Jesús Cea habla mucho.
[10:53] Interacción entre clases abstractas
https://docs.python.org/3/library/abc.html y MYPY
http://mypy-lang.org/.
[18:28] Expansión explosiva del tamaño del bytecode
https://es.wikipedia.org/wiki/Bytecode generado por un
programa trivial Python.
Ojo, teclear este código tal cual puede tumbar tu máquina y
puedes necesitar reiniciar, perdiendo lo que estés haciendo
con el ordenador.
(1<<19**8,)*2
(1<<19**8,)*4**7
Build a Compiler Bomb: Python 3, 13 byte source,
9,057,900,463 byte (8.5GiB) .pyc-file / Python 3, 16 byte
source, >32TB .pyc-file (if you have enough memory, disk
space and patience)
https://codegolf.stackexchange.com/questions/69189/build-a-compiler-bomb/69415#69415.
16 bytes of Python code compiles to 32 terabytes of bytecode
https://www.reddit.com/r/Python/comments/llccey/16_bytes_of_python_code_compiles_to_32_terabytes/.
[27:48] GitHub actions: https://github.com/features/actions.
[28:43] PEP 637 -- Support for indexing with keyword arguments
https://www.python.org/dev/peps/pep-0637/.
La sintaxis de Python es cada vez más compleja.
Jesús Cea se sorprende de que Guido van Rossum
https://es.wikipedia.org/wiki/Guido_van_Rossum esté
"pervertiendo" tanto Python.
Muchos cambios de sintaxis se justifican para ciertos
usuarios (cálculo numérico) y resulta que a esos usuarios no
les está preguntando nadie.
Los lenguajes empiezan simples y se van complicando...
siendo reemplazados por otros lenguajes que empiezan
simples.
Estos temas se han tratado con frecuencia y profundidad en
tertulias anteriores.
El lenguaje se particiona en "sublenguajes" y "subculturas".
BNF (Backus–Naur form):
https://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Backus-Naur.
JavaScript: The Good Parts:
https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742.
¿Cómo aprende Python la gente novata?
Grupos de excepciones: PEP 654
https://www.python.org/dev/peps/pep-0654/.
asyncio https://docs.python.org/3/library/asyncio.html
contamina todo tu código.
Trio: https://pypi.org/project/trio/.
[44:26] Metaconversacion sobre temas recurrentes en la tertulia.
¿Puesta al día anual sobre temas recurrentes?
[45:08] ¿Cómo se numeran los PEP
https://www.python.org/dev/peps/?
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
https://www.python.org/dev/peps/pep-0494/.
PEP 373 -- Python 2.7 Release Schedule
https://www.python.org/dev/peps/pep-0373/.
[51:08] A veces para ver los cambios de un proyecto, a veces no
hay más remedio que examinar el propio sustema de control de
versiones. Documentar los cambios debería ser obligatorio, pero
no todos los proyectos lo usan
https://es.wikipedia.org/wiki/Changelog.
[53:28] El valor de los DeprecationWarning:
https://docs.python.org/3/library/exceptions.html#DeprecationWarning.
¿Cuándo los arreglas?
Deuda técnica.
Estrategia: Bloquear dependencias.
Acumular actualizaciones tampoco es buena idea.
Que tus tests comprueben tus dependencias suele ser una mala
práctica, pero para los tests de integración puede ser buena
idea para asegurarse la estabilidad del ecosistema del
proyecto.
[58:13] Los problemas de bloquear dependencias de forma
transitiva.
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"
https://es.wikipedia.org/wiki/Hooking, pero las versiones
recientes tienen un proceso de resolución de dependencias
bastante sofisticado.
[01:05:43] Paquete "safety" https://pypi.org/project/safety/.
[01:07:38] Salto de fe al hacer pip install. Paquetes
maliciosos.
Ataque a cadena de suministro
https://es.wikipedia.org/wiki/Ataque_a_cadena_de_suministro.
[01:09:23] Motivación económica para secuestrar el DNS
https://es.wikipedia.org/wiki/Dns.
[01:10:58] Nombres inexplicables de paquetes en PIP.
[01:11:28] RFC 2606: Reserved Top Level DNS Names
https://datatracker.ietf.org/doc/html/rfc2606.
Por ejemplo, http://example.org/ .
[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
https://www.djangoproject.com/.
[01:16:28] Comparativa entre Bokeh https://bokeh.org/ y Plotly
https://plotly.com/python/.
Gráficos dinámicos en JavaScript para el navegador web, pero
alimentado desde Python en el servidor.
[01:19:46] La grabación se cortó aquí debido a "un problema
técnico" (entre la silla y el teclado de Jesús Cea). Se ha
perdido más o menos la última media hora.
[01:19:55] Final.
May 27, 2021
1 hr 20 min

Grupos de excepciones (PEP 654), PYPI y hasta bitcoins y blockchains (¡sin hype!) https://podcast.jcea.es/python/21
Este audio tiene mucho ruido producido por el roce del micrófono
de Jesús Cea en la ropa.
Participantes:
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Javier, conectando desde Madrid.
Miguel Sánchez, email:
[email protected], conectando desde
Canarias.
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde Huelva.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[00:53] El aviso legal de rigor.
¡Hay un voluntario para editar!
[02:23] Pasamos a reunirnos en la sala "py2021" en vez de en la
sala "py2020".
[03:13] ¿Las cadenas son inmutables? Las cadenas son inmutables,
pero los id() se reutilizan cuando se liberan objetos.
Se explica qué es id(). No es una identidad persistente,
depende de su direcciñon de memoria y la memoria se
reutiliza cuando se liberan objetos.
[07:23] ¿Hay forma de mutar una cadena? No desde el propio
lenguaje, pero desde C y... ¡No vayas por ahí!
Python 3.9.2 soluciona un desbordamiento de memoria.
[10:03] Grupos de excepciones: PEP 654
https://www.python.org/dev/peps/pep-0654/.
Lista de correo de Python Ideas:
https://mail.python.org/mailman3/lists/python-ideas.python.org/.
Si usas la funcionalidad, la sintaxis y semántica de las
excepciones se modifica.
Como ocurrió con async y await, si alguno de los
paquetes nuevos usa esta funcionalidad, te contaminará tu
propio código.
[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
versiones diferentes de Python a la vez en el sistemas
operativo.
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
evolución del intérprete.
Si código Python 3 funciona en Python 2... ¿El código era
Python 3 realmente?
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
oxímoron?
[32:28] Pasar tests y comprobaciones cuando se mete código en el
control de versiones:
gitlint: https://jorisroovers.com/gitlint/.
vim-autopep8:
https://vim-autopep8.readthedocs.io/en/latest/.
[34:53] PEPs recientes con cambios de sintaxis: Grupos de
excepciones y "pattern matching":
Grupos de excepciones: PEP 654 -- Exception Groups and
except* https://www.python.org/dev/peps/pep-0654/.
La semántica cambia bastante y "contamina" el código
como lo hace async/await.
PEP 622 -- Structural Pattern Matching
https://www.python.org/dev/peps/pep-0622/.
PEP 634 -- Structural Pattern Matching: Specification
https://www.python.org/dev/peps/pep-0634/.
PEP 635 -- Structural Pattern Matching: Motivation and
Rationale https://www.python.org/dev/peps/pep-0635/.
PEP 636 -- Structural Pattern Matching: Tutorial
https://www.python.org/dev/peps/pep-0636/.
[40:28] Trio https://pypi.org/project/trio/ programación
asíncrona mejor hecha que con asyncio
https://docs.python.org/3/library/asyncio.html.
El concepto de "guardería" en Trio:
https://trio.readthedocs.io/en/stable/reference-core.html#trio.Nursery.
[44:23] Python ha cumplido 30 años. La primera versión pública
fue la 0.9.1 en 1991.
Happy birthday, Python, you're 30 years old this week: Easy
to learn, and the right tool at the right time
https://www.theregister.com/2021/02/20/python_at_30/.
Compilación en sistemas operativos modernos:
https://github.com/smontanaro/python-0.9.1.
[45:13] Comparación de diferentes tipos. En Python 2 se podían
mezclar, pero en Python 3 no.
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
Python 3.
BTree: https://es.wikipedia.org/wiki/%C3%81rbol-B.
[52:33] ¿Por qué Pillow https://pypi.org/project/Pillow/ se
sigue importando como import PIL, la librería que reemplazó
hace eones?
Confuso.
Casos similares (hay muchos más):
python-dateutil
https://pypi.org/project/python-dateutil/.
Beautiful Soup:
https://pypi.org/project/beautifulsoup4/.
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
algo? El orden por relevancia es un chiste.
[01:02:18] Estadísticas de descarga en PYPI https://pypi.org/:
Antes había contadores de descargas.
Vanity: https://pypi.org/project/vanity/.
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:
https://killedbygoogle.com/.
229 servicios hasta el momento.
[01:10:23] Jesús y su ideología de servicios gratuitos que
crecen a costa del trabajo de los usuarios.
Encima dependes de ellos y queman el mercado para servicios
comerciales.
La resignación y pasividad de los usuarios.
[01:13:28] Idea de Jesús: Estamos viviendo en la edad oscura
de la informática. Dentro de 50 años no se podrá acceder a
la información generada en estos momentos.
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
hay verificación de firmas digitales.
Package signing & detection/verification:
https://github.com/pypa/warehouse/milestone/16.
Red distribuida por IPFS
https://es.wikipedia.org/wiki/Sistema_de_archivos_interplanetario
o BitTorrent https://es.wikipedia.org/wiki/BitTorrent.
Ideas de Jesús para Python España: red distribuida de
fotos de las PyConES http://www.es.pycon.org/.
[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
https://pypi.org/rss/packages.xml.
[01:24:43] GitHub: Security vulnerability alerts for Python
https://github.blog/2018-07-12-security-vulnerability-alerts-for-python/.
[01:25:13] Compilar paquetes binarios para Windows.
[01:26:48] Cython https://pypi.org/project/Cython/ y mypyc
https://github.com/mypyc/mypyc.
[01:28:33] A veces te importa a ti más el código que al dueño de
la biblioteca.
Dinámicas de colaboración en proyectos de código abierto.
Core developer de Python: Mariatta Wijaya - What is a Python
Core Developer?
https://www.youtube.com/watch?v=hhj7eb6TrtI.
La importancia de la realimentación.
[01:35:43] Kodi https://es.wikipedia.org/wiki/Kodi y
dinámica del proyecto:
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
https://es.wikipedia.org/wiki/Bitcoin y la importancia de
hacer copia de seguridad del monedero.
Blockchain https://es.wikipedia.org/wiki/Cadena_de_bloques.
BitCoin desarrolla ideas muy interesantes.
Prueba de trabajo:
https://es.wikipedia.org/wiki/Sistema_de_prueba_de_trabajo.
Cypherpunk: https://en.wikipedia.org/wiki/Cypherpunk.
Contrato inteligente:
https://es.wikipedia.org/wiki/Contrato_inteligente.
Datos abiertos:
https://es.wikipedia.org/wiki/Datos_abiertos.
[01:55:23] Ojo, que todo queda grabado para la posteridad.
Estamos teniendo una conversación de bar. Hay que valorar que
las opiniones son opiniones de bar, con el peso de una opinión
de bar.
[01:58:03] ¿Poner deberes? Nadie tiene tiempo...
[01:58:58] La motivación para hacer todo esto.
Solapar intereses es difícil.
[02:00:23] Despedida.
[02:01:45] Final.
May 27, 2021
2 hr 2 min

Internet Archive, no acabamos de hablar del nuevo "pattern matching", complejidad creciente de la sintaxis de Python https://podcast.jcea.es/python/20
Participantes:
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
Jesús Cea, email: [email protected], twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Víctor Ramírez, twitter: @virako,
programador python y amante de
vim, conectando desde Huelva.
Javier, conectando desde Madrid.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
[01:33] Cómo documentar en Python.
Google docs: https://docs.google.com.
Wikis en GitHub:
https://docs.github.com/en/communities/documenting-your-project-with-wikis/about-wikis.
Ventajas de tener la documentación en el control de
versiones del proyecto.
Ventajas de ir escribiendo la documentación mientras
escribes el propio código: Realimentación.
Sphinx: https://www.sphinx-doc.org/en/master/.
sphinx.ext.autodoc:
https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html.
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 semana.
No hay balas de plata.
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
https://realpython.com/products/cpython-internals-book/.
[11:13] HPy https://hpyproject.org/. Nuevo API
https://es.wikipedia.org/wiki/Api para programar extensiones C
para Python, independizándote de la versión del intérprete y
compatible con cosas como PyPy: https://www.pypy.org/.
[13:18] Internet Archive como biblioteca de libros modernos:
https://archive.org/details/inlibrary.
Funciona como una biblioteca tradicional.
Préstamo de libros.
Están escaneando a toda velocidad: 2.5 millones de libros en
el momento de escribir estas notas (mayo de 2021).
Internet Archive: https://archive.org/.
Wayback Machine: https://web.archive.org/.
Preservación de videojuegos, páginas en flash, discos de
música...
[17:03] Web de Python en Internet Archive.
1997:
https://web.archive.org/web/19970606181701/http://www.python.org/.
1998:
https://web.archive.org/web/19981212032130/http://www.python.org/.
Un ejemplo de "batteries included":
https://commons.wikimedia.org/wiki/File:Python_batteries_included.jpg.
[17:53] Jesús Cea echa de menos la internet distribuida.
[18:23] Pattern Matching en Python 3.10. PEP 622 -- Structural
Pattern Matching https://www.python.org/dev/peps/pep-0622/.
¿"match" y "case" serán palabras reservadas?
PEP 617 -- New PEG parser for CPython
https://www.python.org/dev/peps/pep-0617/.
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
con Windows.
[29:28] Truco: Python -i: Ejecuta un script y pasa a modo
interactivo.
Comentado hace unas semanas.
También se puede hacer desde el propio código con
code.InteractiveConsole(locals=globals()).interact().
Jesús Cea se queja de que usando la invocación desde código
no funciona la edición de líneas. Javier da la pista correcta:
para que funcione, basta con hacer import readline antes de
lanzar el modo interactivo.
[30:48] Manhole: https://pypi.org/project/manhole/.
[31:53] Breakpoints condicionales
https://docs.python.org/3/library/pdb.html#pdbcommand-condition.
breakpoint() como función nativa: PEP 553 -- Built-in
breakpoint() https://www.python.org/dev/peps/pep-0553/.
import pdb; pdb.set_trace().
[33:28] Scraping a mano:
scrapy shell:
https://docs.scrapy.org/en/latest/topics/shell.html.
Jesús Cea no echa de menos Scrapy
https://docs.scrapy.org/en/latest/.
[36:03] Indexador y buscador de documentos: Whoosh
https://whoosh.readthedocs.io/en/latest/intro.html.
Jesús necesitaba ignorar tildes, lo que impacta en la
extracción del lexema.
El backend está documentado, para que te lo puedas currar tú
si lo necesitas.
[38:23] ¿Cómo hacer copia de seguridad de un fichero de 600
gigabytes con pocos cambios internos?
[40:58] Eduardo Castro ha ganado un hackathon en Pontevedra.
Software para Django: https://www.djangoproject.com/.
[46:38] Experiencias agridulces con los hackathones
https://en.wikipedia.org/wiki/Hackathon.
Netflix Prize https://en.wikipedia.org/wiki/Netflix_Prize.
[50:38] Una URL puede no estar no disponible ya cuando escuchas
el podcast:
Podcast: Programar es una mierda:
https://www.programaresunamierda.com/.
[52:28] Jamii https://jamii.es/.
API https://es.wikipedia.org/wiki/Api
[55:38] GraphQL https://es.wikipedia.org/wiki/GraphQL.
REST:
https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional.
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:
https://en.wikipedia.org/wiki/HTTP/2_Server_Push.
No se tiene que responder por orden. Multiplexación.
[01:08:53] La explosión de la complejidad innecesaria ocultada
por bibliotecas:
OAuth2
https://en.wikipedia.org/wiki/OAuth#OAuth_2.0.
OpenID: https://en.wikipedia.org/wiki/OpenID.
[01:10:33] Complejidad creciente de la sintaxis de Python.
Volvemos a Structural Pattern Matching
https://www.python.org/dev/peps/pep-0622/.
Complejidad de la sintaxis.
Un lenguaje pequeño y capaz reemplaza a lenguajes
dinosaurio. Python reemplazó a otros lenguajes dinosaurio.
Ahora Python es un dinosaurio. ¿Cuándo saldrá un lenguaje
que reemplace a Python?
[01:12:13] Metaclases
https://realpython.com/python-metaclasses/.
Closures:
https://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica).
[01:15:08] Empiezan a aparecer sublenguajes, tribus,
subculturas de Python.
Ciertos cambios de sintaxis pueden unificar subculturas: "la
forma oficial de hacerlo".
El operador ternario de Python v = VALOR1 if CONDICIÓN
else VALOR2: PEP 308 -- Conditional Expressions
https://www.python.org/dev/peps/pep-0308/.
List comprehension: [f(i) for i in ITER if
CONDICIÓN(i)]: PEP 202 -- List Comprehensions
https://www.python.org/dev/peps/pep-0202/.
[01:20:18] En los viejos tiempos, podías hacer barbaridades
como True = 0. Esto funciona en Pythonn 2.7. Es algo que
se cambió en Python 3.0:
https://docs.python.org/3.0/whatsnew/3.0.html#changed-syntax.
[01:21:53] Jesús Cea echa de menos que se eliminen cosas.
Está obsesionado con el tamaño del lenguaje.
¿Qué eliminaríamos?
[01:25:23] El lenguaje C incluye solo lo mínimo imprescindible.
[01:26:48] Curiosidades: What the f*ck Python!
https://github.com/satwikkansal/wtfpython:
>>> all([])
True
>>> all([[]])
False
>>> all([[[]]])
True
[01:28:03] Algunos avances en la investigación del bug descrito
por Virako en las últimas semanas: Ejemplo de código:
https://pastebin.com/vGM1sh8r.
Issue24676: Error in pickle using cProfile
https://bugs.python.org/issue24676.
Issue9914: trace/profile conflict with the use of
sys.modules[__name__] https://bugs.python.org/issue9914.
Issue9325: Add an option to pdb/trace/profile to run library
module as a script https://bugs.python.org/issue9325.
Requiere mejorar el módulo runpy
https://docs.python.org/3/library/runpy.html.
A nadie le ha dolido lo suficiente el bug como para
solucionarlo. No es que sea realmente difícil. Tal vez sí.
[01:35:53] Nuitka https://nuitka.net/.
Ejecutables Python independientes de lo que tengas instalado
en el sistema. Por ejemplo, para poder usar una versión de
Python "moderna".
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
"bandera" seguido del código del país:
https://en.wikipedia.org/wiki/Regional_indicator_symbol.
La bandera de Taiwan se ve distinta en China que en el resto
del mundo: https://emojipedia.org/flag-taiwan/.
"Collation"
https://en.wikipedia.org/wiki/Unicode_collation_algorithm,
para ordenar y comparar correctamente
caracteres unicode: PyICU: https://pypi.org/project/PyICU/.
[01:50:23] Cuando el Steering Council
https://www.python.org/dev/peps/pep-0013/ vota un tema
polémico, la decisión es final. Ya no se busca el consenso a
toda costa.
[01:52:53] Despedida.
[01:53:55] Final.
May 22, 2021
1 hr 54 min
Load more
