miércoles, junio 30, 2010

Empire Avenue: Jugando a vender acciones

La nueva moda del momento Empire Avenue, es un sitio donde uno hace transacciones como si estuviera comprando acciones en la bolsa. La verdad es que aún no termino de entender bién como funciona, pero aquí estamos jugando a comprar y vender.

Veremos cuanto dura la fiebre del EA.

EAVB_ETGOTFUQDH

martes, junio 29, 2010

Plataforma telefónica

Hacia tiempo que no aparecía por aquí, pero hoy lo amerita. Les copio un reclamo de aquellos a un plataforma de una empresa de telefonía, internet y televisión, de 3 letras. A ver cuanto se demoran en dar una respuesta:
"Estimados señores.

Hace días que vienen llamando desde su plataforma comercial a mi teléfono en horarios poco adecuados (después de las 9 de la noche). El problema es que además de la llamada "a deshoras", nadie responde y cortan la llamada al escuchar una respuesta, situación, dado lo reiterado, que se vuelve cada vez más molesta.

Por ello 2 preguntas:
1.- ¿A qué número telefónico canalizo mis reclamos por atención? Me indicaron desde su callcenter que ya no toman reclamos vía telefónica, lo que me parece sumamente irregular.
2.- ¿De qué manera puedo ser eliminado de sus bases de datos, y de aquellas asociadas a la misma, para que no me llamen más? En este momento cuento con todos los servicios que deseo tener con ustedes, y la verdad es que siempre he preferido ser yo quien me acerque a ustedes para contratar nuevos servicios en vez de que me llamen.

Finalmente les solicito que supervisen de mejor manera a su personal del call center, puesto que no están tipificando las llamadas como corresponde, y por consiguiente tampoco están atendiendo a sus clientes como corresponde, ofreciéndoles una solución o una vía de solución a los problemas que se les informan.

Espero den pronta solución a este tema, de lo contrario me veré en la obligación de elevar este reclamo a las autoridades correspondientes y barajar la posibilidad de cambiarme de compañía proveedora de servicios."

sábado, mayo 22, 2010

Competencias

Iba a hacerlo una frase aún-no-tan-célebre, pero en realidad es complicado resumirlo en una sola frase.

Hacía un análisis de ciertos personajes que me tocó conocer, y recordé a uno en particular por el cuál hemos sacado más de una moraleja, partiendo por seguir los sabios consejos de Michael Corleone:
"Dinero y amistad... agua y aceite."

Aplicable también a hacer negocios con la Familia.

Es de aquellas celebridades con muchas competencias, entre ellas también muchas competencias técnicas. Sin embargo son muchas menos de las que él cree tener. Lo peligroso de esto es que ante ojos inexpertos esto no es evidente, y lo más peligroso aún es que le creen ciegamente.

Regalo útil: Unos cuantos kilos de humildad.

jueves, abril 08, 2010

Luchas de poder

"Con gran poder viene gran responsabilidad" Benjamin Parker (tío Ben), Spiderman

Las luchas de poder, si bién es cierto nos pueden generar algún tipo de aversión, nos han acompañado desde lo más remoto de nuestra existencia. Por ejemplo, entre los cachorros de perro, es el más fuerte/bravo el que come más. Similarmente en nuestra más temprana infancia es altamente probable que nos hayan justificado alguna decisión que ahora consideraríamos arbitraria con el sabio argumento
"¡¡Porqué soy tu padre/madre, y punto!!".

Una vez en una reunión de trabajo ví como quien lideraba la reunión hacía callar a uno de sus subditos subordinados, que obedeció con la cola entre las piernas,
"¡Silencio, estoy hablando YO!"
Claramente a pesar de sus jinetas y credenciales, tal personaje desconoce el buen manejo de las interrupciones.
El tema clave es el respeto y la autoridad, una lucha de poder parece surgir cuando el líder de la manada tiene que hacerse escuchar, cuando se le vuelve una NECESIDAD demostrar que es ÉL efectivamente el líder de la manada. Es la necesidad de marcar el territorio,
"¡Aquí mando yo!"

Pero ¿es acaso el temor a perder el liderazgo lo que inicia las luchas de poder?
Probablemente lo sea, aunque en la mayoría de las situaciones es simplemente alimento para el ego, sobretodo en aquellos casos donde la autoridad y respeto NO son el producto ni del buen trato, ni del carisma, ni de la capacidad intelectual, ni de la admiración generada, ni de la meritocracia.

Y cuando elucubramos acerca del porque nos juzgan o crucifican, tenemos una tendencia a caer en darnos sobre-importancia. A ojos de estos supuestos líderes somos simplemente una insignificante hormiga más en el hormiguero, y no le darán mayores vueltas al asunto, al menos no tantas como nosotros.

Pero si la causa es justa y los argumentos son sólidos, los supuestos líderes DEBEN temer. El poder de estos "líderes", poder amparado sobre el miedo que muchos interpretan equivocadamente como respeto, ES FRÁGIL.

"Si vas a pelear ¡GANA!" Señor Miyagi, Karate Kid I

Puede que no ganemos todas las batallas que decidamos pelear, pero que eso no nos desaliente pués si decidimos entrar seriamente en una lucha de poder es porque sabemos que el adversario saldrá herido de gravedad. Claramente el concepto de guerra es figurativo, las mejores armas no son físicas sino intelectuales, argumentos sólidos que puedan derribar todo aquello con que nos quieran atacar.

Y sobre cada supuesto líder SIEMPRE hay un líder auténtico, quien será el aliado inesperado en este tipo de luchas de poder.

Las luchas de poder son como el ajedrez, el vencedor no es quien tiene las piezas más fuertes, sino quien ha sabido usar los recursos de los que dispone, el mejor estratega. Y salvo evidentes oportunidades, el vencedor no se puede determinarse hasta que se hayan jugado todas las piezas.

Sin importar la lucha que decidamos emprender, y sin importar el resultado, seremos referente y motivo de orgullo para nuestros aliados, por el sólo hecho de atreverse a enfrentar a aquél/aquellos a quien todos temen.

Si bien se lee como discurso anárquico, terrorista, contra autoridad y anti-sistémico, sentí la necesidad de escribirlo a modo de desahogo por un tema puntual que espero se resuelva de buena manera. No se puede pedir que quienes nos juzgan compartan nuestros criterios, pero no se trata de quien grita más fuerte o quien golpea más fuerte la mesa, se trata de lo justo bajo criterios y parámetros objetivos. Y para eso no vamos a gritar más fuerte, ni siquiera a gritar, sino simplemente a escoger a la REAL autoridad más adecuada para exponer el tema.

Original en: http://cronicasdelaisla.blogspot.com/

miércoles, marzo 31, 2010

Mi blog y el lucro

Yo no lucro con este blog (aún), de hecho el índice de visitas no es ni siquiera considerable, y debo conformarme con los escasos 3 o 4 lectores habituales que pasan por aquí.

Si usted busca lucrar usando mi blog como trampolín, ya sea respondiendo un artículo promocionando sus servicios, o simplemente poniendo un enlace a su sitio Web, por lo menos tenga la decencia de solicitar mi autorización. Es más, incluso puede que les otorgue un espacio exclusivo.

Cualquier publicidad no solicitada ni autorizada será eliminada. Fácil y bonito, para bien o para mal, este es MI blog, por lo tanto se juega con MIS reglas.

Y si no le gusta tomo mi pelota y me la llevo a mi casa :-)

jueves, marzo 25, 2010

Construcción masiva de consultas SQL desde una consulta SQL

Nota: Como ha sido habitual desde mis últimos artículos, y para que los que misteriosamente me leen sigan creyendo que trabajo en mis horas laborales comprendan lo difícil de las labores que desempeño, he aquí otro problema técnico y su correspondiente solución.
Nuevamente, si no le interesa el tema, simplemente pase a saludar, y será retribuido con mi eterno agradecimiento temporal.

Supuesto a priori: El lector tienen mediano entendimiento y nociones de SQL.

Problema: Se tiene cierta información distribuida en 2 tablas distintas dentro de una base de datos y se desea hacer un cruce de esta, actualizando los datos de la tabla 1 con ciertos datos de la tabla 2.
En el caso particular de la problemática enfrentada, se tiene la codificación estándar de enfermedades y se desea agregar una sup-clasificación que permita agruparlas según ciertos criterios, también estandarizados.

Solución: Lo más lógico sería hacer un update utilizando los datos de un select. El problema es que la consulta arroja más de un resultado.
Por ello se debe recurrir a la segunda opción, que es construir los updates necesarios a partir de los resultados del select que entrega la información que se va a actualizar.

Para ello:
  1. Rescatar la información desde las tablas correspondientes hacia un archivo, ejecutando:
    psql -h servidorbasedatos -U usuariobasedatos basedatos -c 'select tipodiagnostico.idtipodiagnostico, care_icd10_bg.diagnosis_code from care_icd10_bg, tipodiagnostico where substring(care_icd10_bg.diagnosis_code, 1, 3) between tipodiagnostico.rangoini and tipodiagnostico.rangofin' -t > archivo_resultados.txt
    Notar la sutilezas:
    • -c indica al comando psql que ejecute la consulta SQL escrita entre las comillas simples.
    • -t indica que el resultado de la ejecución sea presentado sin las cabeceras que indican los nombres de las columnas involucradas.
    • Dentro de la consulta la llamada a la función substring se asegura que los códigos de diagnóstico se encuentren dentro de los rangos expresados en la tabla tipodiagnostico. Al respecto, los códigos de diagnóstico se representan con 3 caracteres . Hay casos particulares en que este código va precedido por un punto y otro código numérico, o un signo de suma, o un asterisco. dado que los rangos están expresados sólo en 3 caracteres, es necesario usar la función substring.
  2. Construir los updates que sea necesario ejecutar. Para ello se debe ejecutar el toxi-comando:
    cat archivo_resultados.txt | awk -v q="'" -F'|' '{ gsub(/[[:space:]]*/,"",$1); gsub(/[[:space:]]*/,"",$2); print "update care_icd10_bg set type =", q $1 q, " where diagnosis_code=", q $2 q, "\;" }' > archivo_consultas.sql
    Las sutilezas de esta maravilla de la concatenación y del copiar-pegar:
    • -v q="'" le indica al comando awk que el caracter comilla simple (que tantos dolores de cabeza nos da cuando lo queremos usar dentro del awk), sea representado por una q. La otra solución es usar \x27 como caracter al escribirla, pero al menos a mi me resulta más clara la q.
    • -F'|' le indica al comando awk que el caracter pipe (|) es el separador de campos, para cada línea a procesar. Esto es debido a que la salida del comando psql entrega resultados como:
      207 | A01
      207 | A01.0
      207 | A01.1
    • Dentro de la secuencia de instrucciones awk, la función gsub(/[[:space:]]*/,"",$1); aplicada sobre $1 y $2 se encargará de eliminar los espacios sobrantes en $1 y $2 (207 y A01 en el ejemplo).
    El resultado de la ejecución de este comando es algo como:
    update care_icd10_bg set type = '207' where diagnosis_code= 'A01' ;
    update care_icd10_bg set type = '207' where diagnosis_code= 'A01.0' ;
    update care_icd10_bg set type = '207' where diagnosis_code= 'A01.1' ;
  3. Ejecutar la consultas recién creadas, ejecutando:
    psql -h servidorbasedatos -U usuariobasedatos basedatos -f archivo_consultas.sql
  4. Y esperar. Utilizando la base de datos de códigos de diagnósticos de http://www.care2x.com/ , se deben actualizar del orden de 13 mil registros lo que en una máquina medianamente actualizada (Athlon x64, 4GB de RAM) se demora alrededor de 2 minutos.

Y eso sería. Que les vaya bonito.

martes, marzo 23, 2010

No funciona el ssh -Y (X11 forwarding)

Nota al lector casual: Si su interés no es netamente técnico o si no entiende el título del artículo, se le recomienda pasar a saludar.

Problema: Le dieron acceso a un servidor vía SSH y necesita abrir un programa, digamos el navegador Firefox para configurar algo de manera local (a ese servidor). Por mucho que lo intente y que setee las variables de ambiente (emulando las de otras máquinas donde si funciona) sigue sin funcionar:
[root@localhost ~]# firefox
Error: no display specified
[root@localhost ~]# export DISPLAY=localhost:10.0
[root@localhost ~]# firefox
Error: cannot open display: localhost:10.0
[root@localhost ~]# firefox --no-remote
Error: cannot open display: localhost:10.0

Solución: Ejecutar la conexion ssh de la siguiente manera
ssh -XYv root@ip.servidor.ajeno
y analizar la salida
... muchas líneas ...
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: Sending environment.
debug1: Sending env LANG = es_CL.ISO-8859-1
debug1: Remote: No xauth program; cannot forward with spoofing.

Interesante: Parece que falta algo.
Así que procedemos a conectarnos nuevamente y a instalar el paquete xauth.

Nos desconectamos y tratamos nuevamente.
Debiera funcionar.