Recent Comments On Blog

rss

September 2006

Thriller: a person or thing that thrills - thrills: to move tremulously; vibrate; quiver.

  1. Introducción a la ética. Raúl Gutierrez Saenz. (01-01-2006 / 01-18-2006)
  2. El Mundo de Sofía. Jostein Gaarder. (01-20-2006 / 02-02-2006)
  3. La tragicomedia de Calisto y Melibea ó La Celestina. Fernando de Rojas (02-05-2006 / 03-06-2006)
  4. La seducción de las palabras. �lex Grijelmo (03-07-2006 / 03-26-2006)
  5. La victoria. Jaime Sánchez Susarrey (03-28-2006 / 03-31-2006)
  6. El evangelio según Jesucristo. José Saramago (03-27-2006 / 04-22-2006)
  7. Ética para Amador. Fernando Savater (04-23-2006 / 05-02-2006)
  8. El otoño del patriarca. Gabriel García Márquez (05-03-2006 / 05-30-2006)
  9. Pantaleón y las visitadoras. Mario Vargas Llosa (06-02-2006 / 06-11-2006)
  10. El nombre de la rosa. Umberto Eco (06-11-2006 / 06-24-2006)
  11. La insoportable levedad del ser. Milán Kundera (06-25-2006 / 06-30-2006)
  12. Vitales. Greg Bear (07-19-2006 / 07-26-2006)
  13. El juego de Ender. Orson Scott Card (08-21-2006 / 08-26-2006)
  14. El psicoanalista. John Katzenbach (09-04-2006 / 09-12-2006)
  15. Estética. Harold Osborne (07-02-2006 / 09-23-2006)
  16. Patria. Robert Harris (09-24-2006 / 09-28-2006)
Un clásca novela de suspenso y emoción (thriller), que tiene un contexto bastante original: una hipotética Alemania de postguerra con un Reich truinfante. Un estado represor y policiaco sustentado por las SS; una serie de asesinatos al parecer inconexos; un policía rebelde y asocial; una linda reportera estadounidense; un complot político para ocultar los horrores de la guerra. El resto lo pueden suponer.

Un acto de disciplina

Dudé en escribir hoy. Pero ya que fui al yoga e hize mis cuentas diarias (en el fabuloso gnuCash), pues sigo con la disciplina y agrego algo en estas notas.
El problema es que no hallo nada qué decir. No quiero anticipar ninguno de mis planes porque se ceban (y conste que no creo en la mala suerte). ¿Estaré escaso de inspiración hoy? Puedo charlar sobre el patrón singleton, pero me tiene tan desilucionado que no lo quiero hacer. En el glib hay varias cosas que hacer: eliminar el agregado de nuevas bitácoras pero sin quitar las existentes; solucionar el problema del servidor de correo electrónico; ver cómo van los avances de la junta directiva. Del trabajo pues tenemos el gomx y del otro trabajo el manejo de catálogos.
Esta noche tengo un hueco en el cerebro.
Acabo de poner The Widow de The Mars Volta. Esto me recuerda que encontré un foro donde discutían la discografía del grupo y desarrollaban explicaciones a los albúmes, argumentando que son novelas completas, donde cada canción es un personaje... está muy fumado eso.
Bueno, tengo un anuncio que hacer, hice la liberación de la versión 0.2 de SiCaPop (este no lo libero por tener licencia propietaria). Aún no veo con claridad toda la aplicación, pero está tomando un caminito simple. Ya parsea archivos de configuración y ya se conecta a la base de datos y carga a la fábrica de DAOs.
Ya me voy a leer...

¡mamá, ya no me gustó la filosofía!

  1. Introducción a la ética. Raúl Gutierrez Saenz. (01-01-2006 / 01-18-2006)
  2. El Mundo de Sofía. Jostein Gaarder. (01-20-2006 / 02-02-2006)
  3. La tragicomedia de Calisto y Melibea ó La Celestina. Fernando de Rojas (02-05-2006 / 03-06-2006)
  4. La seducción de las palabras. �lex Grijelmo (03-07-2006 / 03-26-2006)
  5. La victoria. Jaime Sánchez Susarrey (03-28-2006 / 03-31-2006)
  6. El evangelio según Jesucristo. José Saramago (03-27-2006 / 04-22-2006)
  7. Ética para Amador. Fernando Savater (04-23-2006 / 05-02-2006)
  8. El otoño del patriarca. Gabriel García Márquez (05-03-2006 / 05-30-2006)
  9. Pantaleón y las visitadoras. Mario Vargas Llosa (06-02-2006 / 06-11-2006)
  10. El nombre de la rosa. Umberto Eco (06-11-2006 / 06-24-2006)
  11. La insoportable levedad del ser. Milán Kundera (06-25-2006 / 06-30-2006)
  12. Vitales. Greg Bear (07-19-2006 / 07-26-2006)
  13. El juego de Ender. Orson Scott Card (08-21-2006 / 08-26-2006)
  14. El psicoanalista. John Katzenbach (09-04-2006 / 09-12-2006)
  15. Estética. Harold Osborne (07-02-2006 / 09-23-2006)
Este volumen de trescientas páginas es una compilación de artículos sobre el problema de la estética como rama de la filosofía. ¡Dios mio! ¡Qué difícil ha sido leerlos! No me pregunten si les entendí. Les juro que leí cada palabra, pero entendí un mínimo de enunciados posibles. Lo único que me quedó claro es que es un pedo universal conceptualizar el arte, definir los valores estéticos, asignar la etiqueta de obra maestra y que el papel de los críticos de arte parece ser necesaria pero su justificación es demasiado oscura.
Ahora sigue otra novelita ligera que me prestaron. Dejemos la filosofía por un rato en paz.

breves acontecimientos de una vida chiquita

El miércoles fui a ver La condesa blanca. Me gustó mucho la película. Me gustó mucho. Ya saben que tengo debilidad por las historias románticas, y esta es una linda tragedia.
El jueves me salí con Fausto a beber unas cervezas a un Sierra Madre. Me fascinó la cerveza Frayle: oscura, achocolatada, densa, fría. Luego fuimos por unas tortas que están cerca del departamento. Me animé a pedir una "endiablada". ¡Terminé sudando! La cosa esa picaba enormidades. Y lo peor vino a la mañana siguiente, dado a que temo que la prepararon con chile campana (pica al entrar y repica al salir).
Hoy, en bola, varios testers y developers nos fuimos a una junta del GULTEC. Estuvo divertida, sobre todo cuando comenzaron los flamewars. Lo chistoso fue que los guardias de la entrada del Tec no nos dejaban entrar a Adrián, Iván y yo, pero cuando saqué "la dorada", poco les faltó para que se cuadraran. Me dio risa y coraje a la vez.
Mañana yoga sin falta.

Retomando el nivel

Hoy finalmente comprendí lo necesario para parchar el PrBoom y que corriera en el OMAP 2430. El problema era una escritura desalineada de memoria. No me cabía el ego en el cuerpo de gusto. La presunción fue en grande. La gente de desfilaba por mi lugar para ver el juego correr en el board.
Hoy también hizo su aparición Fausto en la oficina. Me sentí mal por no haberle acompañado por una cheves de bienvenida. Pero la neta estoy muy gastado y no quiero gastar más dinero en cervezas. Tal vez hize bien.
Ahora estoy metido por el patrón singleton. Interesantes cosas hay ahí. Ahora debo sentarme a programar.

butifarra de payés

Hoy fue mi primer clase de yoga, quitando la clase de muestra. Terminé alegremente agotado. Lo malo es que mi ánimo para trabajar en Pepè Le Pew se ve terriblemente minado. Uno debe elegir dónde gastar lo único que se poseé: el tiempo. Y no es renovable, y la única utilidad es nuestra propia vida.
Saliendo de la oficina, antes del yoga, acompañé a Sandino a intentar comprar, infructuosamente, boletos para el grupo de baile irlandés que no mueven los brazos y sólo zapatean. Si no lo notaron, no recuerdo el nombre de la agrupación. Esto me sirvió para conocer el Mixup de la calle Morelos. Para mi desgracia vi la última producción de The Mars Volta. Se me antojo mucho, pero mis gastos me hacen pensar 5 veces (suficiente para desistir) ante de comprar gustitos.
El día se lo dediqué al PrBoom en el board. De nuevo sin éxito. Me gustaría indagar en el error, pero temo que hay otras actividades más importantes.
Por la mañana fui a Hacienda para preguntar qué necesito para hacer un trámite.
Desperté con mucho sueño y pocas ganas de levantarme.

¡maldito dinero!

Este fin de semana gasté como si fuera niño rico: cervezas, comidas elegantes, taxis. Creo que aún no aprendo cuánto cuesta ganar el dinero.
Aún así fui a ver la película de Efectos secundarios. Después de hojear las primeras páginas de La Náusea de Sartre, tomando café, sin compañía, me sentí bien por ser un solitario. Me fascinó cuando el protagonista etiqueta como "célibes" a los que son incapaces de enfrentarse a sí mismos, en soledad, a su propio interior y huyen a los brazos de la compañía, sea cual sea.
Una de las cosas que me gusta de ir al cine "alternativo" es que las salas están prácticamente vacías. Mi soledad permanece intacta. Ahora que tuve que ir a un Cinépolis para ver está película, tuve que darme un baño de pueblo al entrar a un cine atestado. No hay ese espacio de tolerancia de una butaca a los lados. Aun derecha una señora gorda con su hija igual de gorda, y a la izquierda una pareja homosexual. La señora gorda hablaba en la película. Los niños gays platicaban como poca inhibición antes de comenzar la película. Yo estaba arrepentidísimo de haber ido a ese cine. Hubiera ido a ver cualquier película en el cine alternativo. Comenzó la función y el arrepentimiento se diluyó. La película es comercial, exagerada, los personajes poco trabajados, y los diálogos. en ocasiones, presuntuosos. No obstante la película está bien para pasar un rato agradable, que, en última instancia, es lo que se busca. ¿Me sentí identificado? Yo iba con esta inquietud. No, es mi respuesta. Ninguno de los personajes tiene algún tipo de paralelismo conmigo o con la gente con la que me relaciono.
El sábado vino Arturo y Erica al piso. Fuimos a comer en el restaurant argentino que está a unas cuadras de aquí. No está mal, agradable, lástima de la espera que tuvimos que pasar para alcanzar lugar.
Finalmente hoy le entregué a Miriam y a su esposo las cosas que me dio Adriana desde hace meses y ellos me dieron, generosamente, su vieja parrilla. Compré de pasada unos cuantos libros. Y luego me tomé un expresso cortado doble en el café italiano que había en el centro comercial. Una delicia. Compré la Náusea, Las mil y una noches y Crónicas marcianas. Algo ecléctica mi selección.
Fue una semana floja. Espero recuperar mi entusiasmo.... lo dudo con Sartre al pie de mi colchón.

El problema del día perdido

Hoy definitivamente hize varias cosas, pero ninguna de las cosas que yo quisiera haber hecho. El problema es no tener un problema qué resolver, una agenda con la que uno se halla comprometido. Es el problema del agente viajero que quiere ir a todos lados al mismo tiempo. Lástima que Dijkstra no inventó un algoritmo para eso. ¿Cuál debe ser mi objetivo del día de mañana? Tengo que tener uno y mandar al carajo todo lo demás, al menos por un rato.
Creo que lo que debo hacer es mi "itch" personal. ¡Tengo que rascarme! Así que mañana lo dedicaré a intentar portar el Doom al board... Suena cool ¿no? Ya veremos que tan cool es el proceso.
Finalmente pude destazar boost y extraer solamente la biblioteca program_options y hacer que compile en Windows. El problema es que tuve que copiarme casi todos los includes. Veremos que tal va esta apuesta.
Los ebuilds se me han atrasado y ahora mi emerge --update es enooorme. Con la añadidura de que tengo Gnome inestable (2.16) pendiente. Dejaré la compu trabajando en eso toda la noche. Por lo pronto está compilando gcc4.
Vero vino a Monterrey. Me dijo que me buscaría al terminar su jornada. No me ha hablado. Yo creo que ya es compromiso roto.
Hablemos sobre le patrón de diseño Proxy.
Problema:
Necesitas manejar objetos que consumen muchos recursos, y no deseas instanciar tales objetos a menos y sólo hasta el momento en que estos objetos solicitados por el cliente.
Objetivos:
  • Proporcionar un sustituto o intermediario de un objeto para controlar su acceso.
  • Usar una capa extra indirecta para proporcionar un acceso ya sea distribuido, controlado o inteligente.
  • Agregar un envoltorio y un delegado para proteger al componente real de complejidad inncesesaria.
Implementación:
Diseñar un sustituo o intermediario que: instancíe el objeto real la primera vez que el cliente haca una solicitud del proxy, almacene la instancia y devuelva este objeto real. Posteriormente todas las solicitudes siguientes son simples reenvíos del objeto real almacenado previamente.
Ejemplos clásicos del patrón proxy:
  • Proxy remoto: Ofrece una referencia a un objeto localizado en un espacio con dirección diferente ya sea en la misma computadora o en otra.
  • Proxy virtual: Permite la creación de un objeto que consume intensivamente memoria bajo demanda. El objeto no será creado hasta que realmente sea necesario.
  • Proxy Copy-On-Write: Difiere la copia (clonación) de un objeto seleccionado hasta que sea esto requerido dadas las acciones de un cliente.
  • Proxy de protección de acceso: Ofrece distintos clientes con diferentes niveles de acceso al objeto seleccionado.
  • Proxy caché: Ofrece un almacenamiento temporal de los resultados de una operación objetivo costosa, por lo que varios clientes puedes compartir los mismos resultados.
  • Proxy cortafuegos: Proteje al objetivo de clientes malintencionados (o viceversa).
  • Proxy de sincronización: Ofrece accesos múltiples al objeto seleccionado.
  • Proxy de referencia inteligente: Ofrece acciones adicionales cuando el objeto seleccionado es referenciado, tal como contar el número de referencias al objeto.

Porque la gente lo exige

Si el público lo aclama, no hay mucho más qué hacer.
Hoy fui a mi primer clase de yoga. Fue una clase muestra y la impartió un tipo que, por su acento, parece chileno. Me gustó la clase, me relajé.
DAOGen tiene nuevos detalles como checar el estado de la conexión a PostgreSQL antes de cada SQLazo. Es una bonita verificación de sanidad. Creo que será de utilidad.
Sobre SiCaPop, el hijo de DAOGen (y su razón de ser) he estado pensando sobre cómo implementar los catálogos. Mis ideas bien vale ponerlas como un artículo en el Glib.
Hablando del Glib, están ocurriendo cosas interesantes ahí. Sin embargo tengo la disyuntiva moral de meter mi cuchara o no.
Sobre el trabajo, hay varias cosas interesantes, pero quiero hacerlas todas y termino no haciendo nada. Focus!
El banco, Hacienda y el tec, me están dando mucha lata. El dinero es una monserga, un mal, lastimosamente, necesario.
Gracias a p.g.o. he visto un par de documentos sobre testing. Otra lectura técnica más pendiente.
Pero técnicamente, sobre el trabajo de acá, lo que más me llama atención es el wrapper que intenta hacer FelipeC de OpenMAX con gobject. Es una idea que me atrae mucho. Sobre todo para tener una base más "linuxera" para hacer testing automático.

Novelita de escusado

  1. Introducción a la ética. Raúl Gutierrez Saenz. (01-01-2006 / 01-18-2006)
  2. El Mundo de Sofía. Jostein Gaarder. (01-20-2006 / 02-02-2006)
  3. La tragicomedia de Calisto y Melibea ó La Celestina. Fernando de Rojas (02-05-2006 / 03-06-2006)
  4. La seducción de las palabras. �lex Grijelmo (03-07-2006 / 03-26-2006)
  5. La victoria. Jaime Sánchez Susarrey (03-28-2006 / 03-31-2006)
  6. El evangelio según Jesucristo. José Saramago (03-27-2006 / 04-22-2006)
  7. Ética para Amador. Fernando Savater (04-23-2006 / 05-02-2006)
  8. El otoño del patriarca. Gabriel García Márquez (05-03-2006 / 05-30-2006)
  9. Pantaleón y las visitadoras. Mario Vargas Llosa (06-02-2006 / 06-11-2006)
  10. El nombre de la rosa. Umberto Eco (06-11-2006 / 06-24-2006)
  11. La insoportable levedad del ser. Milán Kundera (06-25-2006 / 06-30-2006)
  12. Vitales. Greg Bear (07-19-2006 / 07-26-2006)
  13. El juego de Ender. Orson Scott Card (08-21-2006 / 08-26-2006)
  14. El psicoanalista. John Katzenbach (09-04-2006 / 09-12-2006)
Compré el libro en Sanborns porque buscaba un pretexto para no leer el libro de filosofía con el que llevo una relación de amo/odio desde hace unos meses. Fue decepcionante encontrar que el "asesino" es quien sospechabas que era a un cuarto del total de páginas. El libro es bueno para los ratos de ocio en el escusado, aunque debo de aceptar que antier dormí hasta tarde leyéndolo, no porque me interesara la historia en sí, sino porque ya quería terminarlo y quería corroborar mi sospecha.

El mundo de C++

En carrera programé un par de cosas más o menos serias en C++: un toolkit gráfico para MSDOS y un derivador de funciones matriciales en partícular. Yo me creía un buen programador de C++. ¡Pobre iluso! En últimas fechas, desde mi involucramiento en el proyecto de cajas populares de Juan José Salgado, que Raúl Vázquez ha venido desarrollando en C++, mis habilidades en C++ han tenido un resurgimiento y me han colocado en mi real perspectiva: sólo se que no se nada. He (re)descubierto el STL, las excepciones, conjugándolo con mi amor por los patrones de diseño de software.
Para mi suerte, en Aritma, han salido una serie de artículos "The Most Important C++ ... Ever" que me han mostrado un mundo mucho más grande y complejo del que había logrado percibir: Revisando estas referencias, en el artículo non-book publications hay una liga al famoso documento Programming in C++, Rules and Recommendations. Después de revisarlo quedé descorazonado: mi código no sigue varias de la razonables reglas ahí mencionadas.
Fue en esta epifanía cuando me di cuenta del valor de la propuesta de Python: hacer obligatorias la buenas prácticas. Cuando las buenas prácticas son opcionales, el ciclo de aprendizaje para escribir programas de manera profesional resulta muy grande, en muchas ocasiones jamás se logra.
He decido hacer una lista de verificación sobre el código autogenerado por DAOGen con las reglas que este documento indica:
  • Rec. 1: Optimize code only if you know that you have a performance problem. Think twice before you begin. No he optimizado nada por que los algoritmos hasta ahora son simples y directos.
  • Rec. 2: If you use a C++ compiler that is based on Cfront, always compile with the +w flag set to eliminate as many warnings as possible. Uso -Wall
  • Rule 1: Include files in C++ always have the file name extension ".hh". Me gusta más hpp ok
  • Rule 2: Implementation files in C++ always have the file name extension ".cc". Me gusta más cpp ok
  • Rule 3: Inline definition files always have the file name extension ".icc". No, los tengo en archivo hpp... No se qué tan válido sea esto.
  • Rec. 3: An include file should not contain more than one class definition. ok
  • Rec. 4: Divide up the definitions of member functions or functions into as many files as possible. ok
  • Rec. 5: Place machine-dependent code in a special file so that it may be easily located when porting code from one machine to another. No aplica... aún...
  • Rule 12: The identifier of every globally visible class, enumeration type, type definition, function, constant, and variable in a class library is to begin with a prefix that is unique for the library. ok
  • Rule 13: The names of variables, constants, and functions are to begin with a lowercase letter. Las variables sí, las constantes aún no uso y las funciones... no, precisamente las acabo de cambiar a mayúsculas y me parece más correcto...
  • Rule 14: The names of abstract data types, structures, typedefs, and enumerated types are to begin with an uppercase letter. ok
  • Rule 15: In names which consist of more than one word, the words are written together and each word that follows the first is begun with an uppercase letter. Sólo ha ocurrido en funciones. ok
  • Rule 16: Do not use identifiers which begin with one or two underscores (`_' or `__'). ok
  • Rule 17: A name that begins with an uppercase letter is to appear directly after its prefix. Es igual que en la regla 13
  • Rule 18: A name that begins with a lowercase letter is to be separated from its prefix using an underscore (`_'). Es igual que la regla 13
  • Rule 19: A name is to be separated from its suffix using an underscore (`_'). Es igual que la regla 13
  • Rec. 14: Do not use typenames that differ only by the use of uppercase and lowercase letters. Al igual que los items pasados, hay que recordar que esto también depende del esquema de la base de datos. Tendría que seguir esto lineamientos también.
  • Rec. 15: Names should not include abbreviations that are not generally accepted. ok
  • Rec. 16: A variable with a large scope should have a long name. Creo que no aplica hasta ahora
  • Rec. 17: Choose variable names that suggest the usage. ok
  • Rec. 18: Write code in a way that makes it easy to change the prefix for global identifiers. ok
  • Rec. 19: Encapsulate global variables and constants, enumerated types, and typedefs in a class. ok
  • Rule 20: The public, protected, and private sections of a class are to be declared in that order (the public section is declared before the protected section which is declared before the private section). ok
  • Rule 21: No member functions are to be defined within the class definition. ¡Not OK! Debo usar inlines.
  • Rec. 20: Always provide the return type of a function explicitly. ok
  • Rec. 21: When declaring functions, the leading parenthesis and the first argument (if any) are to be written on the same line as the function name. If space permits, other arguments and the closing parenthesis may also be written on the same line as the function name. Otherwise, each additional argument is to be written on a separate line (with the closing parenthesis directly after the last argument). ok
  • Rec. 22: In a function definition, the return type of the function should be written on a separate line directly above the function name. ¡Not OK! A mi me gusta como está
  • Rec. 23: Always write the left parenthesis directly after a function name. ¡Not OK! A mi me gusta como está
  • Rec. 24: Braces ("{}") which enclose a block are to be placed in the same column, on separate lines directly before and after the block. ok
  • Rec. 25: The flow control primitives if, else, while, for and do should be followed by a block, even if it is an empty block. ok
  • Rec. 26: The dereference operator `*' and the address-of operator `&' should be directly connected with the type names in declarations and definitions. ¡Not OK! me he resistido por mi herencia de C a hacer esto, pero tal vez tengan razón
  • Rec. 27: Do not use spaces around `.' or `->', nor between unary operators and operands. ok
  • Rec. 28: Use the c++ mode in GNU Emacs to format code. ok, más otras cosillas que rompen algunas cosas aquí recomendadas :S
  • Rule 22: Never specify public or protected member data in a class. ok
  • Rec. 29: Access functions are to be inline. ¡Not OK!
  • Rec. 30: Forwarding functions are to be inline. ¡Not OK!
  • Rec. 31: Constructors and destructors must not be inline. ok
  • Rec. 32: Friends of a class should be used to provide additional functions that are best kept outside of the class. I don't know... but I suspect that my use of the << overloading is wrong.
  • Rule 23: A member function that does not affect the state of an object (its instance variables) is to be declared const. ¡Not always!
  • Rule 24: If the behaviour of an object is dependent on data outside the object, this data is not to be modified by const member functions. ¡Not always!
  • Rule 25: A class which uses "new" to allocate instances managed by the class, [i.e. instances bound to member variables of pointer or reference type that are deallocated by the object.] must define a copy constructor. Aun no aplica
  • Rule 26: All classes which are used as base classes and which have virtual functions, must define a virtual destructor. ok
  • Rec. 33: Avoid the use of global objects in constructors and destructors. ok
  • Rule 27: A class which uses "new" to allocate instances managed by the class, [i.e. instances bound to member variables of pointer or reference type that are deallocated by the object.] must define an assignment operator. Aun no aplica
  • Rule 28: An assignment operator which performs a destructive action must be protected from performing this action on the object upon which it is operating. Aún no aplica
  • Rec. 34: An assignment operator ought to return a const reference to the assigning object. ¡Not OK!
  • Rec. 35: Use operator overloading sparingly and in a uniform manner. ok
  • Rec. 36: When two operators are opposites (such as == and !=), it is appropriate to define both. ok
  • Rule 29: A public member function must never return a non-const reference or pointer to member data. ¡No siempre!
  • Rule 30: A public member function must never return a non-const reference or pointer to data outside an object, unless the object shares the data with other objects. Creo que ok
  • Rec. 37: Avoid inheritance for parts-of relations. ok
  • Rec. 38: Give derived classes access to class type member data by declaring protected access functions. ok
  • Rec. 39: Do not attempt to create an instance of a class template using a type that does not define the member functions which the class template, according to its documentation, requires. ok
  • Rec. 40: Take care to avoid multiple definition of overloaded functions in conjunction with the instantiation of a class template. ok
  • Rule 31: Do not use unspecified function arguments (ellipsis notation). ok
  • Rec. 41: Avoid functions with many arguments. Cuando se puede
  • Rec. 42: If a function stores a pointer to an object which is accessed via an argument, let the argument have the type pointer. Use reference arguments in other cases. ¡Not OK!
  • Rec. 43: Use constant references (const &) instead of call-by-value, unless using a pre-defined data type or a pointer. ¡Not OK!
  • Rec. 44: When overloading functions, all variations should have the same semantics (be used for the same purpose). ok
  • Rule 32: The names of formal arguments to functions are to be specified and are to be the same both in the function declaration and in the function definition. ok
  • Rule 33: Always specify the return type of a function explicitly. ok
  • Rule 34: A public function must never return a reference or a pointer to a local variable. ok... pero tengo que rerevisarlo
  • Rule 35: Do not use the preprocessor directive #define to obtain more efficient code; instead, use inline functions. No aplica pero es buena idea
  • Rec. 45:Use inline functions when they are really needed. ok
  • Rec. 46: Minimize the number of temporary objects that are created as return values from functions or as arguments to functions. ok
  • Rec. 47: Avoid long and complex functions. ok
  • Rule 36: Constants are to be defined using const or enum; never using #define. ok
  • Rule 37: Avoid the use of numeric values in code; use symbolic values instead. ok
  • Rule 38: Variables are to be declared with the smallest possible scope. ok
  • Rule 39: Each variable is to be declared in a separate declaration statement. No ok
  • Rule 40: Every variable that is declared is to be given a value before it is used. No ok
  • Rule 41: If possible, always use initialization instead of assignment. No ok
  • Rule 42: Do not compare a pointer to NULL or assign NULL to a pointer; use 0 instead. [An intensive debate about this has been raging in the news group comp.lang.c++. Future changes in this recommendation may occur.] No aplica hasta ahora
  • Rec. 48: Pointers to pointers should whenever possible be avoided. No ok
  • Rec. 49: Use a typedef to simplify program syntax when declaring function pointers. No ha aplicado
  • Rule 43: Never use explicit type conversions (casts). ok
  • Rule 44: Do not write code which depends on functions that use implicit type conversions. ok
  • Rule 45: Never convert pointers to objects of a derived class to pointers to objects of a virtual base class. ok
  • Rule 46: Never convert a const to a non-const. ok
  • Rule 47: The code following a case label must always be terminated by a break statement. no aplica hasta ahora
  • Rule 48: A switch statement must always contain a default branch which handles unexpected cases. no aplica hasta ahora
  • Rule 49: Never use goto. OK ;)
  • Rec. 50: The choice of loop construct (for, while or do-while) should depend on the specific use of the loop. ok
  • Rec. 51: Always use unsigned for variables which cannot reasonably have negative values. ¡No ok!
  • Rec. 52: Always use inclusive lower limits and exclusive upper limits. ok
  • Rec. 53: Avoid the use of continue. ok
  • Rec. 54: Use break to exit a loop if this avoids the use of flags. ok
  • Rec. 55: Do not write logical expressions of the type if(test) or if(!test) when test is a pointer. ok
  • Rec. 56: Use parentheses to clarify the order of evaluation for operators in expressions. ok
  • Rule 50: Do not use malloc, realloc or free. ok
  • Rule 51: Always provide empty brackets ("[]") for delete when deallocating arrays. ¡Not OK!
  • Rec. 57: Avoid global data if at all possible. ok
  • Rec. 58: Do not allocate memory and expect that someone else will deallocate it later. ¡not ok in factory!
  • Rec. 59: Always assign a new value to a pointer that points to deallocated memory. Check it out!
  • Rec. 60: Make sure that fault handling is done so that the transfer to exception handling (when this is available in C++) may be easily made. ok
  • Rec. 61: Check the fault codes which may be received from library functions even if these functions seem foolproof. ok
Las portability recommendations & rules las dejaremos para otro día. Estoy ya fue demasiada información.
Mi gran conclusión en este momento es que C++ no es C. Absolutamente. Son cosas distintas. Entonces, ¡Qué gran estupides es escribir "Se requieren conocimientos de C/C++"! Recursos Humanos no tiene idea de lo que se necesita.

Sólo por escribir algo

Ayer en la noche comenzó a llover. No paró sino hasta entrada la tarde. En la mañana no pensé que durara tanto el chipi chipi así que resolví irme caminando. Llegué hecho una sopa a la oficina, empapado, aterido, temeroso de una pulmonía cuata. Maldito clima regio. Cambia repentinamente, sin aviso, no sabes cuándo necesitaras un abrigo aún cuando sólo con verlo te de asco por el calor sofocante.
Hoy vi La otra puerta. Buena la película. Hasta ahí. Lo que me gustó fueron sus escenas chocantes al espectador. La trama, a mi sentir, le faltó redondear. De regreso tu ve que caminar un tramo que, debido a la constate lluvia, se volvío lodoso. No podía dar vuelta atrás. Mi zapatos terminaron siendo una masa informe de pantano personal y transportable. Mi pantalón sufrió de manera similar.
Hoy no quize hacer nada. Nada me salía. Sólo quería que pasaran las horas. Y según yo, en mi cumpleaños, me juré vivir cada día con pasión, con objetivo... hoy me valió un pepino el escaso tiempo que se me ha dado.
Me voy a dormir.

Hoy fue domingo...

La gripa no cede, pero aún así fue un día productivo: Me levanté a las 8am y me fui a desayunar. Opté por darme el lujo de ir a un Vips que no había visto antes cerca del andador Morelos. De camino compré el periódico. Ya había gente en el Museo de Historia. Resulta que hay una muestra itinerante de las momias de Guanajuato y desde la semana pasada, hay colas larguisimas para entrar, tan es así que me resulta incómodo estar pidiendo permiso para pasar entre la gente. Cruzo todos los días el atrio del museo. En el camino vi a la gente de amisrael pidiendo desde temprano firmas en contra del terrorísmo. Ayer sábado me negué a firmarles. Me parece una incongruencia por parte de una organización que apoya al gobierno israelí, pedir la paz cuando este se regodea en el cadaver de Líbano. Regresé de desayunar y me fui a lavar la ropa. Regresé. Me puse a barrer. Luego a trapear. Me bañé. Salí a hacer la despensa. Para mi mala suerte ya no me dejaron comprar una botella de tinto porque eran las 6:15pm y ya no pueden vender alcohol después de las 6pm, luego no compré la escoba porque no traía código de barras :S Me desesperé esperando a la señorita a que me diera la factura. Regresé. Eran cerca de las 7pm y no había comido. Los vecinos tenían una carne asada como baby shower. Sólo quería dormir en realidad. Pero debía comer. Me levanté y me fui al cajero a sacar plata y luego me encaminé al Sanborns. Comí y se pegó un libro. Debo mi acerbo literario a Sanborns.... qué triste... Regresé.

Empatía feminista

La empatía es la capacidad de reconocer y entender los sentimientos de otra persona, lo que lleva a una mayor comprensión de sus acciones y decisiones. La empatía no es cosa sencilla, se requiere de un esfuerzo mental para reconocer objetivamente las condiciones que ha vivido la otra persona y los pensamientos y emociones que se han generado en ella hasta ser lo que ahora es. Y dicho sea de paso, debemos aceptar que jamás tendrémos una empatía total, completa, debido a nuestra propia individualidad, aunque esta limitante no nos exime de nuestra obligación de intentarlo con vehemencia.
En últimas fechas (casi más de un año) he intentado hacer un esfuerzo por tener cierta empatía con las mujeres que trato. Sería muy aventurado dar conclusiones aquí, pero creo que sería interesante compartír mis escasas observaciones.
A manera de advertencia debo declarar que hablaré aquí en términos de generalidades, ya que aglutino mis observaciones, pero en ningún caso es una inducción válida que deba tomarse como regla universal. El problema de hablar de estos temas es que fácilmente se puede interpretar como sexismo. Quedé pues constancia que mi intención es totalmente lo opuesto. Si el resultado corresponde, mi objetivo fue alcanzado, de lo contrario, por favor, tengan mis disculpas adelantadas.
Pues bien, el primer talón de aquiles con el que nos topamos todos, sin excepción de género, es la falta de una autoestima. En México, la educación familiar y la instrucción escolar están basados en pisotear sistemáticamente la autoestima del individuo, más marcadamente en la
instrucción pública, aunque la privada no este exenta de ella, pero las excepciones están prácticamente ahí. Tampoco es exclusivo de ciertas clases económico-sociales, aunque es más frecuentemente observable en familias cuyos miembros tienen poca educación y/o bajos recursos económicos. Ahora, si a esta vapulación le sumamos el machismo impuesto en la nación, la situación para las mujeres empeora terríblemente.
Pongamos un ejemplo típico: Una familia de clase media, cuyo padre es el único que estudió y cuya esposa apenas llegó a la preparatoria porque su familia no permitía que las mujeres estudiaran más. En la familia hay un niño y una niña. Además de las vejaciones a la autoestima clásicos aplicados a ambos hijos, tal como las comparaciones, las reprimendas sin explicación, el etiquetado de sus comportamientos, a la niña se le agrega la limitación de actividades, de expectativas, la reiteración de su debilidad, prácticamente se le alecciona a ser una ciudadan de segunda categoría. El padre y la madre prefieren al niño, consienten más a la niña, pero como fácil sustituto a la carencia de efectiva atención. ¿Qué resulta de todo esto? Una niña con la autoestima de un rábano. Situación que empeora aún más con un mal manejo de la menarquía y de prácticamente toda la adolescencia.
Con una población femenina con tales características, resulta relativamente fácil desarrollar una serie de comportamientos para el varón con perspectivas de Don Juan irresponsable, atacar estas deficiencias psicológicas para obtener, sin la precaución debida, los favores de las mujeres, utilizando fórmulas lingüisticas simples y casi mecánicas.
Sin embargo vivimos en tiempos cambiantes, de dinámicas complejas y constantes. Las mujeres están en contacto con un vasto cúmulo de información, de buena o pésima calidad, de buena o mala intención. Esto hace que las mujeres tomen como suyos los deseos de romper sus muros psicológicos que las limitan y las frustran. Toman suyas banderas como la igualdad de derechos, de oportunidades, de toma de la palabra, de exigir respeto y cumplir cabalmente con sus obligaciones. Y todo esto es estupendo, las féminas toman consciencia
de su propia condición y hacen patente su presencia y sentir. Sin embargo, la felicitación no puede durar mucho al observar la mala interpretación de estas actitudes y la presión social que se ejerce ante ellas. Expliquemos. La mala interpretación de estas actitudes es cuando una chica cree que debe imitar el comportamiento irresponsable de sus amigos hombres, que no son más que un ato de gañanes autodestructivos, o que deben de demostrar una entereza y una fortaleza casi templada a hielo y fuego, a toda la sociedad, y en especial, a su familia. Creen que para ser mujeres resueltas e independientes tienen cumplir con unos estándares de belleza fráncamente ridículos, impuestos por gente que en realidad le importa poco la emancipación femenina. Creen que deben cumplir, a niveles neuróticos, con una plétora de roles (mamá, hermana, amiga, amante, maestra, trabajadora, etc.) de manera simultanea. Y, por otro lado, está la presión social para que lo cumplan y demuestren a la sociedad que es posible su emancipación.
En otras palabras no hay un correcto filtrado de lo que es bueno y sano para el crecimiento y desenvolvimiento de las mujeres en la sociedad. Las consecuencias están a la vista: drogadicción, bulimia, anorexia, embarazos no deseados, enfermedades venereas, desórdenes bipolares, esquizofrenia... hasta el sucidido.
Insisto, esto no es la generalidad, pero sí es estadísticamente representativo. En mi mínima experiencia he notado que el número de mujeres que me comparten sus emociones y sentimientos, que llevan un peso psicológico extra al que podría denominarse como sano, son la triste mayoría. Pero debo declarar que hay las asombrosas excepciones, y no por eso menos fascinantes, tal vez diría que todo lo contrario.
La razón de explicar todo esto es para tomar consciencia de que aunque se diga que hay igualdad entre hombres y mujeres, de manera fáctica no la hay. Creemos vivir en igualdad porque las vemos estudiando igual que nosotros, en los mismos lugares, etc. Sin embargo, el problema tiene raíces más profundas, con la agravante de que crecemos ciegos a esta problemática. Es nuestro deber, como varones, desarrollar nuestra empatía hacia las mujeres y, ya no digamos impulsar, sino meramente permitir su mejor desarrollo ("mucho ayuda el que no estorba"). Los genes de la sociedad mexicana están en contra de esta empatía, así que nuestro esfuerzo debe ser mayor. Debemos acercarnos a ellas desde nuevas perspectivas, con especial énfasis en el aspecto emocional, abiertos y dispuestos. Tienen muchas cosas que decirnos.