Confesiones: La encuesta sin fondo

¿Algo que confesar? ¿Una aplicación entregada de la que no te sientes orgulloso? ¿Prácticas dudosas? Nuestra sección «Confesiones» puede ayudarte a tranquilizar tu conciencia contándonos de forma anónima ese momento en que tuviste que elegir entre la ética ingenieril y la cruda realidad.

No será tan especial como aquel blog maravilloso de Post Secret, pero algo es algo. El siguiente testimonio es una confesión en toda regla de lo bajo que se puede llegar a caer. Por expreso deseo de los protagonistas no se pueden dar más datos de los que hay…

No nos da tiempo. Nos mirábamos aquella mañana preocupados por la que se nos venía encima… frente a nosotros, un pliego de requisitos con una línea subrayada en rojo, donde se especificaba que el portal que desarrollábamos debía incluir la posibilidad de hacer diferentes encuestas en línea. Un montón de dinero pendía de un hilo.

Por algún motivo, esa maldita línea había pasado totalmente desapercibida hasta aquel último repaso. Además, quedaba claramente descrito que las encuestas debían estar conectadas a la base de datos, por lo que no valía insertar los formularios en pdf o vilezas similares… Y para colmo, sabíamos que nadie iba a consultar jamás, bajo ninguna circunstancia, los resultados de esas encuestas.

La idea bonita y elegante era construir un módulo para diseñar encuestas que pudiera adaptarse a cada necesidad, pero no había tiempo para eso, por supuesto. Ni siquiera había tiempo para implementar un esquema normalito en la base de datos ni módulo mediocre en PHP que tomara los datos. Había que resolver la papeleta en 15 minutos, y a ser posible, sin que nadie sospechara nada.

¿La solución? Una encuesta «sin fondo», que no llevaba a ninguna parte. Un montón de menús con las preguntas, impecables, bien diseñados, correctamente presentados. Un botón de «Enviar» y un mensaje agradeciendo la colaboración «gracias, su opinión es muy importante para nosotros» y todo eso.

Lo que no sabían los usuarios era que sus datos no iban a ningún sitio. No se guardaban en la base de datos. Ni siquiera se enviaban por correo, nada. Se perdían irremediablemente en el mar de bits de Internet, desaparecían al pulsar aquel botón de «Enviar». Y como suponíamos, nadie preguntó jamás por los datos de esas encuestas, que por otro lado, carecían de todo interés para la organización.

Y tu, ¿te animas a contarnos tu particular experiencia con el lado oscuro?

(Dos) cosas que no me gustan

Hace tiempo conocí el magnífico blog «La decadencia del ingenio» gracias a Trebol-A, y desde entonces no he podido dejar de leer ni una sola de sus entradas. Hace unos días su autor, Jaime, definía los memes de esta particular forma:

Un meme consiste en responder a alguna pregunta tontorrona y, aquí viene lo malo, endosarle el muerto a personas inocentes que deberán responder a esas preguntas so pena de excomunión y de que a uno le miren feo y le llamen soso.

Y el meme en cuestión se titula «cosas que no me gustan«, aunque también nos regaló una versión más positivista del tema en «cosas que me gustan«, de las que cito:

Una chimenea y un buen libro bien gordote. Junto con una cerilla, las tres cosas que hacen falta para un agradable fueguecito. Lo mejor para una de esas lluviosas tardes de domingo en las que la gente tiene accidentes de coche volviendo del apartamento.

Unos días más tarde pudimos leer la tercera parte: «cosas que me dan más bien lo mismo«. Sencillamente genial, os recomiendo a todos que os paséis por ese blog tan fantástico.

En realidad el objetivo de este artículo ha quedado de sobra cubierto con la mención anterior, pero por si acaso, he decidido añadir un par de cosas relacionadas con la programación que hacen que me hierva la sangre, para que os quedéis con un extraño sabor de boca.

No me gusta, por ejemplo, la cara de imbécil que se me queda al darme cuenta de que al programar en C escribo, por ejemplo…

[sourcecode language=»c»]
int calcular_raices();
[/sourcecode]

y si al hacerlo en en Java escribo

[sourcecode language=»java»]
int calcularRaices();
[/sourcecode]

¿Qué pasa, que no funcionan igual? Pues por algún motivo parece que no :-P Son cosas de las convenciones de estilo, pero a veces me siento idiota siguiéndolas. Si algún día creo un lenguaje de programación, haré que los nombres de las funciones tengan que ser escritos en hexadecimal pero eso sí, por convenio.

Otro detalle que hace que me den ganas de salir a la calle y liarme a tiros es cuando veo escrito esto:

[sourcecode language=»c»]
switch(variable){
case 0:
break;
case 1:
break;
default:
break;
}
[/sourcecode]

Y es que el último caso de un switch no necesita el maldito break. ¿Por qué todo el mundo lo pone? ¿Acaso no es indignante esa línea de código extra en todos los programas sin aportar nada, solo porque es más cómodo copiar y pegar? Si un día gobierno el mundo mi primera medida será castigar duramente a quienes hayan perpetrado tamaña profanación.

Voy a tomarme una tila. Demasiado trabajo últimamente…

Web colaborativa

Tras años observando el fenómeno y haciendo cuidadosas y constantes anotaciones he llegado por fin a una definición del término Web colaborativa.

Página donde muchos trabajan gratis para que uno gane dinero con los anuncios de Google.

Ayudando a Google™: FAQ de Ajedrez

Hace tiempo dedicamos alguna entrada al ajedrez, y hay una parte significativa de visitas que han llegado a NSL buscando respuesta a ciertas dudas muy comunes, así que vamos a echar una mano a Google reuniendo aquí las consultas más frecuentes.

Movimientos del rey sin piezas y finales de partida

Si nos referimos a cómo encarar un final de partida, si un bando llega a la incómoda situación de no contar con más piezas que el rey, podemos tener en cuenta cinco escenarios básicos en ausencia de peones:

  1. Rey y reina contra rey
  2. Rey y dos torres contra rey
  3. Rey y torre contra rey
  4. Rey y dos alfiles contra rey
  5. Rey, alfil y caballo contra rey

En estos cinco casos, el jugador con ventaja material puede ganar la partida con independencia de la resistencia del adversario, mediante procedimientos conocidos. Como expliqué en su momento, los tres primeros son muy sencillos, pero los dos últimos pueden llegar a ponerse muy cuesta arriba.

La otra opción es que dispongamos de fichas o piezas menores, es decir, de peones. La teoría de finales con peones es muy complicada y muy exigente, aunque muy bonita. En otras circunstancias, se aplica la regla de las tablas automáticas por fuerzas insuficientes. Se considera que ningún jugador puede ganar y el juego se da por empatado. No es lo más frecuente, pero la norma está ahí.

También se puede aplicar la regla de las 50 jugadas: si durante 50 jugadas ningún jugador mueve un peón ni recibe un jaque, el juego se declara empatado. Generalmente se producen porque un jugador está en desventaja y puede evitar ser derrotado paralizando la situación. Hay que decir que es complicado forzar las tablas así, sólo en posiciones muy concretas y con pocas piezas puede lograrse.

Aprovechar la ventaja

Bien, es una duda interesante, porque si es importante obtener ventaja, más importante es saber aprovecharla. Ya vimos que podemos distinguir diferentes tipos de ventaja:

Ventaja material: tener más y mejores piezas sobre el tablero. Para aprovechar esta ventaja lo mejor es “cambiar las piezas? o “simplificar?, esto es, dejarnos un caballo para capturar otro caballo. Como tenemos ventaja, al eliminar piezas del tablero ésta se hace más potente. No es lo mismo tener una torre de más que ser el único jugador que tiene una torre, porque la fuerza de las piezas se multiplica en ausencia de resistencia equivalente.

Ventaja posicional: tener una mejor posición de las piezas sobre el tablero: pocos puntos flacos, las piezas defendidas por peones… podemos aprovechar esta ventaja apoyando las piezas mayores en nuestro esquema para lanzar ataques seguros y contundentes. Una ventaja posicional permite la guerra relámpago: capturas y amenazas precisas y rápidas.

Ventaja espacial: ocupar más tablero que el oponente: si conseguimos recluir a nuestro adversario y obligarle a defenderse, tenemos una ventaja evidente. Para aprovechar esta ventaja podemos presionar detrás de su línea con los caballos, o presionar sobre un flanco para dejar el camino libre a nuestros peones, que posiblemente estarán bastante adelantados. Una amenaza de coronación en el medio juego es muy dura, por lo que el rival deberá dejarse material para neutralizarla.

Iniciativa: es como en tenis: se trata de mandar en el juego, de no dejar respirar al adversario. Esta ventaja es más sutil, y explotarla depende más bien del perfil del jugador. Un perfil atacante se sentirá a gusto en esta situación. Generalmente un jugador fuerte y agresivo ganará la partida si dispone de la iniciativa, salvo que juegue contra alguien sólido en defensa que controle perfectamente su esquema y se limita a esperar a que el adversario se estrelle.

Rendición

Cuando un jugador decide rendirse puede decirlo en voz alta simplemente, aunque el gesto estándar para mostrar esto es “tirar el Rey? y dar la mano al oponente. No hay nada especial que decir sobre el acto de la rendición, más allá de las típicas cuestiones protocolarias. Por ejemplo, no se debe lanzar el Rey como he visto hacer, sencillamente se tumba sobre el tablero. Después, debe tenderse la mano al oponente.

En general debe saludarse al adversario estrechando su mano al principio de la partida y al final. Al inicio no existe ninguna norma, pero generalmente el jugador blanco tiende la mano antes de ejecutar el primer movimiento. Al terminar, se suele considerar de buen gusto que el ganador sea el primero en tender la mano, aunque en el caso de la rendición puede ser distinto. Muchos jugadores emplean este gesto para ofrecer tablas.

Tablas

En ajedrez se puede llegar a tablas de muy diferentes maneras. Al menos que yo recuerde:

Por mutuo acuerdo. Un jugador ofrece el empate y si el contrario acepta la partida finaliza de inmediato.

Tablas fotográficas. Se alcanza la misma posición sobre el tablero tres veces consecutivas.

Regla de las 50 jugadas. Se ejecutan 50 movimientos sin dar jaque o mover peones.

Tablas por ahogado. Un jugador no tiene ninguna jugada legal disponible, aunque no está en situación de Jaque Mate y es su turno. Antes, el jugador que se encontraba en esta situación perdía la partida, pero el reglamento fue modificado.

Fuerzas insuficientes. Esto es, que ningún jugador puede dar jaque mate con el material de que dispone.

¿Qué es un Tempo?

El “tempo? o “tiempo? equivale a media jugada, o a la jugada parcial de cada jugador. Es algo un poco complicado de explicar, pero se refiere a la optimización de jugadas: no se debe hacer con dos movimientos lo que se puede hacer en uno, ya que dejamos de aprovechar una jugada y esto representa una ventaja indirecta para el oponente.

Quiero una apertura infalible

No existe. Si existiera no habría tantos esquemas distintos para empezar las partidas, y todos jugaríamos la infalible. Aquí cada uno tiene sus manías, pero es bueno conocer una apertura y una defensa para jugar con negras. Para un nivel intermedio es muy interesante la Apertura Española y la Defensa Siciliana, verdaderamente potente contra el 1. E4 de la Española.

En la formación de los jugadores de ajedrez modernos hay un gran repertorio de secuencias forzadas en respuesta a 1. E4 que muchos memorizan, por lo que considero que es necesario preparar las aperturas de dama 1. D4 o bien irnos a otros métodos.

Desprecio a los jugadores que memorizan variantes de apertura para obtener ventaja, aunque están en su derecho de hacerlo. Contra ellos podemos divertirnos improvisando nuevas y absurdas variantes. Puede que perdamos ventaja posicional, pero quedará ampliamente recompensado cuando les veamos la cara. Este es un tema muy interesante, así que creo que le dedicaré un post.

¿En jaque mate se puede comer?

Si un adversario anuncia Jaque Mate hay que estudiar siempre si es así de verdad. Pocas veces un contrincante intentará un truco tan bajo como intentar engañarnos con esto, pero también puede equivocarse. Estrictamente, el Jaque Mate no se produce cuando el ejecutor lo anuncia, sino cuando el receptor del Mate admite que se ha producido y da por perdida la partida.

Así, si el adversario anuncia Jaque Mate y es legal capturar a la pieza ejecutora debemos hacerlo, pues en ese caso no se trata de un Jaque Mate real, sino de un error del oponente. Romper un Jaque Mate ficticio puede darnos ventaja, porque capturar una pieza (normalmente mayor) cuando el adversario creía la partida ganada es un duro golpe psicológico.

En la etiqueta del ajedrez de competición no está muy bien visto anunciar Jaque Mate a no ser que sea un final obvio y esté más que claro. En general en los torneos importantes no se anuncia nunca el Jaque y sólo a veces el Jaque Mate. No es obligatorio, y si el oponente no lo aprecia y realiza un movimiento ilegal tendrá que corregirlo en su tiempo, lo que es una ventaja indirecta para nosotros.

¿Más dudas?

Delirium Tremens

Hacía mucho tiempo que no daba un repaso a las búsquedas «gracias» a las cuales algunos aterrizan en Nosololinux.

En general, ya no tengo mucho tiempo para ir anotando todas, pero hay cinco que no pueden quedar en el olvido:

Me cansé de los imbéciles

A todos termina por ocurrirnos tarde o temprano, pero Google no puede ayudarte a superarlo, sólo a encontrarte con más.

Código ético ingenieril

Creo que eso no existe.

Qué nombre tenía el panda antes

Supongo que «oso raro con manchas negras».

Red de neuronas del calamar

Emmm… no sé, se trata de una duda demasiado interdisciplinar para mí :-P

Tu puedes hacer mucho por mi

¿Es una proposición?

Consultorio NSL: Virtualización y antivirus

Hace un tiempo escribí sobre virtualización en MacOS utilizando Parallels Desktop. Y hace unos días, Juan formulaba la siguiente pregunta en los comentarios de la entrada en cuestión:

Hola, si tengo Windows en Parallels, ¿es necesario instalar un antivirus?.

Gracias.

Switcher

La respuesta, como casi siempre, es un poco a la gallega: depende. Depende de los matices exactos de la pregunta, así que vamos a concretar el ámbito de lo que queramos proteger con el antivirus. La respuesta está centrada en un Mac con Parallels, pero puede generalizarse para cualquier equipo con cualquier máquina virtual.

1. Quiero proteger mi Windows virtualizado

En este caso suponemos que queremos proteger la máquina virtual contra los virus que afecten a Windows XP. El software se ejecuta igual en una máquina virtual que en un ordenador físico normal y corriente, por lo que los virus siguen afectándonos de la misma forma. Una buena solución es, por tanto, instalar un antivirus en la máquina virtual para protegerla de este perro mundo.

Otra opción es hacer copias periódicas del archivo del Mac que contiene la máquina virtual con Windows para restaurarlo en caso de problemas, pero esto ocupa espacio adicional y puede que no sea del todo fiable.

2. Quiero proteger mi Mac

A veces se planta la duda de si un virus que ataque a Windows en la máquina virtual podría causar problemas en nuestro equipo. La respuesta es que no, aunque hay matices.

En principio, no hay ninguna manera por la que un virus pueda saltar de la máquina virtual al ordenador que la simula, el antifitrión. Y aunque pudiera violar la protección de memoria, lo cual no parece nada sencillo, el código ejecutable de Windows no funciona en MacOS, así que hasta en el caso más apocalíptico estaríamos a salvo.

Sin embargo, un virus diseñado a tal efecto podría acceder a los directorios de nuestro equipo compartidos por Parallels y modificar nuestros archivos de forma relativamente sencilla. Para estar seguros y evitar esta posibilidad caben dos opciones:

  1. Deshabilitar la compartición de archivos entre el Mac y la máquina virtual.
  2. Compartir los archivos en sólo lectura. Esto es recomendable como norma general para evitar errores de esos que tienen mal arreglo.

Todo esto podemos configurarlo desde las propiedades de la máquina virtual en cuestión. Creo que eso es todo, si algo no ha quedado bien explicado lo resolvemos en los comentarios.

Aprovecho la ocasión para recordaros que podéis plantear dudas sobre cualquier tema para ser resueltas en nuestro Consultorio Nosololinux. Al fin y al cabo, este blog se creó para eso (y vaya si ha degenerado… :-P).

Cargando… 100%

He dedicado estos días a recargar las baterías. Intenté adelantar trabajo y acabar artículos, pero ha sido imposible (como siempre).

En breve volveréis a sufrirme :-)