Jul 12, 2021
Python en español #29: Tertulia 2021-04-20
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: jcea@jcea.es, 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: info@ecdesign.es. 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/python-dev@python.org/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 poda…