cleartype y fuentes para programar

Una de las cosas que me disgusta es ver un PC con Windows que tiene las fuentes borrosas. El motivo habitual es que se le ha cambiado la resolución de pantalla a mayor, porque con la resolución óptima las letras son muy pequeñas. Las letras en monitores LCD se ven en condiciones óptimas al máximo de resolución que admiten, y si les cambias la resolución a mayor entonces se ven borrosas. El motivo es que al cambiar la resolución a mayor el pixel no coincide con el tamaño de un punto de resolución y la tarjeta se las apaña a su manera para mostrar las letras de la pantalla con lo que aparecen los llamados dientes de sierra. La solución pasa por usar el sistema de anti-aliasing de Windows y poner fuentes grandes en el sistema. El anti-aliasing en Windows se ajusta mediante un powertoy llamado cleartype tuner. Con esto se consigue tener las letras más grandes y con una mejor calidad que cambiando la resolución de pantalla. En Genbeta explican como usar este powertoy.

En el mundo Mac esto es mucho más fácil. Por defecto el efecto de anti-aliasing – que en algunos sitios se traduce por suavizado o alisado – de fuentes está activado, lo cual desde mi punto de vista es un acierto. En el mundo Windows el 80% de los usuarios ni saben lo que es el suavizado de fuentes, con lo que pierden la oportunidad de mejorar la visión de su sistema. Otra cosa que llama la atención es la diferente manera en que se aplica el suavizado de fuentes en Windows y Mac. Mi admirado Spolsky habló sobre ello y también se pueden encontrar otros post interesantes sobre el tema como este de CodingHorror.Para mi la personalización del entorno de trabajo es un tema capital, y como paso mucho tiempo con un editor el tema del tipo de letra es fundamental. No es sólo tener el anti-aliasing activado, sino usar una fuente que sea clara y que facilite la lectura del código. A raiz del post de CodingHorror sobre fuentes de letra para programar comencé a usar Consolas y para mi esta fuente es imbatible. La uso tanto en Windows como Mac y para mi es elegante, clara y bonita como ninguna otra fuente que haya usado antes para programar.

libra

A través de Genbeta he conocido Libra, un programa de catalogación personal con una pinta estupenda. Para entendernos es un Cuaderno de Bitácora con una interfaz espectacular. El programa presenta los ejemplares de nuestras colecciones como si los tuvieramos expuestos en una estantería, mostrando las carátulas o las portadas de cada uno de ellos. La introducción de datos se hace de manera automática: el programa lee el código de barras del libros, disco o video y se conecta con Amazon para recuperar los datos del mismo. Además tiene varias opciones para importar/exportar datos, y por si fuera poco es gratuito para uso personal. Una pasada, ¿ verdad ?

La realidad es que Libra es un clon para Windows de Delicious Library. Para los que no lo sepan, Delicious Library es una de las killer app del universo Mac. Es LA aplicación de catalogación personal del mundo Mac, con todos los premios del mundo mundial. Una auténtica pasada de aplicacación que exprime el API de Cocoa como pocas. La versión 2 promete ser ya la repanocha. Y lo mejor de todo es que es una aplicación original, en que los programadores han exprimido al máximo su creatividad para crear una interfaz totalmente rompedora.

Cuando veo una aplicación como Libra, la sensación es agridulce. Por una parte reconozco el mérito del desarrollador, pero por otra parte no me parece nada bien que se clone un programa. Si un programador quiere demostrar su valía debe hacerlo con una aplicación que muestre sus dotes técnicas y que sea original. Spolsky dice que los buenos programadores, aquellos a los que debes contratar, son los que hacen las cosas de manera elegante y son capaces de terminar las cosas. Clonar un programa no me parece nada elegante.

A mi me clonaron un programa y no me sentó nada bien.

un mundo sin fin

Para todos los lectores de Los pilares de la tierra el libro Un mundo sin fin es una cita ineludible. En este libro la trama sigue estando centrada en Kingsbridge, una imaginaria ciudad inglesa surgida alrededor de una catedral y su priorato. En esta ocasión los protagonistas son Merthin, hijo de un caballero convertido en pensionista del priorato tras sufrir el robo de todo su dinero, y Caris, la hija del comerciante de lana mas importante de la ciudad. El libro presenta los mismos ingredientes que Los pilares de la tierra, es decir una gran documentación sobre la época y sobre los oficios de la misma, unos personajes con los que el lector se identifica rapidamente, y una trama que gira alrededor de la vida de esos personajes con algunos giros sorprendentes pero que no se separan en exceso del argumento central. Es un libro que se lee fácil y que no se hace pesado pese a us más de mil páginas, pues la secuencia de acontecimientos se sucede con la suficiente rápidez como para mantener el interés del lector. El único pero del libro es que se parece demasiado a Los pilares de la tierra, y que el autor sigue abusando en exceso del tópico de personajes buenos que son muy buenos y de personajes malos que son muy malos.Para mi ha sido una buena novela, que no pasará a los anales de la literatura, pero que hace pasar buenos ratos con su lectura. Una novela sin grandes pretensiones, recomendada si no se tiene otra cosa mas interesante entre manos.

despliegue

El despliegue de software – deployment en inglés – es el conjunto de actividades que permiten que un determinado software se pueda usar en cualquier máquina. Muchos programadores no saben lo que es el despliegue y otros muchos confunden el despliegue con preparar un paquete de instalación de su software mediante programas como InnoSetup o similares. También existe determinado tipo de software, de acuerdo a los cinco mundos de Spolsky, que no necesita despliegue. Los programadores que hacen software interno o empotrado rara vez tendrán que preocuparse por el despliegue de su aplicación. Pero si alguna vez lo tienen que hacer, casi seguro que se meterán en un buen lio.El despliegue no comienza cuando se termina el programa, sino que debe comenzar precisamente con el comienzo del mismo. Una de las partes que más dolores de cabeza dan en el despliegue es la parte de creación de bases de datos o estructuras de datos del programa. Para que el despligue de una aplicación sea correcto debe incluir procedimientos automáticos de creación de la base de datos que vaya a utilizar, y esto debe planificarse cuidadosamente desde el inicio de la aplicación.

Hace poco hablaba con un amigo que trabaja en una empresa pública. Resulta que han hecho una aplicación interna muy buena y se la han premiado como una mejora de los procedimientos administrativos. Esto ha hecho que se conozca la exstencia de la aplicación y se la pidan de otras organizaciones similares, y ahí ha empezado su calvario. Ahora están desmontando la aplicación, pues tiene un fuerte acoplamiento con otras aplicaciones internas y no tiene sistema automático de creación de las bases de datos que utiliza. El problema de todo esto es que nunca pensaron que su aplicación iba a salir de su organismo, y no pensaron jamas en términos de despliegue. Moraleja: no importa que tipo de software hagas, piensa siempre que algún dia querrás distribuir tu aplicación. Piensa en terminos de despliegue.

Con el despliegue debes asegurarte de que tu programa va a funcionar en cualquier ordenador que cumpla unos requisitos mínimos de máquina y de sistema operativo. La creación de directorios, copia de archivos, registro de componentes, activación del programa y creación de enlaces en el menú inicio o en el escritorio debe ser completamente transparente al usuario. No hay nada más frustrante que descargarte una aplicación y tener que hacer tu los ajustes a mano para que funcione el programa y que después de un buen rato de pelearte con la aplicación no consigas hacerla funcionar. A mi me ha pasado más de una vez y se te queda muy mal sabor de boca. Si quieres evitarte problemas de despliegue tienes que intentar que tu aplicación sea autocontenida en la medida de lo posible, y que no tengas que recurrir a instalar otros componentes de terceros y menos aun que estos componentes de terceros se tengan que configurar a mano.En alanit todos los programas están hechos pensando en el despliegue. Cuando un programa arranca lo primero que hace es comprobar que existen todos los ficheros de datos necesarios para funcionar, y si alguno no existe se crea automáticamente. La instalación de nuevas versiones es no agresiva, si existen ficheros de datos del usuario el programa de instalación no copia los ficheros de datos que el programa trae por defecto. Y por supuesto, ningún paquete de instalación no se llama setup.exe.