miércoles, abril 25, 2007

Paranoia en el Metro

Desde la aparición del TranSantiago que mis hábitos alimenticios se han vuelto aún más alterados.
En las mañanas salgo echo una bala atrasado (intencionalmente) y la mayoría de las veces sin tomar desayuno. Afortunadamente en la oficina contamos con café y golosinas (galletas, biscochos y demases), antes no tomaba tanto café. La gracia de salir tarde es que me evito la congestión del Metro (y me puedo subir al tren), aunque ahora en invierno con este frío estoy pensando seriamente en irme más temprano para irme apretadito y calentito... (ironía por cierto, aunque lo pienso...).
En las noches llego tarde, ya sea por haber ido a clases, o bien por quedarme un rato más en la oficina, por el mismo motivo: Evitar las aglomeraciones de gente en el Metro. Llego a la hora del queso en la noche, con hambre y sin embargo la mayoría de las veces tan cansado que termino preparándome una leche con cereal y un sandwish.

Después de leer algunas reflexiones de algunos personajes, sobre el TranSantiago, pienso ¿dónde estuvo la falla? Y me respondo también. Definitivamente la idea inicial, que era mejorar la calidad de vida de la gente, no se cumple. Te vas apretado, llegas aún más tarde a tu destino, y terminas gastando un poco más de plata en locomoción. Hoy por hoy no es chiste vivir en Santiago.

Y pienso en los perjudicados colaterales: Nosotros los hombres (machos recios, del sexo masculino). Con las aglomeraciones de gente, muchas damas reclamaron con muy justa razón que al irse apretadas se exponían a toqueteos, agarrones y similares, propinados por engendros de mal vivir que perjudican la imagen del gremio que defiendo.
El problema: La paranoia. Como hombre dan ganas de salir con casco y camisa de fuerza, para que no te puedan culpar de nada. Por otro lado las mujeres andan todas saltonas, las rozan al salir del vagón y ya lo interpretan como agarrón mal intencionado. Ya no se puede ni siquiera (aquí me viene reto por exceso de honestidad) mirar tranquilo a ver si uno encuentra la justificación a haberse levantado temprano, justo cuando puedes encontrarte aquella top model, ese bombón, que no sabes si es un angel caido del cielo o una alucinación mañanera.

Hoy me tocó presenciar un dialogo de ese calibre:
Ella: "¿Para que andaas con los agarrones?" en tono molesto, increpatorio y lo suficientemente alto como para que todos los pasajeros cercanos nos enterasemos.
El: "Disculpe Srta. pero no le he pegado ningún agarrón"
Ella:
"No te hagas el tonto, si hace rato qu
e me vienes pegando agarrones"
El: "..." con cara de "Yo no he hecho nada" (y yo le creo, ese pedazo de Metro venía tan lleno que dificilmente se podía mover la gente)
en fin...

Mi mensaje:
Señorita, si su problema es compartir sus 25 cm2 con la gente que la puede apretar en el Metro, NO VIAJE EN METRO, o salga más tarde (o más temprano). Si está en "esos" días, sus amigas no la llaman hace 3 días (por razones obvias), evite el Metro a las horas de mayor congestión. Y si no puede evitar el Metro, por su sanidad mental y la de todos quienes eventualmente podemos tener la desgracia de rodearla, tómese un Armonil, masque chicle o haga algo que la distraiga del desagradable viaje.
Estimado caballero, para evitar percances y molestias, procure siempre llevar algo en sus manos, un libro, una mochila o bloso, o en el mejor de los casos ambos. De esa manera cuando la susodicha de turno lo increpe por rozarla involuntariamente usted le responde caballerosamente "Claro mi'jita, le pegué un agarrón con la mano del juicio" y le muestra ambas manos ocupadas. Y si ella aún se muestra disconforme, ofrezcale su propio culo para que ella le pegue un agarrón a usted (y así se quede tranquila), a lo Juanelo:


Imagen: Autoría de Can, Juanelo Online



How to: Permisos en MySql

Nota: Nuevamente sigo con el contenido poco amistoso para el lector casual. No pierdan al fe que pronto estaré inspirado para escribir cosas menos técnicas.

La verdad es después de mucho tiempo operando sobre Windows, perdí la costumbre de hacer algunas cosas. Puntualmente, necesitaba habilitar el acceso a una base de datos My SQL.

Lista de cosas verificadas:
  • MySql: Instalado y funcionando
  • Firewall: No hay firewall
  • Base de datos: Creada

Aún así no podía conectarme. Así que gracias a Gabriel, pude solucionar el problema de la siguiente manera:

/$ sudo su -
/# mysql
> grant all privileges on base_de_datos.* to 'usuario'@'localhost' identified by 'password';


donde base_de_datos es el nombre de la base de datos a la cual se asignarán los permisos de acceso, usuario es el nombre del usuario al que se otorgará permisos (no necesariamente el mismo de la máquina), localhost es la máquina desde la cual se permitirá acceder, y password es la clave que asignaré a este usuario. Esos parámetros los pueden cambiar según lo requieran.

Si aún no pudieran acceder a la base de datos desde las máquinas a las cuales dieron los permisos, editen el archivo my.cnf , normalmente ubicado en /etc/mysql/my.cnf , de la siguiente manera:

  • Encuentren la línea que dice skip-networking y coméntenla (con un # al comienzo).
  • Hagan lo mismo con la línea que dice bind-address .
  • Reinicien el servicio de mysql ejecutando:
    sudo /etc/init.d/mysql restart
  • Y prueben.
Suerte.

martes, abril 24, 2007

How to: Servlets & JNDI

Nota: Contenido altamente técnico 0% recomendado para el lector casual de este blog. (Ya escribiré sobre temas más humanos)

Situémonos en contexto:
Estás trabajando en una aplicación J2EE, con multiples capas, y todo lo que el concepto engloba y significa. Por algún motivo le tienes alergia a los EJBs, y prefieres ser tu mismo quien maneje la persistencia, ejecutando las consultas SQLs "casi a la antigua". Así te ahorras los dolores de cabeza de Hibernate y bicharracos similares, al menos eso dices tu (y yo te creo).

Problema:
Quieres conectarte desde un Servlet a tu base de datos, pero quieres hacerlo bien, dejando que el administrador de conexiones de tu servidor de aplicaciones (porque estás usando un servidor de aplicaciones de verdad... ¡¿QUÉ?! ¡¿QUÉ ESTAS USANDO TOMCAT?!... ehm... bueno... supongamos que estas usando un servidor de aplicaciones (digo, para que continues leyendo...)) se encargue del trabajo sucio.

Las conexiones están configuradas, sabes que JNDI funciona, pero no hay caso para recuperar la conexión a partir de su nombre. La API del servidor de aplicaciones no te provee de ningún método al qeu le pases un String y te devuelva un Connection, eso no es bueno.

Solución:
Vas a tener que hacer un mapeo de la conexión, de manera de indicarle al contexto de tu Aplicación Web (donde está el Servlet que quieres conectar a la BD), que a partir de un nombre (arbitrario), apunte a la conexión tal como está configurada en el JNDI del Servidor de Aplicaciones.

¿Cómo lo hago?
Fácil y bonito. Tienes que editar el archivo web.xml, que normalmente encontrarás en la carpeta WEB-INF de tu proyecto, y agregar/modificar la sección resource-ref:

DataSource Reference
jdbc/miConexion
javax.sql.DataSource
Container

En el caso del Sun Application Server, ahora GlassFish, deberás también editar el archivo sun-web.xml :

jdbc/miConexion
jdbc/miConexion

jndi-name es el nombre real de la conexión.
Por una cosa de simplicidad sugiero que el mapeo use el mismo nombre jndi, aunque puede darse que tengan algún problema.

Así que eso. Ojala les funcione.

sábado, abril 21, 2007

Ubuntu Feisty Fawn, NVidia & Beryl

Como mucho sabrán Ubuntu 7.04 habemus. Una nueva versión llena de actualizaciones y con una prometedora interfaz de instalación que simplificaría en ciero grado la migración de Windows a Linux. Eso entre un millón de cosas más.

Como los dedos me picaban por instalarlo dejé bajando la actualización de la maravilla, otra de las gracias de Ubuntu es que te permite actualizar el sistema completo con un par de clicks, claro que eso normalemnte exige un trabajo adicional. Y no fue la excepción, tuve que hacer un par de cosillas para volver a tenerlo "a punto".

Antecedentes de hardware (sólo referenciales):
  • Procesador AMD Athlon XP 2100+
  • 1.5 GB de RAM
  • Tarjeta de Video NVidia GeForce4 Ti4200 128 MB
Beryl fue lo único que dejó de funcionar. Y obviamente había que recuperarlo. Paso a paso (mucha línea de comando, no se asusten tanto):
  1. Control + F1 para salir de la interfaz gráfica y entrar a un modo de consola.
    Como el problema estaba en el controlador de la tarjeta de video lo primero es reinstalarlo. Sin embargo para ello hay que considerar alguans cosillas extra:
    1. Haber bajado desde NVidia el driver que corresponde para la tarjeta. En mi caso es el Legacy 9631. El último driver no es compatible hacia atrás (ya hice la prueba).
    2. Desinstalar los paquetes que pueden estar causando problemas, normalmente todos los paquetes relacionados con NVidia, y eventualmente los relacionados con Mesa (que normalmente son fuente de conflictos).
  2. Detener GDM, esto es para poder instalar el driver sin mayores problemas:
    sudo /etc/init.d/gdm stop
  3. Respaldar el archivo de configuración de X. Si Beryl ya les funcionó una vez (eso ya implica que entienden de ejecución de comandos y de dolores de cabeza), la configuración del X no debiera variarles:
    sudo cp /etc/X11/xorg.conf /root/xorg.conf.beryl
  4. Determinar que paquetes son los de NVidia, y los que habría que desinstalar:
    sudo dpkg -l | grep -i nvidia
    Explicación del comando:
    su : Ejecutar como súper usuario
    dpkg -l : Recupera un listado de los paquetes instalados
    | : Envia la salida de un comando a otro. El nombre del caracter es "pipe" (se pronuncia paip) y se traduce a tubería.
    grep -i nvidia : Filtra el listado mostrando solamente los que digan nvidia. El -i es para que el pareo no sea sensible a la capitalización.
  5. Desinstalar los paquetes listados. En mi caso fue:
    sudo apt-get remove nvidia-glx-dev nvidia-glx
    No se preocupen, de haber dependencias relacionadas, apt-get se encargará de eliminarlas.
  6. Eliminar los paquetes de Mesa, análogo al procedimiento seguido para nvidia (ejemplifico con lo que tuve que ejecutar yo):
    sudo dpkg -l | grep mesa
    sudo apt-get remove mesa-common-dev libglu1-mesa libgl1-mesa
  7. Sólo por seguridad eliminar también el paquete xserver-xorg:
    sudo apt-get remove xserver-xorg
  8. Re-Instalar el paquete xserver-xorg (en realidad debo confesar que no recuerdo pq lo desinstalé):
    sudo apt-get install xserver-xorg
    Nuevamente apt-get se encarga de las dependencias.
  9. Instalar los paquetes linux-headers, build-essential, xserver-xorg-dev y gcc, ya que el instalado del controlador de video lo requiere así:
    sudo apt-get install linux-headers-`uname -r` build-essential gcc gcc-3.4 xserver-xorg-dev
    No importa si ya los tienen instalados, apt-get se da cuenta solito.
  10. Instalar el driver NVidia. En mi caso fue ejecutar:
    sudo sh ./NVIDIA-Linux-x86-1.0-9631-pkg1.run
    Y muy a la mala usanza de Windows es básicamente Aceptar, Aceptar, Aceptar... OK, OK, OK... De todas maneras recomiendo leer los textos de la pantalla.
  11. Copiar su antigua configuración de Beryl:
    sudo cp /root/xorg.conf.beryl /etc/X11/xorg.conf
Y listo. Después de reiniciar debiera funcionarles Beryl nuevamente. Ese lo instalan usando Synaptic.

Suerte. A mi me funcionó :)

jueves, abril 19, 2007

Trabajo en equipo

Hace algún tiempo me vine a enterar, prácticamente por rumores de pasillo, que el equipo de mi antiguo trabajo se fue desarmando poco a poco. Primero se fue la secretaria de recepción, una semana después me fui yo. Tiempo después otro buen compañero se fue también, y al poco tiempo otra de las personas del área de desarrollo fue despedida. El área comercial tuvo un par de cambios, gente que se fue, gente que se movió a otros cargos.

Ahora que lo pienso fue el momento preciso para haberse cambiado.

En aquel entonces, trabajé en equipo, pero el destino y la poco visionaria gestión de los escalones superiores en la pirámide, determinó que terminara trabajando solo. Terminé siendo mi propio equipo, con los pros y muchos más contras que eso significó.
La muerte de Carlitos, la no renovación de contrato de mi amigo Gustavo, y la tardía contratación de Andrea (a quien contrataron solo después de que yo diera aviso de que me iba), fueron factores decisivos. Muy distinto hubiera sido si no me hubieran cargado tanto la mano, faltó demasiada visión.

Al final, se cumplió lo que muchos me mencionaron al saber que me iba, "Los buenos nunca duran mucho aquí y terminan yéndose a trabajar a otras empresas".

Aquí, en mi nueva empresa, el equipo está bien formado. Gente muy capaz, con conocimientos avanzados en la plataforma sobre la que se desarrolla, con un espíritu de equipo. Todos estamos comprometidos (de una u otra manera) con la causa común, y avanzamos hacia el mismo lado.
En este caso es simple, somos pocos, de haber roce entre nosotros, estaría peleada la mitad de la empresa y no es la idea.

Sin embargo somos solo la mitad del equipo formal. La otra mitad, oriunda de una multinacional de cierta empresa de telefonía con una torre muy muy alta, es la cara visible de los proyectos. Y aunque con quienes lidiamos no son tantos, para ellos el concepto de Trabajo en Equipo es sinónimo de "Yo cuido mi culo".

Semanalmente hay un reunión, y se ha vuelto mala costumbre que el día previo SIEMPRE HAY PROBLEMAS. Y empiezan las cadenas de correos repartiendo mierda culpas a diestra y siniestra. Al final nada funciona, todo está malo, no hay nada hecho, no se cumplen los compromisos, esta es buena: "Los insto a tomar conciencia de que no estamos en la senda correcta. Requerimos correcciones importantes en nuestro proceso de desarrollo de SW." y "No es culpa nuestra".

Y supuestamente "somos un equipo".

La clave del éxito del trabajo en equipo es precisamente eso, el TRABAJO EN EQUIPO. Eso implica directamente saber reconocer los errores, logros y responsabilidades de cada parte. Y además implica lo que quizás es más importante, un equipo se apoya, si alguien se cae otro lo ayuda a pararse, no pasa por el lado y le patea tierra a la cara.

Probablemente peque de ingenuo/iluso, pero quiero creer que es un problema puntual de algunos chiitas, o a lo más producto de la mala influencia de las directivas extranjeras, o simplemente la idiosincracia de esta empresa, y que no es inherente a la cultura chilensis.

En el peor de los casos, que junto a los honorables lectores, seamos quienes marquemos la diferencia.



Otra historia medianamente relacionada:

Al margen, un gran amigo me comentaba un día lo que le sucedió en su trabajo. El es constructor civil, lleva a su cargo varias obras y trabaja con muchos maestros de la construcción. Una vez terminada la obra el estaba haciendo trabajo de oficina y le tocó atender a casi todos los maestros. Todos querían hablar con él, a ver si los podía considerar para la obra que se viene. Le resultó curioso como todos querían trabajar con él como jefe. El secreto es la postura del lider.

Tratando de hacer eco de sus palabras (apelando a mi único bit de memoria siempre en cero): "Un jefe no tiene que ser un sargento que solamente dé órdenes, y de mala manera. Un buen jefe debe ser un general, carismático, que organice a las tropas y les asigne las funciones y responsabilidades conforme a las capacidades de cada soldado."

Ese equipo funciona y es ese el perfil de jefe, o incluso de compañero de trabajo, al que le debería admiración.

viernes, abril 13, 2007

Generación de calor

Una de las cosas que apunta derechamente a mi desmotivación para estudiar tiene una explicación bastante compleja. Sucede que vengo trabajando jornada completa hace por lo menos 5 años, quizás un poco más. Me (mal) acostumbré a producir, algo genero aparte de contaminación mental. Y me gusta generar cosas, hacer cosas, PRODUCIR.

En clases pasa algo absolutamente opuesto, que se traduce en la generación de calor. Es cierto, supuestamente uno va a absorber conocimiento,que en el futuro se canalizará en nuestra experiencia y experticia en las materias tratadas. Lamentablemente, al menos en mi caso, salvo las escasas oportunidades donde puedo formalizar algo, o profundizar en cierto tema, el resto del tiempo es volver a ver cosas ya conocidas. Me pasa por haber hecho muchas cosas distintas y estar en continuo movimiento intelectual.

Finalmente todo se termina traduciendo en la generación de calor:
  • Me siento en una silla, y el roce del lapiz con el papel produce calor.
  • Mi trasero sobre la silla produce calor.
  • Mi respiración produce calor.
  • Gastarme en discutir con los profesores y/o ayudantes genera calor.
  • Gastarme en entender las barbaridades que pretende enseñar el interlocutor de turno, genera calor.

En el fondo estoy pagando por un espacio para generar calor. Y todo por dejar tranquilo a un segmento de MI universo con un pedazo de cartón que acredita formalmente que sirvo para loque digo que sirvo.
Un pedazo de cartón al que si le prendo fuego también va a generar calor.

El discurso de que ese cartón es necesario en algunas actividades (constructores civiles, dentistas, médicos, abogados) lo tengo más que claro, sin embargo en mi caso, e imagino que en el de muchos más entre quienes lidiamos con tecnología, nos medimos por lo que hemos hecho más que por el equivalente de nuestro peso en papel.

martes, abril 10, 2007

Energía libre: parte del secreto revelado el Viernes 13 de abril

Hace ya varios meses que la noticia me llamó la atención, junto con muchos interesados en tecnología. Steorn clamaba a voces y gritos haber generado tecnología tal para ser una fuente de energía libre, contrariando todo lo establecido en la 1era ley de la termodinámica.

Hace 3 días anunciaron revelar parte del secreto el viernes 13 de abril. A priori fueron sometidos a una evaluación por parte de la comunidad científica que estuvo dispuesta a desembolsar una no despreciable suma, para ser los primeros en enterarse del detalle de los estudios.

Veremos que es lo que sucede, y los más soñadores esperemos a que sea verdad :)

Más información (o al menos una buena ficción para leer) en:
Vía: Engadget