jueves, 11 de junio de 2009

Mi experiencia con Windows 7

Llevo cerca de dos semanas utilizando la versión Release Candidate (build 7100) de Windows 7 como sistema "oficial", es decir, para trabajar con él; no tengo instalado otro sistema operativo. Por lo tanto, he podido comprobar todas las características del sistema que utilizo diariamente. Si no lo has instalado y tienes dudas, este post debería servirte.
Preámbulo
No me avergüenzo de decirlo: a mí me gusta XP. He trabajado con versiones de Windows que incluyen Windows 95, 98, Me, NT 4.0, 2000 y XP y sé de lo que hablo: XP es realmente un sistema operativo muy estable y sólido que, bien administrado, es seguro y consume pocos recursos. Me vi obligado a tener Vista un tiempo (mi notebook venía con él), y era espantosamente malo: no sólo vi la primera caída del sistema a los 15 minutos de encenderlo por primera vez, sino que era incapaz de manejar cosas tan simples como la copia de 2000 archivos, algo que cualquier otro sistema operativo podía hacer sin despeinarse. Realmente, Vista es un SO totalmente inutilizable. Para colmo, sus características más innovadoras desde el punto de vista del usuario común, como Aero, exigen tanto hardware que incluso un PC estándar de 2008, un año después de su lanzamiento, no pueden utilizarlas.
No es de extrañar, por lo tanto, que prácticamente nadie utilice Vista. Todo el mundo se instaló XP en su equipo, a veces como sistema operativo adicional y a veces como sistema operativo único, y no usa Vista a menos que se vea forzado. Sin embargo, al mismo tiempo la gente quiere tener Vista, y por lo tanto cunden los programas y skins que permiten al usuario de XP simular que tiene Vista.
¿Por qué ha ocurrido esto? En mi opinión (una opinión autorizada, ya que yo también instalé un pack de aspecto de Vista sobre mi XP en su momento), esto se debe a la percepción de una necesidad real, que es reemplazar XP por un SO que le saque partido al hardware actual. Basta pensar que, cuando XP salió al mercado, ni siquiera existían los discos SATA, las grabadoras de DVD eran un lujo asiático y nadie utilizaba IP6; el soporte para todas esas tecnologías se fue añadiendo paulatinamente, en forma de Service Packs, pero no formaba parte del sistema original y la integración nunca funcionó realmente bien. Por ejemplo, XP aún trata los discos SATA como si fueran IDE. Los equipos de escritorio actuales pueden tener 4G de RAM sin problemas, excepto porque XP es incapaz de utilizar más de 3G. Nada de eso es realmente culpa de XP, por supuesto, es sólo que ha envejecido y necesita un reemplazo. El reemplazo, que fue Vista, no está a la altura, pero sigue siendo necesario, y por eso la gente, mientras utiliza XP, quiere tener un sistema operativo más moderno, y lo simula todo lo que puede.
Bien, el remplazo ha llegado, o casi.
Panorama general
Preguntas rápidas
¿Es W7 compatible con las aplicaciones antiguas?
En general, sí. Eso no es mérito de W7, claro, sino de las aplicaciones.
Algunas de las aplicaciones que yo utilizo y que funcionan perfectamente en W7:
  • Daemon Tools Lite: la versión más reciente es totalmente compatible, las anteriores no.
  • OpenOffice 3.1.
  • 7zip.
  • Command & Conquer Tiberium Wars.
  • Command & Conquer Red Alert (¡Sorprendente!).
  • TrueCrypt.
  • Tor + Privoxy ("Vidalia Bundle").
  • Firefox.
  • Thunderbird.
  • Opera.
  • IrfanView.
  • Crimson's Editor.
  • I8kfanGUI.
  • aMSN.
  • GTalk.
  • PopTray.
  • FoxIt Reader.
  • Media Classic Player.
Aplicaciones que funcionan con algunos problemas:
  • Visual Studio 2005: nada grave, pero incluso con el Service Pack para Vista tiene un problema de repintado muy molesto.
  • Embedded Visual C++ 4: tiene un problema con el emulador de Pocket PC, que se puede corregir fácilmente desinstalándolo de forma manual (si lo usas es porque sabes lo suficiente de computadores como para hacerlo sin problemas). De todas formas es un progreso: en Vista no funcionaba en absoluto.
  • WinAmp: no se muestra correctamente como "topmost".
  • HdTach: se debe ejecutar en modo de compatibilidad con XP.
Aplicaciones que NO funcionan:
  • Los juegos para DOS en modo gráfico. El SO operativo se niega a ejecutarlos; habrá que usar DOSBox.
  • XMPlayer. Es una lástima: es mi reproductor favorito.
¿Consume mucha memoria?
Depende de lo que entiendas por "mucha". Consume más que XP, pero menos que Vista. Aunque lo he instalado en un PC con 700MB de RAM, es preferible tener al menos un G. Lo que de verdad consume memoria es la tarjeta gráfica. A diferencia de Vista, W7 puede ejecutar Aero incluso en tarjetas gráficas integradas, pero lo hace reservando bastante RAM para la tarjeta. En mi caso, con una Intel GMA X3100, reserva 348MB, que es más de lo que consume XP él solo. Todo lo anterior significa que, para utilizar W7 al máximo, se necesita al menos 2 G de RAM.
¿Es rápido?
¿Qué significa eso? Aero, por ejemplo, está pensado para ser vistoso y útil, no rápido: si una ventana se abriera en un cuarto de segundo todos esos vistosos efectos se perderían porque no se los alcanzaría a ver. Se inicia algo más lento que XP, pero debo tomar en cuenta que yo me peino con XP y lo tenía afinado al máximo. Las ventanas del Explorador se abren a toda prisa, los archivos se copian y se mueven a una velocidad razonable. Ahora bien, la organización de la barra de tareas, el menú Inicio y la previsualización de ventanas ayudan a que el usuario sea más rápido, y eso es bueno.
¿Es estable?
Sí. Sin ninguna duda. Incluso siendo una Release Candidate, esta versión no se ha "caído" ni una sola vez, y tampoco se ha caído alguna de las aplicaciones incluidas con el sistema operativo.
Principales defectos
- La búsqueda integrada no sólo consume demasiada memoria y es lenta: no hace lo que tiene que hacer. Busca el criterio ingresado en la ruta completa del archivo en lugar de hacerlo en la ruta relativa, por lo que encuentra cosas que nada tienen que ver con lo que se espera. Lo mejor es reemplazarla con una utilidad especial; por ejemplo, FileSeeker.
- El Centro de Dispositivos Móviles es, desde el punto de vista del desarrollador de software, una pesadilla. Integra el sistema de archivos de la PDA al Explorador, lo que es bueno, pero su caché no se actualiza adecuadamente y, para peor, utiliza las mismas restricciones que el Explorador de Archivos, por lo que, si no puedes ver la carpeta Windows del PC, tampoco puedes verla en la PDA. Por ahora no he encontrado una solución a ese problema. Por cierto, el Centro de Dispositivos Móviles es incluso más molesto e intrusivo que ActiveSync.
- El soporte del hardware es bastante pobre. Eso, por supuesto, no es problema de W7, pero es un punto a tener en cuenta. En mi caso, utilizo un Dell Inspiron 1420 con chipset Mobile Intel 965 Express; reconoció adecuadamente la tarjeta gráfica e instaló automáticamente, bajándolos de Internet, los controladores exactos para el lector de tarjetas SD. Instaló un driver erróneo para la tarjeta de sonido Sigmatel; sin embargo, los drivers para Vista corrigieron ese problema y en general funcionaron perfectamente, con una notable y molesta excepción: el touchpad.
Una cosa en particular no funciona: Dell QuickSet. Me pregunto si Dell tendrá planes de lanzar una edición actualizada para W7 de sus programas de sistema para los equipos que, como el Inspiron 1420, ya no se fabrican; supongo que no. Si la lanzara, yo la compraría.
- El listado de documentos más recientes ("jump list") asociado con cada aplicación puede ser muy útil en un entorno de oficina, pero es un verdadero atentado contra la privacidad. Yo apuesto mil a uno a que "cómo desactivar la jump list de Windows 7" se transformará en lo más buscado de Internet acerca de W7 para marzo del 2010. Desactívalo en cuanto puedas, o veras aparecer "XXX Porn" cada vez que muevas el mouse.
Principales virtudes
- Es hermoso. Realmente, XP y sus antecesores son notablemente feos. W7 es al menos tan hermoso como Vista.
- Te hace más productivo. La nueva barra de tareas es mucho más útil que la anterior una vez que te acostumbras a ella; cuando uno tiene muchas ventanas abiertas es realmente difícil encontrar la que uno busca (cualquier programador me entenderá). La nueva barra permite tener más aplicaciones abiertas y encontrarlas más fácilmente, sobre todo por la previsualización. Realmente una vez que te acostumbras es difícil dejarla.
- Es más configurable, incluso más que XP. Esto no es una exageración. Por ejemplo, permite configurar los modos de ahorro de energía de los adaptadores inalámbricos, el disco duro y la pantalla en un solo lugar; en XP eso se debía hacer por separado en lugares difíciles de encontrar.
Un punto a destacar, no sé si como virtud o como defecto, es que, por utilizar el formato WIM para los instaladores se instala mucho más rápido que XP. Al mismo tiempo, si hay un sector dañado en el WIM la instalación es totalmente imposible: tiene 0 tolerancia a fallos.

En resumen, mi opinión es favorable a W7. Es notable que sea una RC y, sin embargo, sea más estable que Vista SP1. Aún le quedan cosas por arreglar, relacionadas con el comportamiento del orden z de las ventanas principalmente, pero es realmente bueno y usable así como está. Mi única preocupación al respecto es que se apuren demasiado en sacarlo al mercado y no corrijan los problemas actuales adecuadamente; ¡sería una verdadera decepción! Al menos, de Vista ya se sabía que iba a ser malo; Windows 7 tiene esperanzada a mucha gente.

miércoles, 25 de febrero de 2009

Paso de objetos como argumentos a funciones variadic en Visual Studio 2005

Advertencia: éste es un artículo técnico, escrito por y dirigido a expertos en C++. No intenten esto en casa.
Supongamos que tengo una clase CL, con sus correspondientes métodos imprescindibles (constructor, constructor de copia, operador de asignación, destructor), 32 bytes de datos y un método Print, y sean a, b y c instancias de CL. Supongamos también que tengo una función variadic que recibe una cantidad arbitraria de objetos de la clase CL y ejecuta su método Print.
En código:

void Funcion(int iN,...)
{

if(iN)
{
CL a;
va_list argumentos;

va_start(argumentos,iN);

while(iN--)
{
a = va_arg(argumentos,CL);
a.Print();
}
va_end(argumentos);
}

}

(Sé que esto es algo que no debería hacerse jamás; es una de esas cosas que C++ permite, pero cuyo resultado no está definido. Dicho eso, sigamos adelante).

El código anterior NO funciona en la implementación de C++ que se incluye en Visual Studio 2005, ya que el compilador hace trampa: siempre pasa los objetos como punteros, no importa cómo los declare uno. Vale decir, si uno declara:
foo(CL a);
lo que el compilador realmente pasa a la función es un puntero a un objeto creado al hacer la llamada, no un objeto en sí mismo. Eso tiene sentido, ya que al pasar un puntero sólo tiene que poner 4 bytes en el stack, en lugar de los N = sizeof(CL) que tendría que pasar si pusiera el objeto completo en el stack. Sin embargo, el hecho de que realmente pase un puntero en el stack hace que las funciones variadic recorran incorrectamente el stack y salten al hiperespacio.
Así, pues, si llamamos a Función así:

Funcion(3,a,b,c);

al hacer va_arg el puntero en el stack avanzará al menos 32 bytes (32 == sizeof (CL)), siendo que en el stack sólo hay 16 (tres punteros + un int), y saltará a un agujero negro. Mala cosa.

La manera de resolver el problema es, por lo tanto, recibir siempre los objetos como punteros en las funciones variadic. Nuestra función quedaría:

void Funcion(int iN,...)
{

if(iN)
{
CL *a;
va_list argumentos;

va_start(argumentos,iN);

while(iN--)
{
a = va_arg(argumentos,CL *);
a->Print();
}
va_end(argumentos);
}

}

y asunto resuelto.
Por supuesto, si uno va a hacer una cosa así, resulta más sensato pasar los punteros directamente a la función:

Funcion(3,&a,&b,&c);

aunque, como la función es variadic, el compilador no tiene manera de chequear la consistencia de los argumentos. Sin embargo, la función , tal como la definimos, tiene la curiosa propiedad de que funciona exactamente igual si es llamada con punteros o con objetos (o incluso con referencias); es decir, tanto

Funcion(3,a,&b,c);

como

Funcion(3,a,b,c);

tendrán el mismo resultado.

miércoles, 28 de enero de 2009

Y hablando de Palm...

... ustedes no me creerán esto, pero en pleno 2002:
  • PalmOs era un sistema operativo de 16 bits.
  • Monotarea, por añadidura.
  • Palm no proporcionaba un IDE gratuito para el desarrollo en Windows.
  • El mejor IDE disponible, que costaba 450 dólares, no tenía ventanas pegables, ni autocompletar.
  • Palm no proporcionaba un mecanismo para explorar el contenido de la Palm desde el computador de escritorio.
Y tampoco creerán esto:
  • En pleno 2008, todo lo anterior seguía siendo cierto, excepto el autocompletar en el IDE.

A nadie debe extrañarle que programar para PalmOs fuera una labor dolorosa y desagradable. Nadie quería programar para esa porquería.

El mismo 2002, en Windows CE...
  • Windows CE era un sistema operativo de 32 bits.
  • Multitarea. Multihebra.
  • Microsoft proporcionaba DOS entornos de desarrollo (C/C++ y Visual Basic) de manera gratuita. Ambos excelentes (copias casi exactas de Visual C++ 6 y de Visual Basic 5, respectivamente).
  • Microsoft proporcionaba un software de sincronización con el escritorio que permitía explorar completamente el sistema de archivos.

¿Es sorprendente que Palm haya estado a punto de desaparecer del mercado?

Palm y WebOs

El nombrecito ese se presta a demasiados chistes como para hacer uno acá. Me cansa. Pero, bueno, ahí lo tenemos: el tantos años anunciado Nuevo Sistema Operativo de Palm, Basado En Linux. ¡Qué suenen las trompetas!
A mí, todo eso del JavaScript y el CSS me parece particularmente tonto. No importa lo que hagan, la programación para dispositivos móviles seguirá siendo distinta a la programación para equipos de escritorio, y los programadores que quieran pasar de un campo a otro necesitarán algunos meses de entrenamiento, si bien puede que sea algo menos traumático. Yo he visto pasar al menos dos grupos de proyecto que lo intentaron, uno en Visual Basic, otro en esa mierda difusa llamada ".NET", y ambos han sido grandes desastres. Por ahora, me sentaré a esperar tranquilamente que Mojo esté listo, y luego, ¡a sufrir!
Con todo, una observación. ¿No les asombra a ustedes esa manía de confundir el sistema operativo con su shell? Es comprensible que ese error lo cometa un usuario, pero, ¿que lo hagan programadores? Entiendo por qué al viejo Tannenbaum se le cayó el pelo.

viernes, 23 de enero de 2009

La plaga

Al salir esta mañana del condominio en el que vivo, había en el tablón de anuncios un mensaje de la administración, comunicándonos que se llevaría a cabo una fumigación de las áreas comunes para acabar con la plaga de incestos nocturnos.
¡Y no me habían avisado, los muy egoístas!

La esperanza en Obama

Acaba de asumir Obama, y las esperanzas que todos ponen en él me asustan un poco. Que va a acabar con las guerras, que terminará con la crisis económica, que la discriminación, que esto, aquello y lo de más allá. Si hasta la comunidad de activistas pro copyleft anda revolucionada con el falso anuncio de que los contenidos de la web de la Casa Blanca serán licenciados bajo Creative Commons.
Yo, como no podía ser menos, he recogido la opinión de los que normalmente no pueden expresarla: en este caso, la comunidad pedófila. En docechan (si no sabes lo que es NO lo averigües) un tipo ha escrito:
"Ahora que asumió Obama, esperemos que se dedique a perseguir a los verdaderos criminales".
Las negritas son suyas (huy, lo que he escrito).
Yo no comparto las espectativas de los que endiosan a Obama, pero comparto el deseo de quien escribió eso. Y es que bajo la administración Bush Jr. las cosas fueron ciertamente mal para todos los que no tienen una sexualidad "normal" y la expresaban en Internet: pedófilos, incestuosos, zoófilos, etc. Entre el 2002 y el 2005, una buena cantidad de sitios de discusión sobre pedofilia e incesto (sitios que, por lo demás, muchas veces ni siquiera contenían fotos o enlaces) se encontró de pronto sin financiamiento y tuvieron que cerrar; otros, cerraron sin previo aviso. Algunos de los comentaristas más activos incluso avisaron de que los estaban siguiendo, se sentían amenazados y debían retirarse. Muy poco de eso salió a la luz publica, porque ya se sabe, la gente que quiere acostarse con su madre no tiene derechos. Aunque la tormenta amainó a mediados del 2005, fue recién en 2006 cuando dio su último coletazo, con un caso que sí apareció en la prensa: el cierre de los sitios de la empresa Webe Web. Esa es otra historia, sin embargo.

Obama, por supuesto, no dirá jamás media palabra respecto al derecho a la libertad de expresión que tienen los pedófilos y gente de parecida ralea. Esperemos, sin embargo, que el recambio de los funcionarios se lleve a los que, en defensa de sus nociones personales de moralidad, arrasaron con los derechos garantizados por la constitución del país que les pagaba el sueldo.

viernes, 16 de enero de 2009

Feliz 2009

La próxima vez que pase tanto tiempo entre un post y otro, no lo duden: significa que preferí ver pornografía en lugar de escribir.
Y eso que no faltaron cosas sobre las que escribir, ¿eh? Desde los test del SIDA cuyo resultado no se informó hasta la bajada de Insulza, este verano ha sido pródigo en sabrosas incompencias que comentar. Tantas, en realidad, que no voy a comentar ninguna. No, ni siquiera el epic fail que acabó con la presidencia de Fernando Ubiergo y con el trabajo de su amigo Shuster. Tampoco el otro sonado epic fail de diciembre, la ley que combate la piratería desde un barco pirata. La tentación es grande, sin duda. Si no te habías enterado de esos dos, algo anda mal; ambas noticias direon la vuelta al mundo.
Pero bien... estoy de vuelta. Y tengo hiel acumulada.