[Py-MAD] Idea: Python puro

Estela Balboa estelabalboa at gmail.com
Fri Nov 29 08:20:52 CET 2019


Oleeeee me están entrando unas ganas de ayudar para que podáis contar todas
estas cosas !!!

Súper interesante!! Tb podemos hablar de paralelizar código Python en
entornos bigdata.

Me parece miel todo lo que estáis escribiendo! Cuando quedamos para
organizar algo molón ?

Estela



El El vie, 29 nov 2019 a las 4:15, Jesus Cea <jcea at jcea.es> escribió:

> On 29/11/19 2:02, Jesus Cea wrote:
> > ¿Dónde lo podríamos hacer? ¿Alguien tiene algún contacto en una empresa
> > que nos preste una sala? ¿un workcenter?. ¿Ideas?.
>
> Temas a los que me interesaría asistir:
>
> - Cualquier cosa que me ayude a ser mejor programador y que no pueda
> leer tranquilamente en casa por mí mismo en vez de sentarme una hora
> oyendo a alguien hablar de las cosas triviales que puedo leer en 20
> segundos en la página de "introducción" del proyecto.
>
> - Experiencia práctica con código python que no sea trivial.
>
> - Casi cualquier charla de brainstorming de "he intentado hacer esto y
> no consigo que vaya". Las cosas que fallan son mucho más interesantes
> que las cosas que funcionan.
>
> Ejemplos:
>
> - Cualquier cosa de micropython que no sea copia de un tutorial online
> de leer un sensor y mandarlo por MQTT. Que tenga algo de chicha, por
> dios, o que sea un uso interesante y no el típico de mandar la
> temperatura de la habitación o la humedad de la maceta.
>
> - Usar micropython para escribir una rutina que se ejecuta en una
> interrupción de ese microcontrolador con 32 kbytes de RAM tiene que ser
> muy interesante, ¿no? Eso de no poder crear objetos en tiempo de
> interrupción y que en Python todo sean objetos, seguro que garantiza
> algunas anécdotas para compartir delante de una cerveza y un valium.
>
> - ¿Que dices que? ¿Que poniendo el decorador "@viper" a esta rutina
> micropython genera directamente código ensamblador nativo? Aja... Verás,
> dame tres horas y bájate en el móvil el manual de ensamblador de la CPU
> del ESP8266 y te cuento. Sí, dame un abrazo, anda. Lo necesito.
>
> - Cosas LoRa que no sean triviales. Comunicación por radio, por
> infrarrojos, por sonido, por señales de humo, por el puñetero
> fluorescente del techo. No, por Wifi no me interesa, a menos que tengas
> cosas interesantes que contarme sobre los modos de ahorro de energía o
> te hayas empollado Wifi direct. Ya se nos ocurrirá cómo justificarlo en
> una reunión de "Python Puro", confía en mí.
>
> - Técnicas de depuración, profiling de CPU, profiling de memoria.
> ¿Tienes trucos sobre cómo seguir la pista a una petición que involucra
> 700 microservicios?. Por favor, que no sea "esta librería mola". Si lo
> solucionas con algo que no has hecho tú, dime cómo se llama y ya me la
> miro yo por Internet.
>
> - Cualquier cosa sobre casos fallidos: "esta librería mola mucho,
> pero..." Me interesan esos peros. Me interesa saber cuándo no usarlo. Me
> interesa saber dónde te has dado un hostión, cómo lo analizaste y qué
> has aprendido de ello.
>
> - Aceleración de Python. Todo lo que no sea trivial. Me interesa Numba,
> cython, CFFI... Me interesan los casos que dan problemas. Dime que
> esperabas poder usar las anotaciones de tipos de python moderno, pero el
> código C generado era una mierda. Me interesa saberlo. Me interesa saber
> cómo lo has solucionado, o lo que has intentado y el resultado era aún
> peor. Me interesa verte la cara cuando me expliques cómo conseguiste
> paralelizar esas ecuaciones con numpy, aunque demasiado tarde para
> evitar que tu marido te abandonase por falta de atención.
>
> - Usos interesantes de las novedades idiomáticas de las versiones
> recientes de Python. Yo todavía soy ambivalente con el operador "morsa"
> de python 3.8. Los F-strings, en cambio, los he adoptado con pasión. Las
> dataclasses me han sido indiferentes hasta ahora, pero si me puedes
> contar casos de éxito que no sean los que ya vienen en el manual o en el
> PEP...
>
> - "Argparse" mola mucho, pero no consigo especificar esta sintaxis
> concreta que tanto me interesa. Bueno, lo conseguí tras invocar a satán.
> Ven aquí, hermano, y me lo cuentas. Comparto tu dolor.
>
> - Trucos que no le has contado a nadie pero que te salvan el culo cada
> día. Yo, por ejemplo, siempre meto un hilo "manhole" a cualquier demonio
> que se queda funcionando de fondo, para poder conectarme a él e
> interactuar de forma interactiva.
>
> - Pyro. ¿Por qué ni dios usa Pyro?.
>
> - ¿Persistencia de objetos? Si no es un maldito ORM al uso, me interesa.
> Sí, yo también me reí aquella vez que modifiqué un atributo mutable en
> un objeto ZODB y se me olvido hacer "_p_changed = 1". No veas que
> divertido. Tío, puedes copiarme la idea de objetos "mutable aware" para
> automatizar eso si te curras la librería, me la das y me explicas cómo
> funciona. Yo gestionaba los tipos mutables creando un objeto proxy
> automáticamente en las asignaciones de atributos de las clases
> persistentes. Inteligente, ¿eh?. Sí, es un poco pesado cuando conectas
> un grafo complejo a un objeto persistente, pero funciona bien. ¿Por qué
> sonríes? ¿Que tú has hecho qué?. Pero... Puff... eres el puto amo, tío.
> Ahora explícamelo otra vez, por favor. Me has cambiado la vida. Soy un
> gusano a tu lado. Respect.
>
> - Mierda, mi programa necesitas 3 Gigas de RAM y el servidor solo tiene
> 2 GB de RAM... Uhmmm... pensemos...
>
> - Usos interesantes de async/await que no sean asyncio tal cual. Por
> ejemplo, ¿cómo os apañais para mezclar funciones síncronas y
> asíncronas?. ¿Cómo se testea?.
>
> - Detalles de cómo funciona Python que no se hayan repetido ya mil veces
> en mil sitios, como que python no usa todos los cores... a menos que te
> lo curres. No me importaría que alguien me explicase cómo funcionan las
> diferentes "arenas" en el gestor de memoria o cómo se comunica una señal
> que salta en un hilo secundario para que la reciba el hilo principal.
> Son cosas misteriosas que nunca he investigado. Y sí, ya sé que eso es
> C, pero afectan a mis programas Python.
>
> - Memory leaks. Nunca habrá suficientes charlas sobre cómo evitarlas en
> lo posible y cómo sobrevivir cuando ocurre lo inevitable. Ahora mismo
> llevo meses pensando a ratos sobre <https://bugs.python.org/issue35930>
> y no veo una forma "buena" de solucionarlo.
>
> - Sí, no me importa que me expliques con calma esa idea local que ha
> surgido en la lista "python-ideas", que yo he descartado tras evaluarla
> cinco segundos o menos y que tú crees que es lo mejor del mundo tras
> pasarte cuatro días sin dormir dándole vueltas. Igual me convences y,
> después de todo, soy Core Developer de Python (aunque no sé muy bien por
> qué no me han echado aún).
>
> - ¿Recuerdas cuando tu rutina decorada con "@functools.lru_cache"
> fallaba de maneras misteriosas y esporádicas en entornos multihilo?. Yo
> sí, y también me acuerdo de las horas invertidas depurándolo. Espera que
> te cuento todos los bugs que se han ido solucionando en ese decorador y
> los que aún quedan. ¿Cuántas horas dices que tenemos? Haz pis primero y
> trae un bocata y una botella de agua. O un par. Una vacía.
>
> - Me dejo convencer de que debería usar los tipos abstractos ABS más a
> menudo. Que sí, que te dejo que me des la lata con eso.
>
> - ¿Te has enterado de que ya puedes usar un "continue" en el "finally"?.
> Pues sí, novedad de Python 3.8. Lloro de alegría. ¿Por qué no se podía
> usar antes? ¿Cómo lo han solucionado?. Si me lo cuentas me ahorro
> investigarlo yo.
>
> - ¿Modificas el bytecode interno de python para inyectar corutinas
> transparentes en código síncrono?. Eres un puto enfermo, pero tienes
> ideas muy interesantes. Cuéntame más.
>
> - ¿Por qué está todo dios que no mea con JSON cuando CBOR mola mucho
> más, es más compacto y más rápido?. Sí, tiene tipos autodeclarados,
> anotaciones, binario nativo sin coste. ¿Ya estás convencido? Bien. Ahora
> mira que la librería Python CBOR no permite tipos etiquetados dentro de
> tipos etiquetados. Jode, ¿verdad?. Mira el parche que les he enviado.
> Tres líneas de código. Observa la elegancia de serializar un grafo de
> objetos arbitrarios de forma simple, compacta y autodeclarada. Pickle es
> de juguete comparado con esto. Está bien, ¿eh?. ¿Qué opinas ahora de
> JSON?. Ya, lo que yo te decía. Ahora pregúntame por qué los autores de
> la librería no han incluído aún mi parche tras varios años. Sí, ya, al
> menos mi madre me quiere. Algo es algo.
>
> - ¿A tí también te parece que la librería asyncio es un engendro del
> averno apenas un paso por encima de twisted?. Ven aquí, hermano, y
> déjame que te hable de "curio" y "trio". ¿Qué no sabes qué tengo en
> contra de "asyncio"?. Verás, todo empezó cuando yo mandaba datos a un
> cliente de red y el cliente se había caído. Tras eso tres recuerdos
> vienen a mi mente: primero, ver como un proceso de 64Kbytes se
> transforma en un proceso de 16 gigabytes, lo segundo que recuerdo es ver
> como el OOM de Linux aplica mano dura y se carga el proceso que no es
> (justo el único proceso imprescindible y a prueba de fallos del sistema)
> y mi tercer recuerdo fue la luz y el calorcito de mandar "asyncio" a la
> mierda y currarme lo pequeñita funcionalidad asíncrona que necesitaba
> completamente a mano. Mas o menos 15 líneas de código. Sí, ahora uso
> "trio" cuando me dejan, pero entender cómo funciona un bucle de eventos
> async/await "a mano" es la mar de interesante y más fácil y útil que
> leerse la documentación de "asyncio" y dispararse en el pie intentando
> hacer cosas triviales. Veo que dudas. "asyncio" nunca te ha dado guerra.
> Ya... Si entiendes cómo funcionan las corutinas igual luego te preguntas
> por qué la gente hace cosas complicadas cuando se pueden hacer fáciles.
> Ya, yo tampoco entiendo al género humano.
>
> - Si me hablas de "machine learning", "deep learning", "big data" o
> "blockchain" más te vale haber escrito tú el libro que creo ese campo,
> que la prueba de concepto esté en 100% Python y que me la estés
> comentando línea a línea. Sino no creo que me puedas contar nada que no
> pueda leer yo en 5 minutos online. ¿Que eres una universidad española
> que ha hecho una librería de reconocimiento de voz cuyo código no me
> puedes enseñar y que sólo reconoce palabras en inglés?... Ya... me
> suena. No me interesa, gracias.
>
> - Perdona, pero usar NLP para analizar si los twits sobre Movistar
> tienen sentimientos positivos o negativos es el "print('hola mundo')" de
> este campo. No has inventado nada. Es mas, esa librería y el "corpus" de
> entrenamiento no los has creado tú. Veamos... vaya, veo que tú también
> lees "towardsmachinelearning" y tu código es idéntico al tutorial que
> publicaron la semana pasada. ¿Hay algo en tu presentación que me aporte
> algo que no me haya proporcionado leer el artículo original que has
> fusilado?. Yo también leo los blogs, tío.
>
> - Esa librería nueva que permite ejecutar código python en un navegador
> sin tener que bajar un intérprete en javascript de 30 megabytes tiene
> muy buena pinta, pero no me cuentes lo que puedo yo leer tranquilamente
> en su página web. Explícame cómo hace lo que hace (que mis estudios de
> compiladores e intérpretes sirvan para algo), qué cosas hay que evitar.
> Avísame de que no funciona en iOS antes de la versión 13.
>
> - Sí, ese compilador estático de código Commodore 64 que genera ARM para
> la Raspberry PI que te has currado en Python tiene muy buena pinta, pero
> no me leas el manual en voz alta. Eso ya lo hice yo cuando se anunció tu
> charla. Me interesa mucho más que me expliques cómo usas estructuras de
> datos python avanzadas para no tener que meter la traducción de los 256
> opcodes uno a uno y cómo propagas la vida del registro de estado para
> evitar hacer trabajo que vas a sobreescribir en la instrucción
> siguiente. Bien hecho. ¿Cómo gestionas las interrupciones?. ¿Qué haces
> con las direcciones de memoria que se corresponden a chips mapeados?.
> Espera, que esta tiene trampa... ¿cómo manejas los programas
> automodificables? Ah, que es un compilador estático. Es verdad, lo
> dijiste al principio. Veo que sabes de lo que hablas. Oye, ¿sabes que
> donde pones una cadena de "ifs" puedes usar un diccionario de funciones
> y llamarlas directamente?. Sí, ahí, en rutina "dispatch()". Gracias por
> enseñarme código. Es bastante elegante y me ha dado algunas ideas que
> puedo aprovechar en mi trabajo que consiste en masticar PDFs y añadirles
> una marca de agua. ¡No he perdido el tiempo viniendo hoy!.
>
> --
> Jesús Cea Avión                         _/_/      _/_/_/        _/_/_/
> jcea at jcea.es - http://www.jcea.es/     _/_/    _/_/  _/_/    _/_/  _/_/
> Twitter: @jcea                        _/_/    _/_/          _/_/_/_/_/
> jabber / xmpp:jcea at jabber.org  _/_/  _/_/    _/_/          _/_/  _/_/
> "Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
> "My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
> "El amor es poner tu felicidad en la felicidad de otro" - Leibniz
>
> _______________________________________________
> Asociación Python España: http://www.es.python.org/
> Python Madrid: http://www.python-madrid.es/
> Madrid mailing list
> Madrid at lists.es.python.org
> https://lists.es.python.org/listinfo/madrid
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.es.python.org/pipermail/madrid/attachments/20191129/73b11c1a/attachment-0001.htm>


More information about the Madrid mailing list