¡Oh, no! Un windows en mi Leopard. Ejercitando un poco los dedos con .Net

Estoy encantado con mi iMac de 24". Es una maravilla. Es todo lo que siempre quise tener, aunque no he sido consciente de ello hasta que he empezado a trabajar con él. Y no me imagino mi vida futura sin un Mac. Bueno sí, pero un Mac me la hace más fácil y agradable.

Pocas cosas malas -por no decir directamente ninguna- puedo decir sobre el sistema operativo Leopard. Trabajar con múltiples escritorios, aunque no siendo nuevo para mí, lo echaba mucho de menos en XP. O el Spotlight. O el Time Machine. O la suavidad con lo que se hace todo. Tras unos pocos meses ‘trabajando’ intensamente con él, tengo que reconocer que es, después de muchos años ‘peleando’ con ordenadores, uno de los mejores entornos de usuario que he probado hasta la fecha. Por mucho que le duela a algunos. Lo mejor que se me ocurre para describirlo es que tener un Mac ‘es una experiencia completa, de principio a fin’.

Lo peor que llevo, sin embargo, del universo Apple no son sus equipos ni sus aplicaciones. Son los descerebrados que se creen que por tener un Mac ya molan mogollón y se dedican a plagar la blogosfera, a modo de misioneros adoctrinadores fundamentalistas, repitiendo, como eco que hastía hasta al más santo, rumores y más rumores de lo que va a decir o hacer en cada presentación Steve Jobs. Bitácora tras bitácora de esas que dicen dedicarse al mundillo de la manzana, no hacen más que repetir, una y otra vez, la misma rumorología y las mismas batallas de entusiasta idiota que no aportan absolutamente nada a la comunidad seria. ¿Qué cojones me importa que se rumoree que lo próximo que van a presentar es una tableta flexible si no lo ha indicado la empresa? ¿Qué sentido tiene estar hablando mesas antes de lo que podría ser? Y al final todos se equivocan. Resulta cansino. Aburrido. En el fondo creo que este tipo de adoradores sin sentido crítico ni del ridículo le hacen más mal que bien a la compañía y a aquellos que agradecemos usar un ordenador como usuarios.

Que conste que también hay muy buenos sitios donde informarse del universo Mac. Pero son pocos.

Si no fuese por eso diría que los Mac son lo mejor de lo mejor de lo mejor. No son lo mejor de lo mejor de lo mejor por los subnormales de la rumorología y por un pequeño detalle casi sin importancia: no tienen .Net. El framework de Microsoft es uno de los mejores inventos que ha hecho la compañía de las vetanas. Si, además, fuera multiplataforma ya sería la repera. Ya sé que está el proyecto Mono, pero no es exactamente lo mismo. Al menos de momento.

En lugar de ponerme a discutir chorradas de si es mejor o peor una cosa que otra, voy a explicar porqué, para mí, no es exactamente lo mismo. Al menos en esta ocasión. Y lo voy a hacer contando un caso reciente, de esta misma semana, en el que, seguramente, mezclaré otras cosas que no tienen mucho que ver con la argumentación principal. Pero como dicen por ahí, ‘es mi bitácora y la jodo como me sale de las células madre de mis testículos’.

Además de llevar con gusto un cargo de responsabilidad, fui, soy y seré programador. Lo he dicho varias veces ya: me gusta programar. He sido programador, realmente, dos tercios de mi vida. Antes incluso de imaginar que lo sería, ya le daba al código, además de jugar con los ordenadores. ¿Cuánta gente conoces que le diese al ensamblador de Z80 con 15 años? ¿Y al C con 17? Cosa bien distinta es lo que hiciera con esos conocimientos, pero mientras el cara huevo del profesor de ‘convivencia’ (una especie de ‘ética’ pija) soltaba sus paridas, yo escribía código ensamblador en mi libreta. Llevo mucho tiempo como programador, de los que gustan centrarse en resolver el problema y no en inventárselo para hacer filigranas -esa fase ya la dejé atrás- buscando que el resto de los programadores me idolatrasen por la genialidad de mi código. Bueno, eso todavía lo hago, pero en pequeño comité. Como programador pragmático (aún en ‘fase beta’) adoro los entornos de programación que me permiten explotar la potencia del lenguaje, framework o peya-técnica con la que esté trabajando, sin tener que recordar la posición de los parámetros ni su tipo ni los métodos de una clase ni si se escribía ÑagaOne u OneÑanga. Ni me imagino a estas alturas diseñando una interfaz de usuario instanciando los controles en el constructor de un objeto formulario.

El párrafo anterior es la introducción. Sigo.

Mi mujer trabaja en una gestoría que, como el 100% de los usuarios y clientes para los que he trabajado durante los últimos trece años utilizan y utilizarán Windows como entorno de trabajo habitual. No se pasa por mi la cabeza la idea de discutir con ellos si se debe o no usar otra cosa. Su negocio es otro y con Windows se sienten cómodos trabajando. Si además lo pagan… ¿Por qué van a tener que cambiar su forma de trabajo si con ello no van a ganar más dinero?

Esto casi también era introducción, que me enrollo…

Como decía, mi mujer trabaja en una gestoría, y el otro día me comentó que a veces tienen que exportar e importar datos entre aplicaciones de contabilidad, de los clientes, y en muchas ocasiones tienen que andar retocando los archivos de texto que emplean como unidad de intercambio, lo que les puede suponer horas para ajustar las cuentas y tener un plan único para todos ellos (más o menos, que no soy experto en la materia). ‘¿Conoces una forma rápida de hacerlo?’, me preguntó, después de contarme que su jefe podía estar dos y tres horas retocando un archivo con miles de líneas-barra-registros. Se me ocurrían varias formas ‘rápidas’ de solucionarlo, y una de ellas, la más fácil, era hacerles una pequeña aplicación con la que medio automatizar el trabajo y, al mismo tiempo, que sirviese de control de errores.

Ahí es cuando comenzó el problema: ¿Con qué lenguaje de programación? Como aficionado a la programación, sin poder considerarme experto en ninguno, sí que puedo ser relativamente eficaz y productivo con Java, C#, Ruby, Python o con shell scripts, por mencionar algunos. Incluso con Groovy, con el que he montado un proyecto hace poco. Pero había una serie de requisitos o aspectos que delimitaban la decisión. A saber:

  1. Obligatorio que sea para Windows XP (¿hay que discutir esto?).

  2. Una interfaz gráfica de usuario sencilla que cogiese dos archivos y permitiese ir realizando una serie de cambios en los datos respetando los tamaños de campos, sus posiciones y cosas por el estilo, además del formato del propio archivo.

  3. Administración cero: Que pudiese enviarles el programa por correo electrónico y que ellos mismos, sin conocimientos profundos de administrar sistemas operativos, pudiesen ejecutarla (copiar, pegar y doble click, vamos).

  4. Y más importante: es un favor y no lo voy a cobrar.

  5. Y otra también importante: me apetecía programar y no tenía ganas de buscar un editor de textos que ya lo hicera, que seguro que lo hay.

De todas las posibilidades que se me ocurrían, la más rápida era emplear C#. Enviarles por correo electrónico un pequeño .exe que pudiesen ejecutar desde el propio escritorio, sin necesidad de administración (lo más elegir el Framework en Windows Update) y sin tener que pelear con variables de entorno para saber dónde está el intérprete. Como no lo voy a cobrar, además, con C#, que lo conozco bastante bien, y un buen IDE, iba a tardar poco. O eso creía yo.

Está claro que para Mac la opción es usar ‘Mono’ y el MonoDevelop. Mi idea era hacerlo en casa y luego compilarlo todo en un momento en el Windows del trabajo, pasando de Mono a .Net sin complicaciones. En principio creí que no iba a necesitar más. Error de suposición por mi parte. El MonoDevelop para Leopard falla más que una escopeta de feria (estaba negro viendo cómo las líneas se sobrescribían una y otra vez en el editor, generando una mancha negra ininteligible). Reconozco que no estaba en mi mejor momento y no me sobraba la paciencia, cuando tenga un rato lo miro con más calma. Además, la opción para desarrollar una interfaz visual es emplear GTK, lo que me obligaría a hacer un manual explicando qué necesitan instalar para usar la aplicación.

Harto del Mono____Develop, al final opté por Windows y SharpDevelop, con diseñador de formularios integrado. Para ello decidí instalar una máquina virtual con VMWare en el Mac OS X. No es la primera vez que trabajo así. Desde finales de 2003 hasta mediados del 2007, cuando cambié a la actual empresa, he venido trabajando con máquinas virtuales donde poder separar los entornos de prueba y desarrollo para que no afectasen a las tareas administrativas, por ejemplo, que se desarrollaban en el sistema operativo anfitrión. En el trabajo anteior, bajo mi mando, la delegación de Las Palmas trabajaba siempre con máquinas virtuales sobre un operativo anfitrión Linux. En Tenerife no les hacía mucha gracia, pero se mordían la lengua porque nuestro coste de propiedad en administración y recuperación de entornos de trabajo era casi cero (cuando se escoñaba un equipo bastaba con copiar la máquina virtual y punto pelota). Como digo, nos permitía separar entornos e, incluso, compilar y probar los proyectos con diferentes versiones del compilador y analizar comportamiento contra diferentes bases de datos. En base a eso, simplemente he hecho lo que me ha dado buenos resultados en el pasado.

En realidad todo lo anterior apesta a patraña y lo he empleado como excusa para instalarme el VMWare y el XP en mi ordenador. Y estoy feliz por ello. Pero lo anterior también vale, que conste.

Al igual que me pasó cuando usaba Linux como escritorio de usuario doméstico, he tenido que instalar un Windows en mi Mac, porque aunque intento diferenciar mi entorno de trabajo de mi entorno lúdico o de ocio, que es lo que mantengo en casa, mi profesión y el mercado para el que trabajo mandan, y, ya sea por gusto o por imposición, no puedo desvincularme completamente. Siempre queda el consuelo de tratarse de una máquina virtual y que, cuando me aburra, con un simple gesto de arrastrar hasta la papelera, le daré carpetazo. Pero de momento se quedará. Al menos hasta que salga un IDE bueno para C# (en su variante Mono) para Mac. O al menos mientras voy desarrollando habilidades en otros lenguajes como para desenvolverme tan bien en ellos como lo haría con .Net. ¿Pero alguien se ha parado a revisar la cantidad de novedades tan geniales que tiene la versión 3.5 del framework? Estoy realmente encantado con LINQ y con Entity Framework. ¿Para qué voy a cambiar de tecnología?

Bueno, me marcho a trabajar. Viernes. Siete horas. Inglés. Y un buen fin de semana es lo que me espera a partir de este momento. Que tengas un buen día tú también.

Esta entrada ha sido importada desde mi anterior blog: Píldoras para la egolatría

Es muy probable que el formato no haya quedado bien y/o que parte del contenido, como imágenes y vídeos, no sea visible. Asimismo los enlaces probablemente funcionen mal.

Por último pedir diculpas por el contenido. Es de muy mala calidad y la mayoría de las entradas recuperadas no merecían serlo. Pero aquí está esta entrada como ejemplo de que no me resulta fácil deshacerme de lo que había escrito. De verdad que lo siento muchísimo si has llegado aquí de forma accidental y te has parado a leerlo. 😔