Recent Comments On Blog

rss

November 2006

Mentirosa

Hay un juego de mesa que durante algún tiempo, el grupo de amigos que nos juntabamos a beber los sábados por la noche, solíamos jugar con gozo y apasionamiento: Mentirosa. El juego básicamente es una refinación, de origen cubana al parecer, del juego del cubilete.

Ya se pueden imaginar a un grupo de 3 a 7 sujetos, completamente antisociales, bebiendo cerveza, en la casa de los papás de alguno, agitando los dados, haciendo alaraca muertos de la risa.

Sin embargo mi objetivo en este texto es describir el juego: Todo comienza con el convite sentado en círculo sobre la mesa, uno de ellos toma los dados y lanza una jugada con la peculiaridad que no levanta el recipiente (digamos esto por simplificación, aunque puede no ser así), el resultado de los dados entonces no es visto por nadie, excepto, tal vez, por el tirador, quien puede mirarlos muy discretamente, para que nadie más lo haga. Posteriormente el tirador le ofrece, para el conocimiento público, pero dirigido al que le sigue en turno un resultado, cualquiera que este sea, ya sea inventado por el tirador, o que sea el real, el que existe oculto debajo del vaso.

Quien recibe la oferta tiene dos opciones: aceptar la oferta o rechazarla. Si la rechaza destapa el vaso a la vista de todos y expone el valor real de los dados. En este caso si el valor real de los datos es igual o mayor a lo ofertado por el tirador, quien rechazó la oferta pierde; en caso contrario, quien pierde es el tirador. Por el contrario, si acepta la oferta el juego continúa, con la condición de que el nuevo tirador (quien aceptó la oferta del anterior tirador) venda un valor mayor al aceptado por el tirador anterior.

Esbozemos un ejemplo: Juan tira los dados y atisba que sacó un par de nueves, entonces anuncia "Tengo dos pares" (note que está mintiendo). Pedro, quien le sigue en turno, decide comprarle los dos pares, sin embargo está obligado a venderle algo más caro a Hugo. Hace su tiro Pedro y atisba. Le ofrece a Hugo anunciando "Tengo tercia". Hugo decide no creerle. Si no estuviera la tercia y en su lugar hubiera un tiro de menor denominación, como un o dos pares, Pedro perdería. Sin embargo al levantar Hugo el vaso descubre que había una Full, que es obviamente de mayor denominación que la tercia, entonces pierde Hugo automáticamente.

En pocas palabras, el juego es una constante ley de la oferta y la demanda, aceptando que si yo compro a un precio es porque estoy consciente que lo tendré que vender más caro más delante.

Lo interesante de analizar en este juego son las distintas realidades en las que se mueven los jugadores: Una es la realidad cruda, que existe y es palpable, pero oculta bajo el vaso: el valor de los dados; otra realidad es la que ocurre en la mente de participante, tratando de averiguar que está pasando en la mente del contricante, el vendedor vecino, para ver si nos quiere engañar, o nos está telegrafeando una jugada agresiva contra otro participante, o simplemente quiere pasar desapercibido en esta vuelta. Finalmente tenemos una tercera realidad: la colectiva, la presión que ejerce el grupo para que el individuo tome una determinación en base a las conveniencias grupales del momento.

Puede haber una tercia, el individuo cree que es muy comprable aceptar la tercía y un as para vender el full mas delante, pero el grupo lo presiona para que exhiba al tirador como un mentiroso por sus jugadas previas tomadas con disgusto por el grupo. Tres realidades que al final sólamente la de los dados es la que cuenta. Sin embargo las otras realidades son las que hacen divertido el juego.

Matemáticamente el juego puede ser analizado como un proceso de decisión de Markov parcialmente observable, y posiblemente ganemos los juegos y las pollas que se juntan, pero como esto no es posible, tenemos que fiarnos en nuestra realidad (intiución) y tratar de ser conscientes de la realidad colectiva.

Sicológicamente el hecho de que creamos que rechazemos una oferta mentirosa y la compremos gustosos, tiene más que ver con las realidades inexistentes, que tienen cabida en el grupo y en el individuo, que muy posiblemente estas realidades escapen de toda lógica y de toda realidad dura, pero mantengamos una ferrea fe en ello, tanto que sostenemos la apuesta. Deformamos la percepción de los hechos para ajustarlos a nuestra realidad que estará en confrontación constante con la realidad colectiva y tomaremos una decisión...

Intimidad

En últimas fechas he sabido de gente que, de manera insospechada, conoce y frecuenta este espacio. Y debo admitirlo: lo he sentido bastante invasivo. ¿Ya no se puede tener intimidad en la Internet? A lo que le temo es abandonar mi honestidad por vergüenza ante mis lectores. Sin duda habrán notado que mis últimas entradas han sido más bien de corte técnico que lo usualmente humanístico-personal. Tengo que proponerme ser descarado, morrudo, desvergonzado, ofender a quien se deje, al fin y algo para nadie es obligada su lectura.

Ayer vi Babel. Lo malo de las películas de las que mucha gente habla, es que generan expectación, y la expectación impone pretenciones. Finalmente la película no me llenó, a excepción de la historia de Chieko me pareció fabulosa en sí misma: Si uno, que tiene el don de la voz y las palabras, no puede comunicarse y expresar sus emociones correctamente con el mundo, ¡imagínense los sordo-mudos!. Las otras dos historias me parecen "Las consecuencias de mi estupidez".

Hoy fui con Fausto a Cavazos a comer y luego a la Cola de Caballo. Rematamos la tarde un Sierra Madre con una cerveza Frayle. Estuvo diferente pero medio gastalón.

¡Albricias! Pude hacer una compilación cruzada de linux a win32 utilizando MinGW de Fox-1.6 Toolkit y ahorita está compilándose el PostgreSQL-8.1. ¡Qué bonito es lo bonito!

PD: Ramel: arregla tu entrada anterior de tu blog, ha fastidiado la estructura de presentación del planeta glib.

Como dice en Las Mil y Una Noches

¡La gloria de los humanos es la hija inmortal de muchas noches pasadas sin dormir!
Pero hoy tengo mucho sueño y la gloria no me interesa por el momento...

Por cierto, hoy vi La science des rêves. Buena comedia romántica bittersweet.

PostgreSQL 8.1 en Sarge

Problema: Instalar PostgreSQL 8.1 en Sarge. Actualmente Sarge sólo provee la versión 7.4. Compilar no es una opción, todo debe ser a través de paquetes Debian.

Solución: Utilizar el repositorio Backports, quienes proveen de versiones recientes de paquetes compilados para Sarge.

$ cat /etc/apt/sources.list
# Stable
deb http://nisamox.fciencias.unam.mx/debian/ stable main non-free contrib

# Security
deb http://security.debian.org/ stable/updates main non-free contrib

# Backports
deb http://www.backports.org/debian sarge-backports main contrib non-free

$ apt-get install -t sarge-backports postgresql-8.1 postgresql-client-8.1 postgresql-contrib-8.1 libpq-dev
Problema: ¿Cómo activar la recolección de estadísticas?

Solución: Activar en el archivo /etc/postgresql/8.1/main/postgresql.conf la variable stats_start_collector (on), y reiniciar el servicio.

Problema: ¿Cómo manejar a varios usuarios de la base de datos utilizando ident como mecanismo de autentiación local?

Solución: Utilizando un ident map. Recuerda que el nombre del mapa va después de la palabra reservada ident en el archivo de /etc/postgresql/8.1/main/pg_hba.conf. La configuración del mapa, por defecto está en /etc/postgresql/8.1/main/pg_ident.conf.

Problema: ¿Cómo cambiar la contraseña de un usuario de la base de datos?

Solución: Entrar al template1 como postgres y ejecutar el comando

template1=# alter user usuario with encrypted password 'contraseña';

8 horas en 115 líneas de código en C++

Vino Chuy. Ayer nos juntamos. Eso siempre significa peda. Me levanté muy crudo. Maldita última cerveza Frayle del Sierra Madre. Esa fue la que me puso pedo.

Antier en la noche quise plasmar en código mi idea para los catálogos de SiCaPoP y me di cuenta de mi nula experiencia con plantillas (template). Sólo pude obtener quejas del compilador sobre mi sintaxis. Por lo que hoy me senté a escribir una pequeña prueba de concepto. Tardé todo el día obtener algo en limpio y aquí está para que se diviertan entendiéndolo.

// -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- #include <map>
#include <string>
#include <iostream> /// Interface
template<class DTO, class DAO>
                class ICatalog
{
public:
        virtual void Load () = 0;      
        virtual void Unload () = 0;            
        virtual void Reload () = 0;
        virtual void setDAO (DAO& dao) = 0;
        virtual DTO& operator[] (std::string key) = 0;
        typedef typename std::map<std::string, DTO>::iterator iterator;
        virtual iterator begin () = 0;
        virtual iterator end () = 0;
};

/// Class which implement the interface
// This class is a template and a map decorator :)
template<class DTO, class DAO>
                class Catalog : public ICatalog<DTO, DAO>
{
public:
        Catalog ();
        virtual void Load ();
        virtual void Unload ();
        virtual void Reload ();
        virtual void setDAO (DAO& dao);

        // This is very cool
        typedef typename ICatalog<DTO, DAO>::iterator iterator;
        virtual DTO& operator[] (std::string key);
        virtual iterator begin () { return catalog.begin (); }
        virtual iterator end ()   { return catalog.end ();   }
        virtual ~Catalog ();
       
private:
        std::map<std::string, DTO> catalog;
        DAO dao;
};                             

template<class DTO, class DAO>
                Catalog<DTO, DAO>::Catalog ()
{
        std::cout << "Constructor" << std::endl;
} template<class DTO, class DAO>
                void Catalog<DTO, DAO>::Load ()
{
        std::cout << "Load" << std::endl;
        catalog["m1"] = 1;
        catalog["m2"] = 2;
} template<class DTO, class DAO>
                void Catalog<DTO, DAO>::Unload ()
{
        std::cout << "Unload" << std::endl;
} template<class DTO, class DAO>
                void Catalog<DTO, DAO>::Reload ()
{
        std::cout << "Reload" << std::endl;
} template<class DTO, class DAO>
                void Catalog<DTO, DAO>::setDAO (DAO& _dao)
{
        dao = _dao;
        std::cout << "setDAO = " << dao << std::endl;
} template<class DTO, class DAO>
                DTO& Catalog<DTO, DAO>::operator[] (std::string key)
{
        return catalog[key];
} template<class DTO, class DAO>
                Catalog<DTO, DAO>::~Catalog ()
{
        std::cout << "Destructor" << std::endl;
} // Simplifying the declarations
typedef Catalog<int, std::string> IntegerCatalog;

/// Factory of objects
class CatalogFactory {
        private:
        IntegerCatalog intcat;

        public:
        IntegerCatalog& getInteger () { return intcat; }
};


// Always there is a main
int main (int argc, char **argv)
{
        CatalogFactory factory;
        std::string dao = "testing string";

        factory.getInteger ().setDAO (dao);
        factory.getInteger ().Load ();

        for (IntegerCatalog::iterator iter = factory.getInteger ().begin ();
             iter != factory.getInteger ().end ();
             iter++) {
                std::string key = (*iter).first;
                int value = (*iter).second;
                std::cout << key << " = " << value << std::endl;
        }
        return 0;
}
 

Observaciones pendientes

¿Recuerdan a Ross Perot? Por aquellos ayeres de 1996, yo estaba en mi primer año de carrera en el ITC y la elección para presidente de los Estados Unidos estaba en su apogeo. Los candidatos eran: Bill Clinton por parte de los demócratas, Bob Dole de los republicanos y un tercero independiente: Ross Perot.

Los medios de comunicación mexicanos seguían muy de cerca a este candidato independiente ya que abiertamente se había declarado contrario al TLC y solicitaba vehementemente su revisión. Su frase más colorida ("giant sucking sound of American jobs heading south to Mexico") hacía referencia a su indignación de que los empleos de los estadounidenses se irían a nuestro país.

Finalmente ganó Bill Clinton, por mucho, uno de los mejores presidentes de los Estados Unidos en los últimas décadas. Además si a su esposa no le importó la felación que le aplicó Lewinsky en plena oficina oval, al resto del mundo también le debería importar un pepino (¿eufemismo?).

Pero volvamos al buen Ross. Este personaje era un antimexicano declarado y curiosamente su negocio son sistemas de informática: Perot Systems.

¿Recuerdan a la feria de empleo a la que fui? Pues ahí había un bonito stand de Perot Systems recibiendo currículums para su nuevo punto de presencia en México, Guadalajara más precisamente. Ahora resulta que nuestro detractor ha decidido mover parte de sus operaciones de investigación y desarrollo a México, además de las que ya tiene la India y en Europa. Como pregona el dicho: más pronto cae un hablador que un cojo.

Si se preguntan si dejé mi currículum en el stand, les diré que sí, ahí dejé una copia.

micronota

Ayer vi Tout le plaisir est pour moi y hoy vi Elsa y Fred. Ambas buenas películas, no son las grandes genialidades pero pasas un rato agradable y te hacen meditar un poco después.

Le di un poquito amor a DAOGen, ahora de vuelta a su servidor habitual. Jugué un poco con la implementación Bellagio de OpenMAX.

rapidín

El miércoles fui a ver Kinky Boots. Ayer le di un poco de amor a DAOGen, en el nuevo servidor temporal de subversion :S

Estoy cansado.

Reseñeando

Estoy cansado. Seré breve. El fin pasado. Creo que comenzó el viernes, ya no lo recuerdo bien. El clima fue frío, brumoso, con un constante chipi chipi. La humedad se metía por todos lados al igual que la gelidez. Ese día nos fuimos al Albertos, el bar que tiene la chela a 14 y los platicos entre 10 y 20 varos. Ahí estuvimos hasta que la noche se apoderó de la ciudad. Dejamos a Sandino cerca del metro y nos fuimos al Barrio Antiguo donde nos metimos a un bar donde la cerveza se vendía 10 pesos por promoción. El ruido del lugar no dejaba espacio a la conversación así que terminamos pronto.

El sábado fui por Kiwi a la terminal de autobuses. El clima helado persistía. La pertinaz lluviecita no había cesado. Ella venía a la feria del empleo que organizó el ITESM para los graduados de sus programas de posgrado. Fausto pasó por nosotros junto con Adrián y nos fuimos al lugar en San Pedro donde se llevaría a cabo. La gran mayoría de los presentes estaban ensaquetados y encorbatados, raros eramos los que no íbamos uniformados; resultó obvio que quienes no teníamos trajes oscuros y zapatitos de charol eramos los ingenieros. Había stands de FEMSA, Vitro, Cemex, además de Schneider y Sasken. Yo no llevaba ni currículum y Adrián entró de contrabando. Robamos comida destinada a los estudiantes de maestría en administración y anduvimos de aquí a allá, preguntando, pidiéndo plumas y otros souvenires. Yo saqué una pelotita para la relajación, un par de plumas y varios papeles inútiles.

Decepcionados de la feria fuimos a un centro comercial finolis de San Pedro, comimos algo y nos desvalagamos. Compré dos botellas de tinto y nos fuimos al departamento a beber una. Luego fuimos a un café del Barrio Antiguo a tomar café. Adrián y Fausto se fueron y me quedé con Kiwi esperando a que pasarán por ella unas amigas suyas. Cuando partió regresaron Fausto y Adrián para irnos a un Das Bierhaus. Alan, quien llegaba de no se donde, se nos pegó. Después del Das, dimos una vuelta en la Macro, donde se realizan las fiestas del Barrio Antiguo. Y rompimos el día.

El domingo fue la ópera: La flauta mágica de Mozart. Yo estaba a la expectativa de cómo interpretarían la aria de la Reina de la Noche. No me impresionó, se escucha mejor en el disco. No obstante la interpretación de Papageno me gustó mucho; fue, por mucho, quien se llevó la velada.

Llegó el lunes y el casero le dio por robarme la tarde viendo lo de un aire acondicionado para el departamento. En verano hubiera sido fenómeno, pero ahora no se antoja en lo absoluto. El clima mejoró bastante.

¿Pedir o no mi cambio al grupo de UI?

Calaverita

Catrina esta noche sale,
muy vestida y alborotada,
para llevarse a quien jale
con sus afanes de alada.

La muerte emperifollada
buscaba a su queridín,
mas iban en retirada
de su temible rondín.

Y no es culpa de nadie, digo,
que todos le quieran rehuir,
pues vidas sega cual trigo
sin la razón de existir.

La huesuda llora su pena
pues occidente le huyó,
oriente ni la condena,
sólo México le amó.

Muerte puta e indiferente,
si no te importan las obras,
de malvados o creyentes,
a todos sus vidas cobras.

Sin PDA ni GPS
Catrina se encontrará
al linuxero que rece
la GPL u otra sabrá.

No me lleves muerte linda,
todavía no compila
el código que prescinda
de propiedades que no hilan.

Me importa un pito qué digas,
que seas Torvalds o de Icaza,
esta noche comes migas
en el lecho de mi casa.

A Stallman no se lo lleva,
ni prestado ni a regalo,
el muy pesado se eleva
y GNU demanda al hado.

El continuo agobio del agotado

Hoy vi Volver, la última película de Almodovar. Me gustó. Como dijo Sandino: "cada toma es una pintura". Aunque debo de aceptar que es larga y puede sentirse cansada.

En el trabajo hice el componente PCM Encoder, utilizando el código del Decoder. Es hora de comenzar con GObject.

Wednet: Aunque estoy de acuerdo que el "American Dream" no es la única opción de una buena vida, ni mucho menos la mejor, pero considero que es un error pensar que la riqueza es un recurso limitado, que si uno la obtiene, al otro se le quita; al contrario, la riqueza se genera. Todo emprendimiento implica agregar valor, de una u otra forma, y ese valor no se lo arrebatas a nadie. Claro, podrás traer a colación a Marx, pero yo creo que no es caso, a menos que te consideres un obrero de ti mismo.