Esa ridícula función

Viernes, 10 de junio de 2011 Sin comentarios

Después de mucho vuelvo a las andanzas de tirar unas lineas en este blog y con un tema que me está dando vueltas en la cabeza desde hace tiempo y que ésta nota en Montevideo.com inspiró. Los inspectores en los ómnibus de la ciudad. En resumidas cuentas la nota habla de incidentes ocurridos entre inspectores y conductores de ómnibus producto de pasajeros que no tenían boleto. Los inspectores acusan al conductor mientras que los conductores acusan a los pasajeros por olvidarse de retirar el boleto de la máquina una vez pagado el mismo. Todo esto no es más que una absurda y ridícula situación producto de una de las funciones mas absurdas que puedan existir, la de los inspectores de ómnibus.

Hace ya un buen tiempo me preguntaba para que subía ese señor con pinta de agente secreto y actitud de FBI a molestarme en el ómnibus y yo como buen ciudadano aplicado le daba mi boleto el cual con gran parsimonia es analizado y luego milimétricamente cercenado para ser reintegrado a mis manos. Este inaudito hecho se llego a producir, en más de una oportunidad, dos veces durante el mismo recorrido. Pucha me dije, estos tipos si que tienen un laburo gratificante y que aporta un gran valor agregado a la empresa para la que trabajan.

Pero dejando de lado toda ironía y tratando de buscar alguna justificación a su trabajo me pregunté, ¿qué puede controlar un inspector en el ómnibus? Pues hay varias cosas:

  • Que todos los pasajeros hayan pagado su boleto
  • La cantidad de pasajeros que hay en un determinado punto del recorrido
  • La higiene de la unidad
  • El cabal cumplimiento de los horarios

Ahora bien, todos los ómnibus cuentan hoy en día con una máquina que emite los boletos y que por lo tanto cuenta la cantidad que se emiten en cada parada. Además la máquina tienen GPS, por lo que controla los horarios y el recorrido, dado lo cual solo queda por controlar que los pasajeras hayan pagado su boleto y la higiene. Esta última perfectamente puede ser controlada por el largador (ese buen señor que está en las terminales controlando el horario de salida), por lo que nuestro buen amigo el inspector solo tiene que controlar que todos hayan pagado su boleto.

Este último punto es el más interesante, ¿cuántos infractores debería encontrar por mes un inspector para justificar su sueldo? Más aún teniendo en cuenta que si no tenes boleto y sube un inspector te bajas, la probabilidad de que encuentren un infractor es casi nula. Pero como soy un tipo con gran experiencia en inspectores por viajar en una linea tan visitada por ellos, he podido escuchar las mil y una excusas de como perdió el boleto, de porque no lo encuentro y de que se lo llevo mi amigo que pago los dos y recién se bajo. Todas las cuales convencen indefectiblemente al inspector. Jamás vi que el inspector baje a alguien del ómnibus, lo haga pagar un nuevo boleto o similar.

Visto esto, la tarea del inspector es totalmente inútil, el referido caso en la nota de Montevideo.com es una vendetta que le hacen a algún conductor y si las autoridades deciden poner cámaras o alguna cosa por el estilo para controlar la venta de boletos en vez de sacar de una vez por todas a los inspectores sólo estarán  demostrando que tienen mucho menos sentido común de lo que todos suponemos y que definitivamente estamos en manos de quienes no entienden nada.

Categories: General Tags: , , ,

El efecto Murro

Jueves, 31 de marzo de 2011 Sin comentarios

En la actualidad Internet ha copado casi todos los aspectos de la vida de las personas, cada vez son menos los que están ajenos a lo que pasa y cada vez tiene más incidencia en los aconteceres políticos, religiosos y culturales de todo el mundo. Al ser un medio que expone tanta información, es moneda corriente que se publiquen noticias inexactas, expresiones agraviantes o simplemente contenido que pueda molestar o disgustar a alguien, es inevitale. Pero ¿qué podemos hacer al respecto si nos vemos en esta situación?

Hay por supuesto un tema legal en el que no voy a entrar, ya que no es de mi interés en esta oportunidad, sino que me voy a remitir a cuando simplemente lo publicado molesta. El ejemplo práctico que voy a compartir a continuación refiere a las Elecciones de los directores sociales del BPS, para las cuales, como imagino que todos saben, se impulsaron las candidaturas de Homero Simpson y de Charlie Harper. Esas candidaturas molestaron a Murro (presidente del BPS) por diversas razones e hizo lo que nunca ddebería haber hecho, despotricó duramente contra estas iniciativas, logrando exactamente el efecto contrario al que quería, convirtiéndose inmediatamente en el principal difusor de las mismas y dándole una enorme relevancia al hecho y haciendo que captara la atención de diversos medios de prensa.

La iniciativa surgió en el Blog de Pablo Brenner y Sergio Fogel, y las declaraciones de Murro salieron en el diario El Pueblo de Salto.  Las repercusiones no se hicieron esperar y Montevideo Portal y Observa publicaron artículos al respecto.

No se como habrá impactado esta difusión de la iniciativa en el blog de Pablo y Sergio pero no dudo de que haya tenido un enorme impacto. Este humilde blog que no lee nadie (quién va a estar interesado en leer eso) tuvo un enorme crecimiento de visitas

El efecto Murro impactó las estadísticas del blog

Las visitas crecieron enormemente y pasaron de unas pocas decenas a mas de medio millar en los dias previos a la elección y hasta el domingo de la elección. Luego cayeron estrepitosamente al lugar desde nunca deberían haber salido.

Ya sabeis, si hay algo publicado por ahí que no te gusta, lo mejor que podés hacer es mutis por el foro y que la publicación muera con el tiempo, pero si lo comentás, lo difundís, twitteas o compartis en facebook, el efecto Murro atacará con toda sus fuerzas.

Actualización 26-04-2011: Esto se conoce como Efecto Streisand

Elecciones del BPS

Viernes, 18 de marzo de 2011 10 comentarios

El próximo 27 de marzo hay elecciones de Directores sociales del Banco de Previsión Social. No se olviden que son obligatorias y el no voto acarrea multa, por lo que si o si tiene que ir a votar por el único candidato que hay (?).

Bueno para que esto no sea una farsa absoluta, porque a quien se le ocurre hacer una elección obligatoria con un solo candidato, hay un par de opciones mucho mejores que la lista única oficial, y por supuesto, hay opciones y se puede elegir ( lo cual parece muy trivial y razonable a pesar de que la realidad intente demostrar que no)

Ya @sfogel se encargo de proveer la lista de Charlie Harper, pero como no soportaría que en el rubro cachetazo a la realidad haya un solo candidato, porque como ya dije, una elección obligatoria con un solo candidato es una farsa, acá les dejo la lista de Homero Simpson


Así que ya saben, a imprimir y votar !

El psicoanalista – John Katzenbach

Jueves, 17 de febrero de 2011 Sin comentarios

En pocas palabras e pordría decir que es un thriller apasionante con un par de giros inesperados que mantienen al lector atrapado de principio a fin.Muy hábilmente el autor produce un cambio drástico en la historia en el momento preciso, logrando mantener la intensidad al máximo.

La novela cuenta la hsitoria de un psicoanalista que es acosado por una persona de su pasado y lo hace partícipe de un juego mortal. Completamente acorralado en todos los ámbitos de su vida, el psicoanalista se ve forzado a tomar decisiones que nunca hubiese podido tomar de otra manera. Es bastante complicado ahondar en la trama sin revelar hechos atractivos y atrapantes de la historia, que sin lugar a dudas, merece ser leida.

Dinámica, entretenida y atrapante, una novela recomendable que vale la pena leer.

Implementando Observers en Java

Jueves, 10 de febrero de 2011 Sin comentarios

Una aclaración antes de empezar: en Java existe un mecanismo para implementar Observers que requiere que la clase observada extienda Observable. Esto, en algunas situaciones puede ser una limitante ya que no es posible extender mas de una clase. Si por ejemplo, queremos observar una clase que ya extiende a otra, no seria posible incorporar este mecanismo con las herramientas built in de Java sin hacer cambios importantes. En esta situación, la mecanica que se explica a continuación puede ser de utilidad.

En muy pocas palabras, los patrones de diseño son soluciones conocidas para problemas conocidos, un esfuerzo por no reinventar la rueda cada vez que nos enfrentamos a un problema cotidiano en el mundo de la programación. Este patrón se utiliza cuando queremos que alguna entidad, se entere de que algo pasó en alguna otra parte de nuestro sistema. Por ejemplo, supongamos que tenemos una ventana con un cierto listado de datos, como la siguiente:

Carga de contenedores - Observa la actualización

Los datos que la tabla muestra pueden cambiar en función de acciones que se realizan en algún otro formulario de la aplicación que permita el ingreso o edición y el objetivo es que ésta tabla se actualice cuando esos datos cambian sin necesidad de que el usuario que hace uso de ella tenga que explícitamente recargar o refrescar los datos.

Este es un caso típico en que el patrón Observer nos será de gran utilidad y será la tabla de datos quien deberá observar los eventos que ocurran en el formulario de edición.

Además de los formularios para editar y mostrar los datos, la solución constará de dos clases adicionales, una interfase IObserver y una clase que hace de nexo entre las distintas partes que componen la solución y que llamaremos ObserverServer. La interfase IObserver deberá ser implementada por aquellas entidades que están observando a otras y contendrá los métodos necesarios para comunicar los cambios:

public interface IObserver {

public void notifyEvent( String eventName, HashMap parameters );

}

La clase interesada en la actualización de datos deberá implementar el método notifyEvent y deberá suscribirse ante el ObserverServer como observador del evento de actualización de datos. Veamos el ObserverServer para aclarar esta situación:

public class ObserverServer {

 private ObserverServer instance = null;
 private HashMap events;

 private ObserverServer getInstance() {
 if( instance == null ) instance = new ObserverServer();
 return instance;
 }

 private ObserverServer() {
 events = new HashMap();
 }

 public void registerTo( String eventName, IObserver caller ) {
 LinkedList callers = (LinkedList) events.get(eventName);
 if( callers == null ) {
 callers = new LinkedList();
 callers.add(caller);
 events.put(eventName, caller);
 } else {
 callers.add(caller);
 }
 }

 public void fireEvent( String eventName, HashMap parameters ) {
 LinkedList callers = (LinkedList)events.get(eventName);
 if( ! (callers==null) ) {
 Iterator it = callers.iterator();
 IObserver caller;
 while( it.hasNext() ) {
 caller = (IObserver)it.next();
 caller.notifyEvent(eventName, parameters);
 }
 }
 }

Dos precisiones sobre esta clase:

1) La calse es un singleton. Esto es necesario ya que todas las entidades que se comunican a través de ella deben acceder a la misma lista de eventos

2) La lista de eventos se modela como un HashMap (events) que contiene para cada evento una LinkedList con las entidades que esperan ser notificadas cuando el evento ocurra. Esto podría alterarse en función de necesidades específicas.

La clase ObserverServer cuenta con dos métodos, uno para suscribirse como observador de un evento, registerTo y otro para iniciar las notificaciones ante la ocurrencia de un evento, fireEvent.

El método registerTo recibe como parámetros el nombre del evento y una referencia a la clase que debe ser notificada y que implementa la interfase IObserver. El método simplemente agrega la referencia al observador en la lista correspondiente y en caso de que se la primera vez que una entidad se suscribe a dicho evento, creará una nueva lista. Nótese que no hay ningún tipo de control sobre los eventos a los que una entidad se registra. Esto podría cambiar según las necesidades especificas de lo que se está implementando, pero para mostrar el funcionamiento básico del patrón no es necesario agregar tal complejidad al ejemplo.

El método fireEvent recibe como parámetros el evento que ocurrió y una HashMap de parámetros relativos a dicho evento. En este caso, se recorrerá la lista de entidades suscritas al evento y para cada una de ellas se invocará el método notifyEvent. Nuevamente, aqui no hay ningún control que verifique que el evento sea válido. Quien dispara el evento y quien está suscrito a él deberán acordar los parámetros que se envían en el HashMap. El ObserverServer solo actúa como vehículo para la comunicación y no impone ningún tipo de restricción a los parámetros.

Veamos escuetamente como se usa todo esto para algo útil

Nuestro formulario de despliegue de datos quiere ser notificado cuando los datos cambian para mostrar la nueva realidad, por lo que va a suscribirse a un evento de notificación en su constructor


public class ContainerList implements IObserver {

private ObserverServer obs;

public ContainerList() {

obs = ObserverServer.getInstance();

obs.registerTo("ContainerUpdate",this);

}

...

public void notifyEvent( String eventName, HashMap parameters ) {

if( eventName.equals("ContainerUpdate") ) {

...

}

}

}

El formulario que muestra los datos se suscribe al evento ContainerUpdate y pasa una referencia a sí mismo. Cuando el evento ocurra, el ObserverServer invocará el evento notifyEvent el cual implementa la actualización de datos necesaria.

La otra parte de esto, el formulario de edición de datos deberá avisar cada vez que una modificación ocurrra


public class FrmContainerUpdate() {

public ObserverServer obs = ObserverServer.getInstance();

...

private SaveData() {

// Proceso los datos del formulario como normalmente lo haría

// y notifico del evento

HashMap params = new HashMap();

params.put("containerId",id); //Agrego todos los parametros necesarios al HashMap

obs.fireEvent("ContainerUpdate", params);

}

De esta manera, cada vez que ocurre una actualización de los datos de un contenedor, la tabla de datos es actualizada.

Este patrón es útil en una gran cantidad de situaciones que las que se quiere comunicar a varias entidades, sin embargo, no debe ser confundido con un mecanismo para la comunicación entre procesos en el que existe un flujo de información más o menos continuo, para eso existen otras herramientas.

Pet Sematary – Stephen King

Martes, 1 de febrero de 2011 Sin comentarios

Pet Sematary

Gracias al Kinle hoy comento este clasico del horror de Stephen King (y es la última vez que le agradezco ya que solo por raras excepciones nada va a ser en formato árbol muerto). Un clasico del horror ochentoso, que me resulto bastante entretenido. Una historia de horror bastante psicológico y totalmente apartado del morbo del horror actual al que Hollywood nos tiene mal acostumbrados. Es probable que a principios de los ochentas a los distraidos lectores se les helara la sangre cuando leian estas cosas, pero hoy no asustan a nadie. Esto no es para nada un demerito de la novela sino una consecuencia del paso del tiempo.

No he incursionado mucho en el género del horror así que es muy difícil comparar (más allá de que las comparaciones son odiosas) pero bien podría hacer caer esta novela en la montaña de las recomendadas para las vacaciones o esos momentos en los que tan solo el objetivo es recrearse un rato con una lectura amena, sencilla y que aporta un poco de entretenimiento. La historia es completa, no deja cabos sueltos y todo pasa por algo, está muy cuidada y el autor no dejó nada librado al azar. Recomendable.

Categories: Libros Tags: ,

El símbolo perdido – Dan Brown

Miércoles, 12 de enero de 2011 Sin comentarios

El Símbolo Perdido - Dan Brown

Ya había leído otros libros de Dan Brown (El código Da Vinci y Angeles y Demonios) y me resultaron entretenidos, por lo que habiendo conseguido El Símbolo perdido no lo esquivé y en sus páginas me sumí, sin muchas esperanzas ni grandes expectativas… por suerte. Creo que el autor está esperando una nueva película y en vez de un libro escribió un guión cinematográfico al mejor estilo Hollywood y tremendamente alejado de la literatura.

La historia está cargada de toda la parafernalia habitual de las novelas de Brown y maneja de manera bastante astuta elementos superficialmente conocidos por todos para crear una ilusión que está entre la realidad y la ficción, plagada de historias y lugares reales que no permiten distinguir claramente donde está el límite entre la novela y la realidad. Más allá de eso, que es moneda corriente en sus novelas y ya explotó hasta el cansancio, el libro no aporta nada. No dista en nada de una película, son escenas breves e intensas que muestran una pequeña cosa para plantear mas dudas. Breves descripciones, breves diálogos, breves explicaciones una tras otras, página tras página para finalmente tener una novela que es más de los mismo.

Para el que quiera una novela livianita livianita, ahí hay una, pero que no espere mucho más si ya leyó las anteriores.

Y ahora, repita diez veces conmigo, “debo seleccionar mejor los libros que leo”

Categories: Libros Tags: , ,

DFW 2010

Lunes, 27 de diciembre de 2010 Sin comentarios

Un picadito de fotos del último viaje a DFW… espero les guste

Categories: Fotografía Tags: , , ,

Review del Kindle

Lunes, 27 de diciembre de 2010 Sin comentarios

Kindle en su cajaDespués de dos semanas usando el Kindle creo poder tirar unas primeras impresiones tanto del cacharro como de los ebooks y la tecnología de tinta electrónica que tan de moda están. Lo que finalmente me llevó a escribir este review fue la pregunta de un amigo ¿cuánto te llevó adaptarte? y ahí es donde está la magia de estos aparatos, el tiempo de adaptación es de cero segundos. Una vez que uno lo tiene en las manos, lo prende y empieza a leer. El aparato logra por completo su objetivo de no interponerse entre el lector y el libro. Y tanto es así que casi no existió ese período tan adrenalínico que suelen generar los cacharros nuevos en el que te pones a probar todas las funcionalidades y ves como llevarlo al límite. Inmediatamente ocupó el lugar que antes tenía el libro en formato árbol muerto y ahí está, descansando en su funda hasta que le llega el momento de entrar en acción.

Me bajé e instalé el Calibre para cargar libros y manejar las colecciones desde la computadora y la experiencia fue muy buena. Hace una buena combinación con el Kindle y supogo que con cualquier otro ebook, ya que soporta la gran mayoría de los dispositivos populares.

Ya había probado un Sony hace un par de años y la pantalla me había parecido magnífica. El Kindle no se queda atrás ni un poquito, visualmente es como leer en papel, incluso después de muchas horas leyendo, no se me cansó la vista (y eso que soy quisquilloso para eso). El WIFI funciona estupendamente bien y la experiencia de comprar el la Kindle Store es fantástica. Tiene varios chiches interesantes a los cuales no les he dedicado mucho tiempo ya que casi siempre que lo tengo en las manos es para leer.

Es un gran compañero de viaje y si te subis a un avión en primera clase no te puede faltar (y lo se porque hay que atravesarla cuando te dirigis al gallinero barato).

Cometas en el cielo – Khaled Hosseini

Sábado, 13 de noviembre de 2010 Sin comentarios

Agarré esta novela por recomendación ya que la había visto varias veces en el estante pero no me había llamado la atención. No conocía al autor y no había nada de ella que me atrajera, hasta que me dijeron que el autor era afgano (no lo conocía) y que la novela reflejaba mucho de la idiosincrasia y costumbres del lugar. Creo que eso fue lo único que me invitó a leerla.

La historia está buena, tiene sus vueltas de tuerca y está bien pensada. Una novela buena digamos. Sin embargo lo que más me atrajo fue el reflejo de las costumbres y la forma de pensar y actuar de los personajes. Si bien la novela no se centra para nada en ello, leer entre lineas y ver como las acciones de los protagonistas están influidas por sus tradiciones, por sus costumbres resulta verdaderamente interesante y de cierta manera ayuda a entender porqué son como son y porque actúan como actúan.

Novela liviana, fácil de leer y que hace un buena aporte a la visión que tenemos de aquellos remotos parajes del mundo.

Categories: Libros Tags: , ,