Buscame quién sos vos

No es la primera vez que les vengo a charlar sobre el programa Decime Quién Sos Vos, un ciclo de entrevistas de casi 180 episodios de la década pasada, comandado por Eduardo Aliverti.

Ya les había contado que con Diego queríamos rescatar el contenido y que habíamos montado una página estática con todo eso.

Bueno, en las últimas semanas le estuve dando amor y le armé un buscador a ese sitio homenaje.

Ahora no es más una página estática, sino que tiene una entrada de texto donde se puede escribir términos a buscar y un selector para indicar si la búsqueda debería ser en todos los programas o en alguno en particular.

No es una luz de rápido, porque es MUCHO contenido, pero en menos de un segundo algo devuelve.

Hasta acá es igual al buscador que armé para Algo Prestado, pero como en el caso de Decime Quién Sos Vos los episodios apuntan a los mp3s reales, pude ir un paso más allá.

En este caso, todos los resultados de la búsqueda tienen un iconito a la izquierda. Haciendo click ahí saltan directamente a escuchar el mp3 de la entrevista en el momento exacto donde se está diciendo la frase que fue encontrada.

Ejemplo de resultado con el ícono resaltado aparte

¿No es maravilloso?

Que lo disfruten :).

Comentarios Imprimir

Paseo un poco al sur

Se nos mezclaron las vacaciones de verano con la idea de pasar unos días en casa de Diana y Gustavo en Piedra del Águila y de paso volver con mi mamá que había ido en micro en Diciembre.

Además, les chiques tenían ganas de conocer El Bolsón. Pero ir de un saque hasta allá era mucho viaje, así que armé un viaje por etapas.

Fuimos hasta Monte Hermoso, nos quedamos un par de días ahí. Luego a Las Grutas, otro par de días ahí. Cruzamos el país latitudinalmente y llegamos al Bolsón, ahí ya nos quedamos tres días enteros. Luego a Piedra del Águila, otros tres días y finalmente el viaje de vuelta (con parada intermedia).

En la playita del Lago Puelo, el Cerro Anexo de fondoLes chiques aprendiendo kayak con el tío Gustavo

Piedra ya conocíamos, obviamente. La vimos más grande, y el lago fresco y hermoso de siempre.

El Bolsón nos gustó mucho, aunque realmente no paramos ahí, sino en Lago Puelo, un poco al sur, apenas entrando en Chubut. Pero paseamos por toda esa zona, subimos al cerro Piltriquitrón, nos metimos al río Azul. Hermoso.

Remojándonos en el Rio AzulFelu y Male en el Bosque Tallado del Cerro Piltriquitrón

Las Grutas no nos gustaron tanto. El mar estaba muy lleno de algas en el lado de Las Grutas en sí, y cuando fuimos a Punta Perdices, del lado de San Antonio Este el mar estaba más lindo pero es playa de piedras, que no tiene tanta onda :/

Sí nos gustó mucho Monte Hermoso, el mar y las playas alucinantes, no tuvimos tanto viento, la ciudad linda, el centro copado... y no nos picó ningún agua viva :D

Inmensas las playas de Monte HermosoMonte Hermoso tiene ese estilo que me encanta

Nos gustó también lo de visitar varios lugares. Lo que corregiría a futuro es tener tantas paradas en un viaje corto.

Nosotros siempre tratamos de alquilar departamentitos/cabañas/apart hotel, etc... o sea, tener heladera, cocina, y poder almorzar/cenar en casa la mayoría de las veces (sino terminás siempre en restaurantes o comiendo chatarra). Y no escala llegar e irse sólo para estar dos días, con lo que implica llenar/vaciar la heladera, bajar/acomodar/subir la ropa, etc.

Atardecer en Monte Hermoso

Se va aprendiendo :)

Comentarios Imprimir

PyCon Bolivia 2023

Hace algunas semanas me contactaron porque me invitaban a participar de dicho evento dando una de las charlas principales (lo que se dice ser "keynote").

Acepté complacido, y les pasé varias opciones de charlas (de mi repertorio), eligieron "Procesamiento Paralelo de Vectores".

Tecito de coca en el desayuno

No es la primera vez que daba esta charla, y aprendí de las veces anteriores que la gente se perdía un poco de entender el algoritmo o técnica atrás de cada forma de cálculo paralelo si lo explicaba al mismo tiempo que mostraba el código, así que para esta oportunidad le agregué un montón de imágenes explicando bien lo que sucedía en cada caso antes de ir, justamente, al código.

Entonces, ahora se puede pasar mucho más rápido por las distintas funciones, casi desestimándolas, a menos que haya una pregunta puntual. Y por supuesto ese código ahí queda de referencia por si alguien quiere bajarse la presentación y mirarla en detalle, pero no es tan importante a la hora de "presentar" la charla.

Me tocó darla en el primer slot del primer día. No había llegado toda la gente todavía, pero tuve igual buena recepción. Fue un poco "hardcore" para darla tan temprano, pero estuvo bien... en otras palabras, un poco que les volé la cabeza, pero con los nuevos slides de imágenes me parece que se entendió bastante.

Mucha comida en la calle, me dijeron que ni se me ocurraHabía de todo

El evento en sí también me gustó mucho. Habían unas cien sillas y estuvo lleno en varios momentos (tengamos en cuenta que en simultáneo había unos talleres en otro piso, aunque no todo el tiempo, así que la gente iba y venía). Fue un regreso a las PyCons más personales, no tan llenas de gente y anónimas.

A nivel ciudad, la conferencia fue en La Paz, localidad conocida por su altura sobre el nivel del mar (3625 metros) y por su efecto sobre algunas esferas, aunque no sólo sobre las esferas, sino también en los organismos vivos. Me habían prevenido un par de veces, pero por suerte no me tocó ni dolor de cabeza ni sentirme mal en general, y no tuve que tomar ningún medicamento, aunque sí me clavé un tecito de coca en cada desayuno :D. El único efecto que sentí por la atmósfera con menos oxígeno fue alguna "falta de aire": parecido a cómo quedás luego de subir tres pisos por escalera pero habiendo subido sólo uno.

Mucho contraste entre los grandes edificios y los barrios más humildes sobre la montañaDe noche

Volviendo a la ciudad en sí, es linda pero la encontré un poco "descuidada". No sucia en el sentido de mugre en la calle, pero si con todas las paredes pintarrajeadas, muchos vidrios sucios por todos lados, un poco caida a menos. Tengamos en cuenta que es la capital administrativa y sede de gobierno de Bolivia: es el centro político, financiero, social, académico y cultural más importante del país.

Lo que estaba impecable (por nuevito) era el teleférico, una red de "cabinitas voladoras" que te llevan para todos lados y vendría a reemplazar funcionalmente al subte, y al que construyeron durante la presidencia de Evo Morales.

Creo que lo que menos me gustó de la ciudad fue la "movida navideña", no sólo todos los negocios lookeados, o la gente caminando por la calle con gorrito de papanuel, sino que incluso el sábado hubo un megadesfile al ladito de donde era la conferencia.

Ese desfile me frustró uno de los dos momentos de paseo que tenía previsto. El otro era el jueves que llegue a La Paz, día que tampoco pude pasear demasiado porque llovió un montón; apenas salir a almorzar, cenar, y tomarme un café a la tarde.

En una de las estaciones del teleféricoUna feria "navideña" que está todo Diciembre a full

Pero bueno, quedará para un futuro pasear más. Me llevo buenas impresiones de La Paz, primer ciudad de Bolivia que conozco. Volveré.

Comentarios Imprimir

Sirviendo media en casa

Nos compramos una tele para el living. Wee!

Pero no todas son rosas. Boo!

El problema

Históricamente tuvimos una sola tele "central" en la casa, y en su momento resolví el ver pelis, escuchar música o ver fotos agregando un disco externo a la tele, enchufado por USB. Al disco en sí lo enganché con velcro en la parte de atrás de la tele y ni se notaba. Cada tanto lo sacaba, lo enchufaba en la compu, y actualizaba el contenido. Cuando ese disco se llenó (1 TB) compré otro (3 TB), y la tele pasó a tener dos discos enchufados.

Con la segunda tele se me presentó el problema de cómo alimentarle el contenido. No voy a comprar dos discos más e ir actualizando los cuatro; decidí buscar una opción superadora.

La búsqueda

Viendo cómo podía servir contenido a las teles encontré que hay algo que se llama DLNA (por Digital Living Network Alliance), una especie de protocolo viejo (tiene 30 años) con el objetivo que consumidores y servidores de media puedan verse e intercambiar información.

Teóricamente sirve para video, música y fotos, y debería cumplir todo lo que necesito. Un espectáculo. Obviamente las teles son clientes, ¿cómo pongo a servir DLNA?

Enseguida encontré un proyecto que se llama MiniDLNA. Su instalación es trivial y la configuración a priori sencilla, mediante un archivo de texto a la vieja usanza unixera.

Lo puse a funcionar, y me choqué con que NO hacía lo que debía. Específicamente: no me encontraba media en más de un directorio (la configuración explícitamente indica que esto debería suceder, muestra cómo anotar dos paths, pero nada), y además no me detectaba cambios en esos (ese) directorio (de nuevo, "debería" según la documentación). No encontré cómo debuguearlo, así que dejé de intentarlo y volví a la búsqueda.

Me crucé con Rygel, pero viendo como instalarlo y hacerlo andar encontré que recomendaban mucho Jellyfin.

Decidí probar Jellyfin entonces, que tenía una pinta bárbara. Su configuración y administración son via web (fácil de hacerlo de forma remota aunque local a la casa) y solito se integraba con systemctl para que levante sólo en reboots y eso. Jugando un poco encontré que me ponía todos los títulos en castellano, lo cual me parece espantoso. O sea, yo quiero ver (por ejemplo) "Groundhog Day", no "El día de la marmota" y mucho menos "Hechizo del tiempo".

¡Tampoco quiero el nombre siempre en inglés! Si la película realmente se llama "Nueve Reinas" o "La Vie d'Adèle" quiero ver esos nombres y no "Nine Queens" o "Blue Is the Warmest Color".

Me puse a ver cómo podía hacer para configurar eso, sin encontrar mucho al respecto... pero sí que mencionaban que Kodi lo permitía.

A ver qué onda Kodi, entonces. Tiene todo lo que es configuración y administración via su propia interfaz, porque Kodi está más pensado para meterlo en una minicompu/raspi enchufada por HDMI a la tele y manejar todo de ahí, es más una forma de hacer "un reproductor de media que se enchufa y usa" y no tanto "un servidor de media para que la tele lo consuma directamente".

Pero, habiendo dicho eso, también ofrece el servicio de uPNP/DLNA, que era lo que buscaba. Lo levanté, funciona ok, fui a la tele, y ahí no tenía thumbnails; buscando, veo que DLNA nunca manda thumbnails, y vi que varios recomiendan salir de ahí en lo posible por una opción que directamente comparta los archivos.

Como el fuerte de DLNA es transcodear los videos para cada cliente y yo puntualmente NO necesito eso, con tener los archivos compartidos debería alcanzar. Recomiendan Samba si en tu red tenés Windows, y si no NFS que funca mejor. Peeeeero encontré que las LG WebOS no soportan ni NFS ni Samba; por las dudas probé NFS y cierto, no. Bú, bajón.

Otra tecnología que en algún momento de este viaje me crucé es Plex, que es muy lindo y parece tener de todo pero pivota en su funcionamiento por un servicio privado remoto, y me dio un poco de cosa y no lo terminé probando.

Pero luego de charlar bastante con Gilgamezh sobre todo este tema me decidí a probarlo. Se instala y configura medianamente fácil, tiene clientes para las teles... pero la usabilidad es espantosa: estoy todo el tiempo "esquivando" contenido online que me ofrece (no quiero nada de eso, ¡quiero consumir contenido local mio!).

Piola, pero demasiado intrusivo

La ¿solución?

Por la misma charla terminé volviendo a Jellyfin.

Lo instalé, lo empecé a usar. Como decía arriba, funciona pero está el problema de los títulos en castellano. Pero Jellyfin tiene una API, entonces debería ser posible corregir la base de datos que Jellyfin arma automáticamente para que tenga los nombres originales. Lo bueno de Jellyfin es que también tiene un cliente para la tele... para la tele nueva, no para la vieja... pero Jellyfin también sirve DLNA, entonces en la tele vieja lo uso así, y en la nueva con el cliente bonito.

A ponerme a jugar con la API, entonces.

No tuve buena experiencia, la API es muy muy grande y no tiene sentido práctico. Por ejemplo, item como nombre de objeto es espantoso porque no tiene semántica, o en en update_item el id es mandatorio en el path y también en el cuerpo a enviar. Otro botón de muestra es el endpoint ItemUpdate, que tiene 151 parámetros a enviar (¡los conté!) ... ¡¡ciento cincuenta y uno!! ¿Están ordenados de forma alfabética? No mi ciela. ¿Te muestra al principio los que son mandatorios? Keep dreaming. Y así.

También el server tiene muy mal manejo de error par servir la API. Por ejemplo cuando algo no esta enviado correctamente (logré obtener los datos de una película y estoy tratando de cambiar el título) contesta un 400 (bien) pero sin ninguna explicación de cual es el problema (sólo un "Error processing request" que no aporta nada). Lo bueno es que el server tiene logs, pero esto es lo que aparece para ese 400:

[2023-12-12 10:16:23.299 -03:00] [ERR] Error processing request. URL "POST" "/Items/664d7ffdf0922c7eee0ea4f611481ae4".
System.ArgumentNullException: Value cannot be null. (Parameter 'source')

Como ven no ayuda nada. Habla de un parámetro source pero el endpoint que estoy usando no lo tiene. Y le estoy pasando contenido para todos los parámetros que no pueden ser null. En fin.

Hice un par de preguntas en el foro de Jellyfin y me terminaron recomendando que le haga ingeniería inversa a la interfaz de Jellyfin para ver como ella misma usa la API. Not fun.

Por otro lado, hay un par de bibliotecas para usar la API! Pero terminé usándola a mano porque ni siquiera me pude conectar con esas bibliotecas (quizás porque la forma de conectarse y autenticarse estuvo cambiando mucho).

Y bueno. Por ahora me quedo con Jellyfin que es lo que mejor funciona para mi caso puntual de todo lo que probé. Veremos con el tiempo si lo puedo mejorar.

Jellyfin: Lo mejor hasta ahora, pero...
Comentarios Imprimir

Buscando en Algo Prestado

Hace mucho que escucho un podcast que se llama Algo Prestado.

Conducido principalmente por Tamara Tenenbaum y con cuatro invitades que van rotando (Malena Rey, Eugenia (Buji) Mariluz, Pablo Pryluka y Gino Cingolani), charlan sobre distintos temas sobre los ejes "algo nuevo", "algo viejo", "algo prestado", y un cuarto tema que se van dejando de invitade a invitade (antes de esta temporada se dejaban un color).

Está desde hace un par de años (yo no lo escuché desde el principio, pero hace más de un año que no me pierdo ninguno) y en cada emisión se tocan cuatro temas, con lo que acumularon un montón. La producción no brilla por su coordinación y ya pasó un par de veces que trajeron algo medio relacionado con otra cosa que ya se habló, y siempre está la idea/queja de que tendrían que tener un algo compartido donde anotaran los contenidos tratados para elles mismes buscar.

El martes pasado estaba escuchando un episodio de fines de septiembre (estoy un par de semanas atrasado) y volvió a aparecer esta necesidad, y me dejó pensando... ¿cómo se podría hacer automático? ¿podría ayudar yo? ¿qué se puede construir que sea divertido?

Y me terminé proponiendo armar un buscador del podcast.

Pensé en tener un servicio online donde se pueda buscar por lo charlado; obviamente tiene que ser búsquedas de todos los textos, que no existen, pero están los audios. Con esa premisa me embarqué en un viaje copado que me llevó aproximadamente unas 16 horas de laburDIVERSIÓN total distribuidas en estos días.

Bajé el RSS con la lista de todos los episodios (título, descripción, link al mp3, etc.). Preprocesé eso y bajé todos los mp3s. Estuve un rato largo viendo cómo convertir eso en texto, encontré que Vosk lo hace lo suficientemente bien y es muy sencillo instalarlo y usarlo. La búsqueda en texto completo me la resolvió la extensión FTS5 de SQLite, aunque esto me llevó más tiempo aprender cómo usar y explotar su poder y limitaciones (especialmente cuando encontré que me traía falsos positivos, originados en el tokenizer porter que estaba usando y saqué). Así que armé un par de scripts para meter todos los textos y metadata en una base de datos SQLite y puse a servir eso con un pequeñisimo programa en Flask; el HTML y CSS en un 80% se los pedí a Chat GPT :D.

Sí, una nerdeada total, ¿no es hermoso?. Este es el resultado, ideas y sugerencias son bienvenidas :)

Comentarios Imprimir