Hoy es de esos posts de desahogo, hace un par de semanas comenzamos un proyecto nuevo en la oficina, algo "nuevo", luego de un tiempo llegamos al punto en qué teníamos que hacer lectura asincrónica de la salida de otro proceso, bueno, debido a que me encanta la programación asincrónica (o sea usando threads), me ofrecí para llevarlo acabo. El primer día hice todas las pruebas respectivas y el código con "crosscuting concerns", pero luego de un par de pruebas, pufff... no funcionaba como se "esperaba". Pasé alrededor de tres días buscando toda la info posible, probando todo lo existente alrededor, preguntando, y porqué no, aprendiendo que podía tener malo. Luego de tres días me entró la curiosidad y lo probé con otro proceso, adivinen que... desde el comienzo estaba todo bien, el culpable era el primer proceso que "decidió" que era mejor usar una buffered output, bien, luego pasé otro día conversando por IRC con los creadores de este primer proceso buscando la forma de sobrellevar el problema y para variar (algo común el mundo OpenSource), no tenian idea que podía hacer para sobrellevarlo. Bien, por último se me ocurrió probar a otras implementaciones similares buscando como pudieron ellos sobrellevarlo, al final la triste verdad, ellos tampoco pudieron resolver tal situación. Claro, después de varios días llego a la sopresa que al final después de varias líneas de código se pudo resolver.
Esto me lleva a un nuevo Fact: Si estas seguro que esta bien lo que haces, pruébalo y héchale la culpa a la otra implementación :P