Música en espera

Anoche fui a ver Música en espera. Le tenía fe por los actores, tenía muchas ganas de ver a Norma Aleandro otra vez en una comedia romántica, y Diego Peretti es un actor que me gusta mucho. ¿Natalia Oreiro? Es hermosa :) Y hace rato que demostró que actúa mucho mejor de lo que canta, y que es más que una actriz de telenovela de las 3 de la tarde.

Pero... fue una comedia más. Diego no se luce, tampoco Norma, la historia es bastante previsible, no tiene tantos momentos graciosos como esperaba, y que se yo... si de comedia romántica argentina se trata, me gustaron mucho más Motivos para no enamorarse o Un novio para mi mujer, o ¿Quién dice que es fácil?.

En fin.

Ahora, el rant:

Encima maldije a las salas Ambassador por haber pagado $16.- para ver la peli en las condiciones que la vi. La película se proyectaba en la sala 4, que está arriba, junto a la sala 3. Es OBVIO que otrora, en épocas de las salas de cine enormes, ambas salas eran una sola, y fueron divididas luego para ganar una pantalla más. La división es un tabique. El imbécil que la hizo aparentemente no tiene idea de conceptos como insonorización y/o aislación acústica, y toda la maldita película se escuchaba de fondo el sonido de la peli y las risas y "oh! ah!" del público de la sala 3. Mal.

Y para completar el cuadro, la pantalla, además de ser chica, no la aprovechan del todo (sobraba un tercio, por lo menos), y ni siquiera se toman la molestia de calibrar bien el proyector, de manera que la imágen en lugar de ser un rectánculo era un trapecio. ¡Un desastre!

Note to self: NUNCA más vuelvo a pagar una entrada a precio "pleno" (i.e., sin descuento) en las salas Ambassador de Mar del Plata.

Sigo preguntándome por que mierda si hay 3 o 4 calidades de salas, no hay 3 o 4 rangos de precios de entradas. Tal vez... tal vez... porque el 90% del dinero se lo lleva ese invento idiota anacrónico de "la distribuidora", y a pesar de que la entrada es carísima, el dinero no es para la sala (ni los actores, ni el equipo técnico / artístico, etc.), y los márgenes con los que trabajan las salas son chicos. Pero bueno, que se jodan... las salas y sus dueños fueron partícipes de la creación del monstruo, al menos con su indiferencia.

¿Algún día el negocio del cine se dará cuenta que ahora que no hay que llevar los rollos de film en carreta de un pueblo a otro, el negocio de la distribuidora está solo para llevarse la plata sin hacer NADA? Es tan ridículo... es el mismo anacronismo de las discográficas. En fin.

Después se rasgan todos las vestiduras porque el público elige bajar una peli o un disco de internet, y escucharlo cómodamente en su casa.

Trilogía Millennium, I y II

Varias semanas atrás un libro comenzó a llamarme la atención en los escaparates de las librerías, por su título y el diseño de portada: La chica que soñaba con una cerilla y un bidón de gasolina.

Finalmente un día buscando libros, me decidí a hojearlo. Resulta que el autor es Stieg Larsson, sueco, quien murió trágicamente apenas terminó de escribir la trilogía Millennium, de la cual este libro es la segunda parte. La primera, es Los hombres que no amaban a las mujeres. Ese libro ya lo había visto el año pasado, pero vaya uno a saber por qué, no me despertó ninguna curiosidad. Supongo que pensé que era un libro de autoayuda o de psicología barata o algo así.

La tercera parte, La reina en el palacio de las corrientes de aire, aún no se publicó; luego de leer también la contratapa de la parte 1, agarré los últimos "cheques Cúspide" que tenía, agregé algo de efectivo, y me fui con los dos ejemplares.

Anoche terminé de leer la segunda parte. Ambos libros están muy muy muy buenos, y el segundo tiene un final bastante abierto, así que ahora voy a cortar clavos hasta que publiquen la parte 3. Este es el segundo autor sueco que leo, y me resultó buenísimo. La novela mezcla suspenso, espionaje, enredos financieros, periodísticos, familiares, sadismo, violencia... sí, un colage muy particular.

Me encantó el personaje de Lisbeth Salander, me encantó la narrativa; especialmente en el segundo volumen cuando de pronto la historia avanza desde el punto de vista de uno de los protagonistas, y luego el autor vuelve atrás para contar lo que pasaba mientras tanto con el otro. Eso le da un suspenso bastante original.

La buena noticia: Martin Lexell y Juan José Ortega Román hacen una muy buena traducción, lo cual fue una gratísima sorpresa. Sí, el libro tiene bastantes "españolismos", pero no tantos. Y no la cagan en otros aspectos, por ejemplo, hay notas al pie y notas de los traductores cuando corresponde. Se ve que en el original el autor hizo que los personajes tiraran muchas frases en inglés, por ejemplo, algo muy común en cierto segmento de la sociedad sueca, y al traducir la novela al español mantuvieron eso, sin traducir el inglés o intentando hacer alguna boludez que termina en un enchastre en el que a lo mejor se pierde el tono o la gracia o algún juego de palabras o algo así. La editorial es Destino, y acá está editado por Emecé. A todos los involucrados, ¡gracias por no arruinar la novela al traducirla! (y que pena que esto sea la excepción, y no la regla...)

Mucho del libro trascurre en Estocolmo, y fue muy grato pasear por esa ciudad otra vez a medida que leía la novela :)

Es una pena que Stieg Larsson nos haya dejado... primero porque nos vamos a ver privados de otras novelas suyas. Además, porque aparentemente fue un periodista y reportero de guerra muy reconocido, con amplia experiencia en grupos de extrema derecha, nazismo y sus conexiones con el poder político y financiero (experiencia que dicho sea de paso se refleja en Millennium).

Ahora... a esperar Millennium III.

Hay tabla

Hay tabla

Hay tabla

  • Si programan sin hacer testing, hay tabla.
  • Si no comentan el código, hay tabla.
  • Si no respetan los estándares, hay tabla.
  • Si se quejan de la performance, hay tabla.
  • Si preguntan boludeces, hay tabla.
  • Si cuelgan el servidor con un loop infinito, hay tabla.
  • Si reportan el mismo error dos veces, hay tabla.
  • Si me hacen laburar un fin de semana, hay tabla.
  • Si los casos de uso no están bien escritos, hay tabla.
  • Si no versionan, hay tabla.
  • Y si preguntan por esto, hay tabla.

Gracias Seba por el original!

BTW, habría que hacer una gigantografía, y colgarla en un par de lugares...

Una semana en MDQ

Antes que nada: en las últimas semanas hablé y escribí y mandé mensajes sobre MDQ, y más de uno preguntó que era. MDQ es Mar del Plata. Es el código aroportuario internacional (según IATA) de Mar del Plata. ¿Por qué es MDQ y no MDP? No se... quizás porque MDP ya existía para otro aeropuerto. Che... pero que complicado, ¿por qué no decís Mardel, "la feliz", MDP, o sencillamente Mar del Plata, así todos te entendemos? Eeeehhh... no se. En el laburo empezamos a hablar de MDQ, y para todos fue re-claro que MDQ era Mar del Plata. Y hasta que no empecé a encontrar mucha gente a la cual MDQ no le decía absolutamente nada, o que solo asociaba la sigla con el programa de TV (¡bingo! ¿adiviná por qué el programa se llama MDQ? Pista: Fijate donde nacieron los conductores, y donde nació el programa...), que no me di cuenta que no era tan obvio. Y resulta que acá en la jerga turística se le dice tanto MDP como MDQ, pero parecería que lo primero es más común.

Anyway...

Hace una semana que estoy en MDQ. So far, so good. Obviamente una semana es muy poco tiempo para tomar contacto con una ciudad tan grande. Además, la realidad es que todavía no me cayó del todo la ficha. Tampoco he tenido tiempo de extrañar demasiado, por un lado porque estuve ocupado, y por otro, porque digamos que un tipo tan desapegado como yo necesita algo más de tiempo para extrañar. Y tampoco puedo hacer demasiado balance sobre el laburo, porque estas dos semanas fueron acomodarse, y seguir armando el plan de capacitación para la gente, que recién empieza el lunes 13. Así que estas semanas no fueron una muestra de lo que vendrá en cuanto al laburo en sí.

Pero hasta ahora, todo bien. La zona en la que están nuestras oficinas es muy linda. Estamos a pasos de la calle Güemes, una zona comercial relativamente nueva, alejada del centro, donde están todas las "primeras marcas" (si no tenés tu local sobre Güemes, NO EXISTIS, gordo!), y muchos boliches para comer y tomar algo, con una onda entre joven y familiar (según el día y la hora). No es la zona más barata (especialmente para comprar pilchas), pero es muy cómoda, alegre, hay mucha vida, tiene onda, y un poco de conchetaje, sí, pero tolerable... mi conchetómetro no se va de escala como cuando camino por Recoleta o algunos lugares de Belgrano, por ejemplo. Y creo que el conchetaje se debe más a ciertos turistas que a otra cosa.

Estoy viviendo en un departamento exactamente a la vuelta de la oficina. Eso está buenísimo. Hace varios años, cuando recién me mudé a Capital, mi casa quedaba a 5 cuadras del laburo (en rigor, mi casa sigue estando en el mismo lugar, je... pasa que cambié de laburo), y era muy cómodo. Estar a 150 metros, es aún más cómodo :) Llego temprano y todo! La zona es también una linda zona para vivir, porque en cuanto te alejás un toque de Güemes (estoy a una cuadra), empezás a tener ambiente de "barrio", y es bastante tranquilo. Y para alguien que no tiene auto, es una zona en la que al toque tenés comercios para comprar lo que sea, supermercado Disco muy bien provisto incluído.

El departamento es lindo. Es un poco más amplio que el mío. Es bastante luminoso. Tiene, como todo departamento que normalmente se alquila por temporada, y lo usa gente que está de paso por 15 o 20 días, y de vacaciones en estado mental "me chupa todo un huevo", muchos detalles. Podría estar más cuidado, mejor mantenido, más equipado... La decoración no ayuda; en mi opinión, es bastante "cutre" como dirían los españoles, pero bueno, sobre gustos, no hay nada escrito. Dejando todo lo que sea estético a un lado, las cosas que más "extrañé" esta semana: El microondas (no hay), el lavarropas (no hay), mi cama de 2 plazas (las camas son de una plaza, y los colchones, bastante viejitos), la tele con cable (eso estamos en vías de arreglarlo). En rigor la tele no la extrañé tanto, básicamente porque las series que sigo las sigo por internet, y porque no tuve demasiado tiempo de estar al pedo y querer hacer zapping... pero a la primera tarde de domingo lluviosa y fría se que la voy a extrañar ;)

Que el living-comedor sea amplio y casi no tenga muebles tiene una ventaja: Si corro la mesa, casi casi puedo hacer la forma completa de taichi sin tener que estar parando y reacomodándome cada dos pasos porque llegué a una pared o me dí contra un mueble. Idem con la parte que se hasta ahora de la forma de sable (me traje el sable de práctica, ¡gracias Fanny!) Lo cual va a ayudar a que cuando a la vuelta retome las clases no me haya olvidado todo. Sí, ya se: "boludo, tenés toda la playa para hacer la forma!". Si piensan que a mi me da la cara para ir a la playa a ponerme a hacer taichi solo, es que no me conocen :)

Lo más molesto hasta ahora resultó ser los vecinos del "C". Es una familia que siempre está discutiendo por algo... si no es el padre con uno de los hijos, son los hermanos entre sí. Nunca escuché a la madre; hasta ahora, por las discusiones y las voces (de cara no los conozco), tengo detectados a papá, hija adolescente, hija pre-adolescente, hijo menor hincha-pelotas. La madre no está, o no se la escucha. A ellos se los escucha todo el día, pero especialmente cuando uno quiere dormir :( Mi habitación da al pulmoncito del edificio (que es chico), y la cocina y el comedor de ellos también. Y se hace un efecto acústico muy interesante. No me dió para abrir la ventana y ponerme a pelear, porque supongo que va a ser para quilombo... pero si muere asesinada una familia por esta zona, manden un buen abogado defensor! :P

Estoy a unas 10 o 12 cuadras del mar, según para que lado agarres. Digamos que se seguís derecho por Güemes, terminás en la costa, a la altura del Torreón del Monje (más o menos). Del centro de Mar del Plata estoy a unas 20 o 30 cuadras... dependiendo de lo que consideres centro, y según vayas por la Peralta Ramos (costanera), o por adentro. A medio camino, a unas 15 cuadras está el típico complejo Casino, Hotel Provincial y los archi famosos Lobos Marinos.

Recién ahora estoy empezando a familiarizarme con las calles principales, y a orientarme un poco. La costa te confunde mucho, porque se va "metiendo" en la ciudad. De pronto tenés dos calles perpendiculares, y las dos terminan en la costa, y eso de entrada confunde, porque uno tiende a querer poner de refencia el mar... y eso es un error. Porque indistintamente podés estar hablando de "hacia el sur de la ciudad" o "hacia el este de la ciudad".

Al centro fui a pata un par de veces, es lejos, pero no tanto, al menos ahora que no hace ni calor ni frío. Igual, ya me fui a sacar mi tarjeta (acá los colectivos andan con tarjeta), y hoy la estrené para ir al cine. El centro "posta" no es tan lindo. La zona del Casino, y los alrededores de la avenida Colón sí, lo mismo que la costanera. Obviamente el mar tiene su magia. Pero cuando te metés en pleno centro, y caminás por la peatonal... es la misma mugre y el mismo quilombo que Buenos Aires. Puede que un toque menos, porque ya no estamos en temporada (aunque la semana que viene es Semana Santa, y eso es temporada alta, y ya se está notando más movimiento que hace unos días atrás). Pero el punto es que el centro de Mar del Plata no me parece más lindo que el centro de Buenos Aires. Sí, ok, caminás 5 cuadras y estás en el mar. Perfecto. El centro de Mar del Plata está mejor ubicado que Buenos Aires, si querés. Pero no lo veo más lindo. Igual, como decía al principio, solo fui un par de veces. No se puede decir que lo conozca a fondo, ni mucho menos.

¿Y como fue esta semana? No hay demasiado para contar. Fui 38 millones de veces al supermercado, por ejemplo. "Arrancar" una casa cuesta (dinero y tiempo). No me llevé prácticamente nada más que ropa y algunos gadgets (¡obvio!) de Bs. As. Y así y todo cuando despaché el equipaje en Retiro me miraron torcido por la cantidad de bultos. Así que de a poco me voy dando cuenta todo lo que me falta. El laburo estuvo tranquilo, por ahora estamos solos con Dani, y los primeros dos días también se trató un poco de "arrancar" la ofi. Ahora Dani tomó la posta con ese tema, y yo estuve dedicándome a preparar la capacitación, y también a hacer algún que otro toque en los proyectos en los que estoy participando. Di varios paseos por Güemes, un par por el centro. Me fui hasta la ofi de turismo a conseguir un buen mapa, y a que me asesoren un poco. Ya tengo la guía de actividades de abril, vamos a ver si en Semana Santa hago algo de mini-turisimo y me dedico a conocer un poco más la ciudad (hay bocha de cosas para hacer, el problema es que esa semana va a haber bocha de gente, también...) Si conocés MDQ y querés proponerme algo para hacer en Semana Santa que sea interesante pero que a su vez te mantenga pseudo-alejado de la locura turística de esos 4 días, dejame un comentario o mandame un mail.

Los marplatenses parecen ser mejor gente que el porteño promedio, lo cual no me extraña :) A los turistas porteños los detectás (y odiás!) al toque. Yo estoy haciendo lo posible por mimetizarme con el paisaje, y para que me vean como un residente y no como un mugroso turista enloquecido irrespetuoso. Mar del Plata es una ciudad grande, pero igual se vive a otro ritmo. La gente se conoce, se saluda, más o menos igual que como en cualquier lugar del país excepto la locura de Bs. As. Así que por ejemplo, tan solo con saludar al colectivero al subir, lo cual es muy lindo (saludar, el colectivero no :P) y no cuesta nada, ya sos un poquitín menos turista de mierda.

Aparte de conocer un poco más, uno de los grandes temas pendientes es comprarme unas zapas para correr (cosa que no hice en Baires), y empezar a correr. Ya me estuve asesorando un poco, ya que el tema zapas no es menor, considerando mis rodillas, y teniendo en cuenta que voy a correr por terreno duro.

Y así, con esta ensalada de ideas y experiencias mezcladas creo que doy por concluida esta primer pincelada de MDQ, que seguro tendrá varios capítulos.

Knowing

Hoy "estrené" una de las salas del complejo Cinema de Mar del Plata (el que está en el Shopping), y fui a ver Knowing. Acá, por esa estupidez que nunca termino de entender de renombrar títulos de películas (y libros) aún cuando el original es perfectamente traducible y tiene mucho más sentido, decidieron llamarla Cuenta Regresiva.

No la tenía en el radar; esta mañana estaba mirando la cartelera, porque andaba con ganas de ir al cine, y justo me cayó un mensaje de Facu sobre Terminator IV, eso originó un intercambio de SMS sobre pelis en cartel y próximos estrenos, y me contó que había ido a ver Knowing, y que de acuerdo a su escala, era +1. Cuando la busqué, y leí la reseña, me acordé que había visto el trailer, y que me interesaba :)

A pesar de que Nicolas Cage la verdad me gusta cada vez menos como labura (y en esta película no es la excepción...), la historia me gustó bastante. Lamentablemente cuando había visto el trailer me había imaginado otra cosa, y me había hecho a la idea de que la historia iba a rumbear para otro lado. Y el 98% de la película no desmintió ese camino que yo había imaginado, así que cuando faltando minutos para el final pegan un volantazo, me sentí un poco decepcionado.

Es como que me contaron una historia (muy buena), y le pusieron el final de otra... no se como explicarlo. La película es una especie de thriller de misterio, y termina como una superproducción de ciencia ficción de Spielberg y George Lucas... y el ensamble entre esas dos cosas choca bastante (bah, a mi me chocó).

Anyway, no deja de ser una buena peli pochoclera. Facu, esta vez igual no coincidimos... en tu escala le hubiera puesto un +0. ;)

Ah! Y las salas del complejo Cinema están bien. No es un Hoyts, ni un Cinemark, ni un Village... pero pasaron la prueba. El sonido está muy bien. La sala es grande, y tiene mucha "pendiente" (como las salas de antes). Todo eso de 10. El único tema es la pantalla... que es un tanto chica.

Peter Gabriel en Buenos Aires - Small Place Tour 2009

¡Fabuloso! Sencillamente fabuloso.

Este concierto superó todas mis expectativas. No se por qué, no tenía demasiadas. Dudé mucho en sacar una entrada o no, en parte porque era una fecha complicada para mi, en parte porque sabía que era un tour local, pequeño, y que Peter no iba a realizar un mega despliegue como el del Growing Up Tour, por ejemplo.

Peter Gabriel

Peter Gabriel

Pero el show estuvo excelente. Peter Gabriel es un músico y artista con todas las letras, innovador, creativo, con muchísima experiencia, convencido de lo que hace... ¿qué más? Sonó bárbaro, se comunicó con su público en español el 99,999% del tiempo (leyendo, y con algunos problemillas de pronunciación, pero, ¿cuántos artistas internacionales se preocupan por hablar con su público en el idioma local, y no solo decir "Gracias"?). La banda es super sólida. Hizo que su hija Melanie se luciera con su voz (y de paso, Peter se babeó un poco, para que negarlo).

El espectáculo fue mucho más de lo que esperaba, en todo sentido. Incluso visualmente, en el escenario, con poquito hicieron un montón para generar el clima adecuado a cada momento. Muy bueno.

Ah! Y para mi fue toda una revelación verlo a Peter Gabriel ensayar pasitos de baile coordinados con el guitarrista y el bajista... jajaja.

Unicamente haría dos críticas, si tuviera que hacerlas:

  • Las pantallas laterales eran muy malas. Muy poco brillo, poco contraste, relativamente chicas, y encima estaban medio sueltas y por momentos flameaban al viento. Realmente desentonaban con el resto, y no se por que sospecho que la encargada de esas pantallas fue la producción local, y no el equipo de Peter.
  • Faltaron algunos temas "de estadio" (como diría Diego). En particular, me quedé con las ganas de escuchar Shock the Monkey, pero hubo un par más de ausencias notables (otra: Don't Give Up). Anyway, hubo para todos los gustos, y también entiendo que es imposible meter toda la carrera de Peter Gabriel en un único concierto.

En síntesis, me fui del estadio super-contento. Gracias Peter.

El grupo soporte fue The Black Swan Effect, y gustaron lo suficiente como para que me haya quedado la curiosidad de conseguir y escuchar más material de estos muchachos.

Antes, la espera estuvo "amenizada" con algunos spots informativos del Fenix Entertainment Group, y un BOMBARDEO, mal, de publicidad del Gobierno Nacional sobre la nueva ley de radiodifusión. Pasaron la publicidad no menos de 100 veces en una hora (y NO, no estoy exagerando), al punto de hartar. Encima, las pantallas como dije no eran de lo mejor, y cuando aún no era de noche, peor, y para mi, fue tirar la plata, porque no se entendía nada, al menos desde la platea alta (y no es solo mi opinión, era un cotilleo generalizado en la platea). Encima, no entiendo cual es la necesidad de bombardearte a razón de dos spots por minuto, promedio. ¿El Gobierno tenía un presupuesto tan grande, que tenía que desperdiciarlo sí o sí? ¿Contrataron tanto espacio porque la tajada del que lo contrató asi es más grande? Me gustaría saber si ayer la previa de Radiohead también estuvo infectada de publicidad oficial...

Configurando Wake on LAN

En breve me voy por trabajo una temporada a MDQ, y entre todas las cosas que tengo que hacer, tengo que decidir que cosas dejo operativas en el depto, y cuales no. La idea es viajar a Baires regularmente (calculo que cada 20 días), con lo cual no tengo intenciones de hacer un shutdown full de mi casa.

¿Qué hago con la PC? Es un tema. Si bien es normal que esté varios días encendida, haciendo de file-server o alguna otra huevada, no me gusta mucho la idea de que esté encendida y desatendida tantos días seguidos. No le tengo confianza a la fuente, ni a los coolers (ya me pasó una vez llegar a casa, encontrar la PC apagada, la fuente quemada, y ese olorcito a "algún aparato se quemó"). Una cosa es que este encendida permanentemente dejándola sola a lo sumo un par de días, y otra dejarla encendida sin saber a ciencia cierta cuantas semanas pasarán hasta que alguien le eche un ojo al depto. La realidad es que hace mucho tiempo tengo pendiente invertir en una PC más nueva, y de paso prestarle atención a la alimentación, la refrigeración, el ruido, y el cablerío infernal que es hoy el escritorio en donde está. Pero eso sigue sin resolverse, y ya no tengo tiempo de resolverlo antes de la partida.

Mi equipo principal de trabajo hoy es la laptop, no la PC, pero la verdad me gustaría saber que estando en MDQ puedo contar con la PC. Por ejemplo, para mantener sincronizados y backupeados regularmente los datos de la laptop. Para tirar algún proceso largo. Para bajarme algún album de mi colección de MP3. Whatever. Entonces, no quiero dejar la PC encendida... pero me gustaría irme a MDQ sabiendo que puedo prenderla en forma remota si la necesito unas horas.

Así que me propuse volver a la carga para intentar configurar "WOL", o Wake-On-LAN, que no es otra cosa que un feature que tiene que estar soportado por el BIOS, la placa de red, el mother y la fuente, y que permite mandar un "magic packet" por la red para prender el equipo.

Alguna vez había intentado configurar esto, sin éxito, pero tampoco le dediqué tiempo. Ahora tenía un motivo para investigar más a fondo, así que me puse manos a la obra. El desafío tenía 3 partes:

  • dejar de usar la placa de red 3com, y pasar a la nVidia
  • hacer que WOL funcione desde la LAN, o sea, lograr encender la compu desde otro equipo que es parte de la red local
  • hacer que WOL funcione desde la WAN (algunos llaman a esto WOW), o sea, lograr encender la compu desde internet

Cambiando 3com por nVidia

Mi mother tiene 2 placas de red integradas. La primaria es una placa nVidia con chipset Realtek, la secundaria es una placa 3com con un chipset Broadcom. Resulta que había una época, hace muuuuuchos años, cuando compré la PC, en que el driver "forcedeth" de Linux (el que se usa para nVidia) no andaba ni pa'tras. Así que hacía rato que usaba la placa 3com. También había una época en que NetworkManager era bastante choto en cuanto a configurar una IP fija y/o a levantar la conexión ANTES de loguearte, así que medio tenía by-passeado a NetworkManager, con una configuración medio mirame-y-no-me-toques que nunca entendí del todo, y tampoco quería tocar porque... bueno, para que tocar lo que anda, ¿no?

Pero resulta que de las dos placas, la que soporta WOL es la nVidia. Fuck. Así que por eso el primer desafío era cambiar de placa de red. De paso, si quieren investigar que cosas soporta cierta placa, se lo pueden preguntar a ethtool:

$ sudo ethtool eth0
Settings for eth0:...  Supports Wake-on: gWake-on: g...

ethtool les va a decir varias cosas. En el ejemplo de arriba dejé solo las salidas relevantes. Supports Wake-on:... está seguido de una seriede flags (letras), indicando todas las opciones de wake up soportadas por la placa. En mi caso, solo soporta "g", que es WOL usando un "Magic Packet" (más sobre esto, luego). La línea Wake-on:... nos muestra, dentro de las opciones soportadas, cuales están efectivamente activas.

Bueno, el tema es que hace una semana hice el cambiazo, y empecé a usar la placa nVidia. Hice este cambio con tiempo para poder testear que todo ande bien. La buena noticia es que los años que pasaron desde la última vez no han sido en vano, y aparentemente el driver forcedeth just works. Y NetworkManager sigue teniendo sus no pocas mañas, pero al menos ahora se puede configurar una IP fija y cambiar de una configuración a otra sin tener que encomendarte a ningún espíritu para que funcione.

So far, so good.

Configurando WOL

Además de tener una placa que soporte WOL, esta configuración tiene que estar soportada por el mother y activada en la BIOS. Por defecto, no lo está. El nombre con el que aparece puede ser bastante críptico, en mi caso, la configuración está dentro de Power Management, y la opción que hay que habilitar es "Power Up on PCI Device". Por otro lado, esto tiene que estar soportado por tu fuente... pero a menos que estemos hablando de una XT no debería ser problema, ya que me parece que alcanza con que la fuente sea ATX.

Por último, si la placa de red no está integrada (i.e., no es parte del motherboard, y es una placa PCI aparte), es muy probable que en algún lado tenga un conectorsito específico de WOL en el cual habrá que chantar un cable que en el otro extremo termina en el conectorsito WOL del motherboard. En mi caso todo esto no existe porque la placa está integrada al mother.

Hasta ahí estamos con el hardware y la BIOS... el siguiente paso, es configurar el sistema operativo.

Primer problema: El soporte WOL no está activo por defecto. Si tiráramos el comando que mostraba más arriba, veríamos el soporte para WOL "g", pero no lo veríamos activo. Hay que activarlo, y que yo sepa, no hay otra que hacerlo vía ethtool:

$ sudo ethtool -s eth0 wol g

(reemplazando eth0 por el dispositivo de red que se desea configurar si fuera otro)

Segundo problema: La activación no es persistente. Cada vez que se reinicia la PC, y el kernel reinicializa el hardware, esa configuración se pierde. Al menos es así con forcedeth. Así que tuve que crearme un pequeño servicio para que active WOL en la placa de red cada vez que se enciende el equipo.

Idealmente, debería haber algo en la infraestructura de networking de Linux para configurar esto, y de manera permanente, y los DEs (por ejemplo, Gnome) deberían brindar alguna GUI para hacer la configuración... pero por ahora hay que ensuciarse las manos :(

¿Y ahora? Si los planetas están alineados, y apagamos la PC normalmente, y desde otro equipo dentro de la LAN enviamos un Magic Packet, la PC debería encenderse.

¿Y qué es eso de un "Magic Packet"? Si quieren detalles pueden leer por ejemplo acá, o googlear sobre WOL, pero básicamente un Magic Packet es un datagrama UDP de 102 bytes (pueden ser más si se configura un password), en el que se envía el byte 0xFF 6 veces, seguido de la MAC address de la placa de red de destino repetida 16 veces (seguido opcionalmente de un password). Hay múltiples utilidades para generar ese tipo de paquetes. Yo me bajé un script en Perl que se llama, en un derroche de originalidad, "wakeonlan" :p, porque es lo que tenía más a mano (está en los repos de Ubuntu).

Y este script, en su forma más simple, se usa así:

$ wakeonlan xx:xx:xx:xx:xx:xx

donde xx:xx:xx:xx:xx:xx es la MAC de la placa de red.

Pero resulta que no andaba, no andaba, y no andaba. Después de MUCHO googlear (no quiero ni sacar la cuenta de las horas que perdí en esto...), y gracias a un comentario reciente en este post de hace mil años de un foro de nVidia, descubrí que forcedeth tenía un bug que hacía que la MAC se interprete al reves. Supuestamente lo arreglaron, pero aparentemente en algún punto se rompió otra vez. Así que si tu placa de red es nVidia, usas forcedeth y un kernel reciente, y tu MAC es 01:02:03:04:05:06, tenés que generar el Magic Packet como si fuera para la MAC 06:05:04:03:02:01. ¿No era OBVIO? :(

La buena noticia es que... ANDA!

Configurando WOW

Hasta acá, debería ser fácil. Si tu hardware lo soporta, si tu BIOS está bien configurada, si los drivers de la placa de red del operativo no fueran una mierda, y si tu SO te facilitara la configuración de esto (en Windows, por ejemplo, al configuración está un poco escondida, pero ESTA, y es persistente), deberían ser un par de clics.

Ahora, querer que esto ande desde internet... es otra historia. Porque ahí tenés que pasar por al menos un router (el tuyo), y si el mismo no es más o menos "de verdad" y no tiene soporte nativo para WOL, vas a tener que recurrir a algún "hack" para convencer al router de que cuando reciba el Magic Packet, se lo pase a la PC.

Mi router es un D-Link DI-524, y es bastante pedorro. No tiene soporte para WOL. Así que hay que empezar a probar trucos. ¿Dónde está la complejidad? WOL funciona haciendo un broadcast. Dentro de una LAN eso está bárbaro, pero desde una WAN, obviamente uno no puede hacer un broadcast al universo. Básicamente tenés que mandar el Magic Packet a tu IP pública. A menos que tengas un servicio con IP fija, primero tenés que resolver como saber en un momento dado que IP te asignó tu ISP. Esa es una historia que tengo resuelta desde hace rato con DynDNS, así que hasta ahí, todo OK.

Ahora, el tema es como hacer para que el router retransmita el Magic Packet, y lo haga llegar a la placa de red de destino. Si el mismo no te da ninguna solución nativa entre las opciones de configuración, la solución pasa por configurar un virtual server, y hacer que por ejemplo los paquetes UDP sobre el puerto 9 (que ese el que se suele usar para WOL) los envíe a la IP-tal, donde IP-tal es la IP de tu PC. Y acá es donde las cosas se empiezan a complicar...

Obviamente, el primer paso es que tu PC tenga siempre la misma IP interna. En mi caso, tengo esto configurado así desde hace rato, así que vamos bien, pero el tema es que la PC va a estar apagada. Mandamos el Magic Packet a la IP pública. El router lo recibe. Como está en el puerto 9, y hay un Virtual Server definido para ese puerto, se encuentra con que tiene que mandar el paquete a la IP-tal de la LAN. Entonces manda un request ARP preguntando "¿quién tiene la IP tal?". Y resulta que la PC está apagada para contestarle :(  Normalmente el router cachea esta información, así que si uno apaga la PC e intenta un WOL a los pocos minutos, puede que ande. Pero después de un (normalmente) corto tiempo, ya no.

Si el router fuera más o menos bueno, uno podría cargarle un registro estático en su tabla ARP, diciéndole que a la IP-tal le corresponde la MAC-tal, y listo. El router ya no necesita hacer un request ARP para esa IP. Pero mi router no permite manipular la tabla ARP, así que no es una opción.

En estos casos, lo que uno puede hacer es configurar el Virtual Server para que use como IP privada la IP de broadcast de la LAN, entonces, cuando el router recibe el Magic Packet, lo termina broadcasteando hacia adentro. Pero... no siempre el router te deja definir como IP privada de una regla de virtual server a la IP de broadcast. En mi caso, me dejaba definirla, pero cuando recibía el paquete, se colgaba !!!

A todo esto: Yo no sabía absolutamente NADA de IP broadcasting, tablas ARP y demás conceptos de ruteo, así que fui sorteando cada nuevo obstáculo con la ayuda de google y muchos golpes contra la pared. En particular, este hilo en este foro está BUENISIMO. Fue gracias a ese hilo que aprendí un montón de cosas, y que fui dando con las soluciones. Gracias a la experiencia de otro usuario con mi mismo router, llegué a la conclusión de que tal vez si actualizaba el firmware del router iba a solucionar el tema del cuelgue del mismo al recibir el paquete.

Generalmente no soy NADA amigo de actualizar el firmware de ningún equipo, a menos que tenga un problema que sí o sí necesito resolver, y esté seguro que la nueva versión de firmware lo arregla (y cierta garantía de que no rompe otras cosas en el proceso...). En este caso, si bien dejar funcionando WOL no era de vida o muerte, y la única "evidencia" de que con un firmware más nuevo lo podía arreglar era la experiencia de UN usuario en UN post de UN foro encotrado al azar en internet... decidí tirarme a la pileta. Más que nada, por calentura.

Así que algunos minutos después, estaba rebooteando el router con firmware nuevito. Así y todo... WOL desde internet seguía sin andar. El avance fue que ya el router no se colgaba (bien!), pero la PC, ni se inmutaba. Seguía apagadita apagadita. Lo parió.

Después de un rato más de Google y paseo por diversos foros, y cuando ya casi estaba por mandar todo a la reputamadrequelopario, encontré en Ubuntu Forums un flaco que hablaba de microWOW, un MIDlet para celulares que permite generar paquetes WOW. No le tenía mucha fe, ya que había probado UN MONTON de servicios web para generar paquetes (además del script 'wakeonlan' que me había bajado, y además de varias pruebas armando paquetes "a pedal" con Python), pero perdido por perdido, decidí probarlo.

Y funcionó! Aún no se por qué, pero so far es la *única* alternativa que me anda fuera de mi LAN.

El por qué es un misterio. Me bajé los fuentes, y constaté que no hace ninguna magia rara. Es más, me armé una pequeña aplicación de consola en Java usando el código ese como base, y no me anduvo. Constaté que lo que hace ese MIDlet aparentemente es lo mismo que hace el script en Perl que había bajado, y lo mismo que hice con diversos experimentos con Python, pero la realidad es que TODOS los intentos por generar un Magic Packet desde internet no me funcionan, excepto si lo genero desde el celular con microWOW (por otro lado, TODOS los experimentos que hice SI funcionan desde adentro de la LAN).

Misterio.

Lo bueno es que tengo una alternativa... lo malo es que con tanto tanto tanto tiempo invertido, me encantaría saber a que le estoy pifiando cuando genero el Magic Packet con otra herramienta, porque TIENE que ser una boludez, tiene que ser algo que evidentemente Java Micro Edition hace por default con los sockets, que es diferente de lo que Java Standard Edition hace, y es diferente de lo que yo hago desde Python, y lo que wakeonlan hace con Perl.

En un momento se me ocurrió que el problema tal vez era que en definitiva con mis experimentos el paquete se estaba generando desde dentro de la LAN, mientras que con microWOW se estaba generando posta desde afuera (con el celular), pero hice la prueba de mandar un paquete conectándome vía SSH con otro server fuera de mi LAN, y tampoco anduvo.

Conclusiones

  • mientras tenga mi celular a mano y servicio GPRS, puedo encender la compu de casa en cualquier momento
  • configurar WOL no es trivial, hay muchas variables en juego
  • el soporte para WOL en Linux al día de hoy es bastante pedorro, y hay que hacer todo a mano y desde una consola
  • configurar WOW es muy complejo a menos que tengas un router de verdad, y no uno de los juguetes que uno suele comprarse para la casa
  • aprendí bastante sobre enrutamiento y broadcasting de paquetes...
  • ... pero no lo suficiente como para entender por que el único generador de paquetes que me anduvo es microWOW

Si este no es a la fecha el post más largo en este blog (a excepción de los relatos de viajes), le pega en el palo...

Dudas, conspiraciones y vigilantes

Operación Valquiria (Valkyrie)

Me habían recomendado bastante la peli en el trabajo, y la verdad está buena. Tiene bastante menos despliegue del que uno se imagina si se guía por los trailers, lo cual es bueno, porque lo importante de la historia no son las explosiones. No sabía nada sobre esta historia, ni sobre las diversos intentos que hubo dentro del nazismo para asesinar a Hitler. En este caso, la película se centra en contar la historia que culmina con el atentado del 20 de julio de 1944, uno de los más importantes (y el último), que estuvo MUY cerca de funcionar y lograr su cometido. Lo interesante de esta conspiración es que además de asesinar a Hitler, pretendía luego activar y hacer uso de la Operación Valquiria (de ahí el título de la película), pero volviéndola en contra de la SS, para que los organizadores del complot pudieran tomar el poder. La Operación Valquiria (que logra ser modificada por los conspiradores antes del atentado, para que sirva a sus planes posteriores), era un plan ideado por el gobierno de Hitler para usar a los reservistas en caso de disturbios civiles o sublevaciones.

Tiene un reparto bastante bueno. Y Tom Cruise logra componer un personaje medianamente creíble y todo.


La duda (Doubt)

Esta la quise ver no tanto por el argumento, sino por los actores: Meryl Streep y Philip Seymour Hoffman...¡qué duo!. Además, había sido muy comentado también el (pequeño) rol de Viola Davis.

Bueno, resulta que la película está buena, sí, pero yo tenía más expectativas respecto a los papeles de Meryl, Philip, y los diálogos entre ellos. Como que me quedé con ganas de más. Probablemente le de una segunda oportunidad más adelante, de todas maneras.


Los vigilantes (Watchmen)

De las 3 pelis que comento, la única que fui a ver al cine. Valió la pena. No se prácticamente nada de la novela gráfica homónima de Alan Moore, más allá de lo que leí unos días antes de ir al cine, y lo que me quedó después de ver la peli. Acá hay un análisis interesante de alguien que leyó la novela (y que me dejó con muchas ganas de leerla).

La película está muy buena, aunque por momentos se hace algo lenta (sin llegar a ser insoportable). Y también siento que hay ciertas lagunas argumentales... la historia original aparentemente es sumamente compleja (hubo muchos intentos fallidos de adaptarla al cine), en esta adaptación trataron de ser fieles, pero al mismo tiempo tuvieron que resumir, y entonces algunas cosas quedan un poco en el aire.

Es una mirada distinta sobre el concepto de "superhéroe", mucho, muchísimo más humano (en ese sentido, en la misma línea de Batman Inicia y El caballero de la noche). De ninguna manera es una peli para chicos. Es un comic completamente adulto, como 300 o Sin City.

Me hubiera gustado verla en una sala 3D, en su versión IMAX... pero lamentablemente las salas 3D de Capital Federal y Gran Buenos Aires (y eso que ahora tenemos por lo menos 3 salas de este tipo), siguen usándolas solo para películas infantiles, o para pasar películas en su versión normal (no 3D). Ya perdí la cuenta de cuantos estrenos TIENEN una versión IMAX que acá no llega :(

Series 2009

Dado que Nip/Tuck, Heroes, Prison Break y 24 en sus últimas temporadas son cualquiera y dejaron de interesarme (¡mierda! ¡cuatro series buenísimas completamente arruinadas!), tuve que salir a buscar reemplazos :)

Siempre es bueno tener algún capítulo de algo para ver a la hora de la cena, por ejemplo. Me había quedado solo con The Big Bang Theory y Lost. Me han recomendado muchísimo Dr. House, pero no se por que la temática no me llama... ojo, no vi ni un solo capítulo, pero la realidad es que nadie logró hacerme vencer la inercia de empezar a verla y comprobar si me gusta o no.

En el laburo Seba y Pablito me recomendaron muchísimo Dexter, y me enganché. Lo malo es que me gustó tanto, que me devoré las 3 temporadas (si, la tercera que acá en Argentina apenas está empezando también) en poco más de un mes.

Dexter

La serie está basada en una novela, y también ahora me dieron ganas de leerla. En rigor, la novela es una saga; la primer temporada de Dexter está fuertemente basada en el primer libro de la saga, Darkly Dreaming Dexter; a partir de ahí, por lo que investigué la versión literaria siguió un rumbo, y la 2da y 3er temporada de la serie televisiva, otro, aunque siguen manteniendo como punto de contacto los personajes, y alguna que otra cosilla.

Dentro de cada temporada hay una continuidad muy fuerte (no son unitarios), y hay un hilo conductor entre todas aunque más débil. Hasta ahora cada temporada supo "reinventarse" encontrando una vuelta de tuerca que mantenga el espíritu de la serie, y la siga haciendo interesante. Entiendo que ya hay contrato firmado para una 4ta y una 5ta temporada. Las esperaremos.

Cuestión que me quedé oooootra vez sin serie (Dexter duró poco), y el otro día camino a MDQ Luis me recomendó, y luego me prestó, Band of Brothers, la miniserie originalmente estrenada en HBO coproducida por Stephen Spielberg y Tom Hanks. BUENISIMA! Bah, al menos este finde me vi las partes I y II, y me encantaron. Eso sí: Vamos a ver si logro que me dure un poco más. El compromiso auto-impuesto es no ver más de 2 capítulos por semana.

IronPython pyc

Estuve investigando el supuesto camino de pre-compilar módulos para ver si lograba resolver los problemas de performance que mencioné hace unos días.

Resulta que la punta del iceberg estaba escondida en el pack de ejemplos de IronPython, que se descarga aparte. En ese paquete está, entre otras cosas, el famoso pyc.py, parte de cuyo README nos cuenta:

This sample demonstrates the use of the Python Hosting APIs to compile Python files into .NET executables.  The behavior of the generated files is actually quite similar to that of CPython files with the ".pyc" file extension.

Bueno, ni tanto. El script de ejemplo solo es un programita de consola para compilar en bloque una serie de módulos, y generar un assembly. Básicamente, es una interfaz al nuevo método CompileModules del CLR, y hay una explicación bastante detallada de como funciona todo esto acá.

A menos que me esté perdiendo de algo, sinceramente no entiendo de donde sacan que el funcionamiento de todo esto es "similar al de los archivos CPython de extensión .pyc".

Veamos por que:

  • Explícitamente tengo que compilar los módulos. En CPython, esto es transparente.
  • Explícitamente tengo que indicar cual es el módulo que actuará como "entry point". En CPython, esto no es necesario.
  • Si compilo varios módulos, termino con un único assembly con todo. En CPython, cada .py genera su propio .pyc.
  • Pero lo más importante: Para usar el módulo compilado, tengo que cambiar los fuentes que lo consumen (importan). En CPython, el uso de los .pyc por parte del intérprete es completamente transparente.

El último punto es re-importante, y es la diferencia más grave. En CPython, si tengo un módulo foo, en el archivo foo.py, lo importo así:

import foo

... y resulta que si ese módulo está pre-compilado en foo.pyc, es lo mismo. Para mí no cambia nada. El intérprete agarra el .pyc. Y es más: El intérprete se ocupa de determinar si el .py cambió (es decir, si el .pyc ya no es válido).

En IronPython, al usar la compilación de módulos, y asumiendo que ya me haya tomado el trabajo de generar foo.dll (lo que me están vendiendo como "equivalente a un .pyc", para usar el assembly tengo que hacer esto:

clr.AddReference("foo.dll")
import foo

Y eso tiene varios problemas:

  • El código dejó de ser compatible con CPython (por el uso de clr)
  • Si alguien borra el assembly, el código pincha
  • Si foo.py sufre algún cambio, y nadie lo recompila, sigo levantando la foo.dll con el código viejo, y capaz ni me entero

Todo es más o menos workarroundeable: Podría tener un módulo clr "dummy" que no haga nada en CPython, podría meter el AddReference en un try/catch, podría crearme un modulito genérico que generalice toda esta magia, e incluso se ocupe de verificar si el assembly debe ser recompilado... pero no es el punto. Esto NO es lo mismo que un .pyc.

Anyway, estuve jugando con el esquema. Aplicarlo a algo como Cheetah es muy complejo, porque está compuesto por muchísimos módulos. ¿Cuáles compilo? ¿Todos? ¿Algunos? ¿Genero un solo assembly? ¿Genero un assembly por cada módulo? ¿Cuál es la diferencia? La documentación oficial sobre todo lo que tenga que ver con la compilación estática de scripts es sumamente escasa, por no decir inexistente.

Lamentablemente, no llegué a ningún resultado útil. Si compilo Cheetah, igual sigue tardando una bocha en importarse, y lo que es peor: ¡Después no anda! Se importa aparentemente ok (tardando...), pero luego al usarlo empiezan a producirse errores extraños, inesperados.

También noté que si compilo un programa de consola, tengo problemas por ejemplo con sys.argv. En la versión compilada, pierdo los parámetros (sys.argv es siempre ['']).

Conclusión: El esquema de compilación estática no es transparente, no funciona igual que los .pyc de CPython, es más engorroso de usar, obliga a cambiar el código fuente, no acelera la importación, e introduce side-effects y errores inesperados.

Me parece que el equipo de desarrollo de IronPython debería volver a leer el Zen de Python...

Mientras tanto, este esquema a nosotros no nos sirve. No solo no nos resuelve la performance, sino que nos obliga a armar toda una magia para implementarlo, y encima, después funciona a medias, o directamente no funciona.