viernes, 10 de octubre de 2008

¡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 MonoDevelop, 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.

3 comentarios:

Anónimo dijo...

Yo migré a Mac hace ya tres años (o cinco si cuentas los años de iPod mini y iTunes que me convencieron). Lo mejor que me pasó en mi vida informática con diferencia. Ahora, iBook G4, Mac mini, iPhone, iPod mini y sigue contando.

Como usuario, yo quiero dedicar mi tiempo a crear mi contenido. No me gusta perderlo en reparar, parchear y similares. Eso lo tengo con apple y con Google. No necesito más. Ninguno de mis equipos tiene antivirus, anti-mierda y similares. Funcionan.

Los sitios de rumore-rumore son entretenidos pero terminan por aburrir ya que se repiten mucho. Hay gente que pasa horas y horas con el photoshop para sacar las imágenes falsas de los nuevos productos. Tienen su mérito.

La semillita de la manzana ha crecido a mi alrededor. La mayor parte de la gente que conozco tiene equipos apple o se los comprará en los próximos doce meses. Desde el 2005 no he vuelto a pisar la casa de nadie para arreglarle su PC. Cuando me preguntan, les digo que yo tengo Mac, que soy un pobre ignorante de una apestosa clase elitista y tendrán que buscarse amiguitos cejijuntos para que los ayuden con sus virus, sus troyanos y sus problemas.

Anónimo dijo...

Gracias, amigos.

Uno+Cero dijo...

Sulaco, yo estoy encantado con Mac y lo recomiendo a todo cristo viviente. Mi primo, linuxero de pro, que me decía que estaba tirando el dinero en el iMac, ahora trabaja con uno y está encantadísimo de la vida. Es que la ignorancia es atrevida, ya se sabe, y hay que perdonarles. Sin embargo, mi equipo fotográfico crece gracias a que como de la tecnología, y ya paso de discutir con los clientes si deben o no deben hacer una cosa u otra. Si quieren Windows, pues yo les trabajo para Windows. Así, en plan mercenario. Eso me obliga o me impide desligarme completamente de la ventana. Y, para serte franco, el .Net es de lo mejor que he visto en cuanto a tecnología (una lástima que esté solo para Windows). Aunque el Mono está ganando terreno en mi corazón.

Me caen bien los jefes de mi mujer y no me importa echarles una mano con estos temas de 'alto nivel'. Para arreglarles el ordenador ya tienen el becario de una empresa que les lleva el mantenimiento. En esas cosas sí que no pierdo el tiempo.

En cuanto a los sitios de rumores... Ufff, me aburre soberanamente tanta gilipollez. Me pasa lo mismo que con las cámaras. La peña no hace más que flipar en colores con lo que será, cuando al final lo único que hacen es angustiarse por lo que no van a poder comprar. En fin...