Avisando de los comentarios

Hay un feature que este motor de blog no tiene, y es la de avisar a los que escribieron comentarios, cuando hay un comentario nuevo.

Sé que no lo tiene porque lo quería. Me parece piola que (desde el lado del lector) si yo comento en el blog de una persona, y luego hay otros comentarios en el mismo post, yo me entere y pueda ir a leerlos.

Bueno... como no estaba, lo hice yo, :). Básicamente hice un programita en Python que cada tanto se fija si hay comentarios nuevos y les avisa a aquellas personas que comentaron antes en el mismo post. Obviamente, sólo si dejaron su dirección de mail, y en función de eso ahora aviso que el correo electrónico que dejan al hacer el comentario es justamente para recibir estas notificaciones.

¡Espero que sea útil!

Comentarios Imprimir

Un bug! Un bug!

Varias veces hablé acá de los bugs, pequeños errores en los programas que hacen que no funcionen como originalmente estaban planeado. Una definición más formal sería algo como Un defecto de software (computer bug en inglés), es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador o computadora (software) [-].

El término bug o bicho viene de cuando se encontró una falla en la ejecución de un programa en una computadora debido a que una polilla se había metido en el medio de un relé de la computadora (estamos hablando del Mark II, construido en 1944... estas máquinas eran bien distintas de lo que son ahora).

El motivo de este post es que hoy me encontré con esta imagen:

El bicho original

Es un recorte de la imagen original, que como dice acá es el primer bug de una computadora, que se encontró atrapada en el relé #70 del panel F de la Mark II mientras se estaba probando en la Universidad de Harvard en Septiembre de 1945.

¡No sabía que se tenía un registro del bicho este!

Comentarios Imprimir

Fábrica de fallas, segunda edición

Llegué a La Tribu pasadas las dos de la tarde, un rato antes de que arranque, para armar el stand de PyAr. Los amigos de Ubuntu-ar ya habían llegado temprano, y como nuestra bandera la tenían ellos (la llevaron y trajeron a Conurbania), ya nos habían hecho el favor de armarnos el stand.

Estuve un rato pegando vueltas, saludando gente, y rápidamente se hicieron las tres, donde tuvo arranque formal el evento.

La primer charla, súper interesante, era sobre Autonomía, aplicada en los distintos campos, mostrando que la misma puede no ser completa porque en muchos casos es saludable las interrelaciones.

La charla fue dada por Leito Monk (que habló principalmente de cooperativismo y software libre), Javier (energías renovables y sistemas de intercambio local), y Nico Echaniz (ecoaldeas). en qué se consume, qué cosas se pueden hacer para cambiar la tendencia de consumir preferentemente combustibles fósiles.

Leito, Javier y Nico

Leito arrancó explicando qué era el software libre, explicando las cuatro características, hablando de trabajar de forma colaborativa, de la descentralización, etc. Javi explicó lo que era la energía, las fuentes de energía del planeta, en qué se consume, qué cosas se pueden hacer para cambiar la tendencia de consumir mayoritariamente combustibles fósiles. Nico arrancó con el tema de las ecoaldeas (asentamientos humanos que intentan vivir en armonía con la naturaleza de manera sustentable y generando una micro sociedad "justa"), de consumir energías que se generan colectivamente, etc.

Luego de la charla bajé a la planta baja, donde me estaban esperando Moni y Felipe que habían llegado unos minutos antes. Estuvimos paseando un poco por el lugar, charlando, y tomando una cervecita.

De repente, estoy mirando una pared en la que se había hecho un mural ese mismo día, lo miro mejor, y veo que tenía código Python. Sí, sí, como lo leen: un mural en una pared de La Tribu, con un barco flotando colgado de un globo, y el mural está todo escrito con código de Python. Se lo muestro a Diego Mascialino, y él tampoco sabía nada... empezamos a averiguar, y resulta que el artista del mural encontró el tutorial de Python que estábamos dando en el stand de PyAr, y le pareció tan copado que lo quiso plasmar en la pared.

Mural escrito con Python

Nos quedamos un rato más con Moni, y luego partimos para casa temprano, que luego a la noche había asado en la casa de mi hermana.

El domingo, estuvo todo más tranqui. Yo fui también temprano, y estuve paseando, charlando con gente, contando cosas de Python a la gente que preguntaba, etc.

El evento en general estuvo buenísimo, porque no es un evento de software libre exclusivamente como tantos a los que vamos, sino que mezcla un montón de personas de background distintos y que luchan por objetivos similares en campo de acción totalmente separados.

Todo esto matizado con radio en vivo con muchos invitados, tortas gratis para la gente, arte de todo tipo, un bar trabajando a full, etc, etc. Mucha cultura, mucha gente copada, muchas cosas para ver y aprender.

Radio en vivo

¡Se los recomiendo para el año que viene!

Comentarios Imprimir

Primer mes de Felipe

Les dejo un video de fotos compaginadas del primer mes de Feli (acá tienen una versión con más calidad que pueden descargar fácil).

Felipe

También pueden ver todas las fotos del mes.

Comentarios Imprimir

El índice de la CDPedia

La CDPedia tiene mucha información. En su versión CD, guarda como 85 mil artículos de la wikipedia en español, en su versión de DVD los guarda todos. El acceso a cada uno está armado con una estructura diseñada a tal fin, para que sea rápida y bonita.

El problema con tanta información es la búsqueda. Hoy por hoy solamente estamos buscando en los títulos de las páginas, y así y todo es un problema... porque la mayoría de los esquemas de búsquedas están armados por palabras completas (coincidencia exacta), o por parte de la palabra, pero siempre comenzando de esa manera (o sea, buscar por "cam", encuentra "camino", pero no "videocámara"). Creo firmemente en que la búsqueda debería permitir coincidencias parciales en cualquier parte de la palabra.

Yo, en sus orígenes, armé un índice rápido y simple, porque la idea no era trabarnos ahí. Varias personas exploraron distintas alternativas, pero por h o por b, ninguna sirvió. Mientras tanto, yo fui emprolijando un poquito el índice rápido y tonto... ahora es sencillo, y aunque no trivial, hace todo lo que tiene que hacer sin consumir demasiado ni tardar demasiado.

Pero es un índice hecho en casa, y como yo no sé del tema, seguro que hay muchas soluciones por ahí que son mejores. Entonces decidí bajar la barrera de entrada para que se propongan otros índices.

Separé lo que es el uso del índice, del "motor de indexado" propiamente dicho, y a este motor le agregué casos de prueba. Entonces, cualquier persona que quiera jugar con índices, sólo necesita copiar de mi motor de indexado lo que es la API, y corriendo los casos de prueba puede saber si cumple o no con lo necesario.

La API no es complicada, se considera que las palabras (cadenas de texto) son claves, y los valores son tuplas en los que se guarda info arbitraria, y básicamente se necesita:

  • crear el índice [create()] (lo cual no tiene que ser demasiado complejo, ya que se hace una sola vez)

  • obtener todos los items guardados [items()]

  • obtener todos los valores [values()]

  • sacar un valor al azar [random()]

  • nos dice si una clave está en el índice [__contains__()]

  • nos busca varias palabras, viendo que estén todas ellas, pero buscando exactamente cada palabra [search()]

  • nos busca varias palabras, también haciendo un AND, pero buscando parcialmente cada una [partial_search()]

(este último punto es en el que fallan la mayoría de los índices que andan dando vuelta por ahí)

Más allá de esos requisitos "duros", la idea en general es que el índice tarde poco tiempo en buscar, y que consuma no demasiada memoria (por ejemplo: 100MB de RAM es bastante, pero aceptable...). Y otro detalle importante: tiene que ser multiplataforma... eso significa que la solución que propongan tiene que correr en Linux, Mac y Windows (esto es algo fácil de lograr si la solución es Python pura, pero también se aceptaría algo con binarios precompilados que no ocupen demasiado).

Un disclaimer: realmente no estoy buscando que me cuenten teoría de índices, que me apunten a tal o cual solución mágica, o que me traten de explicar por qué tal o cual cosa es mala idea... el objetivo acá es encontrar un índice piola (o escribirlo)... si se sienten a la altura de las circunstancias, ¡son bienvenidos a probarlo!

Desde ya, muchas gracias, :)

Comentarios Imprimir