Octubre 11, 2007...5:05 pm

Consideraciones sobre Visual Studio, .NET, Parallels y Mac OS X

Jump to Comments

Leyendo Applesfera, me he dado cuenta que muchos programadores, que también son usuarios, se preguntan si es factible la solución que circula desde que existe el Parallels para Macintosh. Esta misma pregunta me he hecho yo hace más de un año, cuando todo esto estaba muy verde aún. Sin embargo, di ese salto y me arriesgué. En esta entrada (la primera sobre Mac en este nuevo espacio), les voy a comentar mi experiencia luego de un año de trabajar de ese modo.

El Parallels para Mac ha evolucionado bastante, en sus primeras versiones tenía muchos inconvenientes (menores si se piensa que para programar con Visual Studio sólo hacía falta que arranque el Windows™). Pero el soporte USB era sólo 1.1, cada tanto se colgaba misteriosamente, algunos dispositivos no funcionaban, etcétera. Sin embargo, hoy, en la versión 3.x de Parallels, debo decir que estas cosas son parte del pasado. Ha sido un camino plagado de pequeñas piedras y sobresaltos (actualizaciones misteriosas que rompían en lugar de reparar, betas que no eran betas, final releases que parecían betas, foros llenos de quejas y preguntas y demás “cuestiones” que parecían embarrar el terreno).

Intentaré ser lo más escueto posible e ir directo al grano. Este es el hardware con el cual trabajo desde hace un año:

  • Macbook Pro 2.0Ghz
  • 2GB Ram (inicialmente tenía 1.5Gb)
  • Disco duro Interno de 80 GB (20GB los tengo con BootCamp para jugar al Flight Simulator X), de modo que son 60 Gb de Mac OS X
  • Disco duro externo Firewire iomega de 250GB.
  • Monitor GTX 19” WideScreen (malísimo, pero grande y económico)
  • Teclado Apple USB (el nuevo). Originalmente tenía el Bluetooth anterior, pero es deplorable (por sus múltiples problemas de suciedad, teclas duras y que se traban, etc.) y tenía un Mighty Mouse Bluetooth también, pero no acabé de acostumbrarme y siempre terminaba haciendo el clic equivocado y volví a mi viejo, feo y querido Genius USB que anda perfecto y tiene unos 4 botones adicionales que uso para Exposé y Subir y Bajar Volúmen.
  • Mac OS X 10.4.10 (el ordenador vino con 10.4.2 o algo así).
  • Parallels 3.0, 79€ (inicialmente 1.x y luego sucesivas actualizaciones, una de ellas, la última, costó 49€ de “actualización”).
  • No tengo Office For Mac, pero uso iWork 8.0 (79€).

Adjunto una imagen reciente de mi entorno de trabajo.

Free Image Hosting at www.ImageShack.us

El teclado de la imagen es el anterior, ahora ya estoy trabajando con el nuevo y me parece mucho más cómodo.
Bien, presentado el entorno del Mac, permítanme comentarles qué hago exactamente con Windows™, Visual Studio y un poco de historia.
Desde hace muchos años he trabajado con Visual Studio. La vida me llevó del C++ al Visual Basic (menudo salto) y Visual Studio 3, 4, 5 y 6. Cuando apareció .NET, me pasé automáticamente al C#, porque me sentía mucho más cómodo en la sintaxis de C/C++ que con Visual Basic. Probé un poco de Java y me parecía “OK” pero nunca me pareció que Java pudiese siquiera acercarse a la sencillez y nivel de integración que tiene o tenía una aplicación Visual Basic a nivel Interfaz de Usuario. Swing o AWT me parecen horripilantes. De modo que permanecí al lado de Microsoft® todo este tiempo.
Hace más de tres años me compré un Powerbook, para “ver que tal funcionaba Macintosh”. Siendo un usuario de Linux en el lado de los servidores, siempre supe usar “la herramienta correcta” para lo que necesitaba. “Use the right tool for the job”. ;) Linux en el escritorio, sucks. ;) Ahora debo confesar que esto no es tan así, pero hace tres años si. Aparte tampoco existía Visual Studio for Linux (ni creo que vaya a existir nunca), de modo que usar Linux en mi ordenador era literalmente innecesario. No ganaba “nada” realmente y si posibles dolores de cabeza con incompatibilidades, drivers, etcétera. En fin, lo mismo que hoy, en menor medida, nos puede pasar si decidimos pasarnos a Linux. Pero Macintosh, me atraía como plataforma. Así que mi powerbook vino. Y ahí aprendí a usar Mac OS X. Entendí la filosofía del “It Just Works™” y quedé enganchado al sistema operativo.
Cuando al año apareció “Intel Inside” dentro de un Mac, fue casi un sueño hecho realidad. Todo parecía encajar perfectamente. Podía usar Apple Mail, Safari, Aplicaciones de Mac, tenía una terminal Unix disponible, en fin, la magia de OS X (por la cual tanto nos gusta usarlo) y Visual Studio a mi lado. Todo en un mismo ordenador. Maravilloso, ¿no?. No.

Lo cierto es que -como voy a relatar a continuación- no todo es color de rosas en esta solución. Hay algunas cosas que -aquellos que estén indecisos- es bueno que sepan antes de dar el salto. Lo que voy a relatar es obra mía y surge de mi experiencia como programador .NET 1.1 y luego .NET 2.0 de una aplicación “bastante compleja y grande” de WInforms, con una base de datos SQL 2000 (ahora migrada a SQL 2005).

¿Qué aplicaciones uso en Windows?

Utilizo Windows XP Profesional con Service Pack 2. Todo un estándard. (He probado Vista™, luego comentaré al final sobre esto).
Visual Studio, hasta hace poco 2003, ahora ya desde hace más de 5 meses, Visual Studio 2005.
No tengo SQL 2005 (ni ninguna otra versión) instalado en mi Windows, porque tengo un servidor SQL 2005 en otro PC “dedicado” para todos los programadores, de modo que no cargo con ese “peso”, pero lo he usado en otra máquina virtual y realmente no es “notoria” su presencia. Pero no puedo precisar demasiado porque repito que no lo tengo. Mi Windows XP se conecta al SQL vía ethernet.
Aparte de eso, instalo siempre en mis Windows, el EditPlus y el Total Commander. Y naturalmente las herramientas cliente de SQL (2005) en este caso, para tener el Query Analizer y los Books Online.
No instalo los Books Online de MSDN porque prefiero consultarlos en línea.
Tengo el RealVNC y el Tortoise SVN para el control de versiones del código. Y nada más.
Por motivos “laborales” tengo el Crystal Reports Xi Release 2 y el Tablet PC SDK. Hace poco instalé una licencia de Office XP en el Windows porque necesitaba las librerías de programación. Gajes del oficio.

No utilizo el Windows para nada más que .NET, creo que abrí el Internet Explorer 7, unas cinco veces en mi vida.

Parallels for Mac 3.0

No voy a contarles la historia de versiones anteriores porque no tiene sentido. Quien quiera usar Parallels (o VMWare Fusion) deberá usar la última versión disponible, de modo que voy a contarles el estado actual de este escenario. No tengo experiencia con el VMWare Fusion, así que no puedo comentar sobre eso, pero me imagino que la experiencia será similar. Estas son mis dos pantallas durante un típico día de trabajo.
A la izquierda la pantalla de 15” del MacBook Pro y a la derecha, la pantalla de 19” que también es 1440×900 (eso es muy bueno). Ambas pantallas tienen la misma resolución :)
El Visual Studio en pantalla completa, con el proyecto abierto. El Parallels normalmente lo utilizo así, en pantalla completa. Sobre la izquierda, mi espacio Macintosh. El Dock lo tengo sobre la izquierda pero nunca acabo de decidirme y a veces lo oculto (cmd-alt-d), pero luego me doy cuenta que es “molesto” tener que ir con el ratón a verlo y bueno, al final, queda ahí sobre la izquierda o a veces abajo, alineado sobre la derecha.

Una imagen vale más que mil palabras, dos, mucho más:
Free Image Hosting at www.ImageShack.us Free Image Hosting at www.ImageShack.us

No está permitido opinar sobre el WallPaper (fondo de escritorio), dado que cambia según la época.
Si utilizo el Windows con Visual Studio y poco más, ¿qué hago con el Macintosh?
Todo lo demás. Leo el correo, noticias, almaceno fotos (iPhoto), mi colección de 59GB de música está en iTunes, Instant Messenger (AdiumX), World of Warcraft, anotaciones, etcétera. Esencialmente todo lo demás lo hago en Macintosh. Me parece mucho más cómodo, simple, y realmente siento que “It Just Works™”, al menos en el 98% de los casos.

¿Cómo funciona todo esto en el día a día?

Muy bien. Pero no es perfecto. Y esto es lo que deben saber a la hora de pensar en esta solución. Trabajo casi doce horas por día en Windows, sin embargo no tengo más que el Parallels realmente. De modo que no estoy de acuerdo con el post de Applesfera que recomienda Windows Nativo para esos casos. Se puede perfectamente. Yo lo hago, pero hay detalles que quien aún no haya hecho el switch, debe saber de antemano; yo los aprendí por la fuerza.

  1. Hace falta memoria, mucha memoria. 2GB (el máximo en mi portátil) no es suficiente. Se puede utilizar, con proyectos medianos no hay problema, inclusive Visual Studio 2003 era más rápido y liviano que el 2005. Pero con un proyecto grande como en el que yo trabajo, se nota. Parallels tiene asignado 1GB de RAM para el Windows y programar con 1GB de RAM es “poco” hoy en día. Utilizar Reshaper es indeseable porque Reshaper es lento de por sí. Con 1GB de RAM y un proyecto grande es insoportable. De modo que hay que “conformarse” con las herramientas que trae Visual Studio 2005 Profesional -que no son malas, pero no se aproximan al Reshaper ni de coña-.
  2. Disco. La imagen virtual de mi Windows, pesa casi 20GB y se incrementa con el paso del tiempo. Se puede comprimir (y se debe) cada tanto, pero ocupa espacio. En un disco “lento” (5400RPM) como el del portátil esto se nota. He movido la imagen al disco externo (Firewire) y “anda bien”, amén que me libera el espacio -limitadísimo- del disco del portátil; pero el inconveniente es que el disco Firewire a veces se me desconecta porque el cable es una basura y los discos externos son muy molestos para transportar. Sin embargo, es perfectamente factible utilizarlo así. Hay un BUG en Mac OS X con los permisos de los discos externos, que por más que uno intente decirle que IGNORE los mismos, se empeña en -cada tanto- volver a tenerlos en cuenta. Nada que un cmd-i (info) -> Ignore Ownership no solucione, pero bueno, cada tanto hay que hacerlo. Todo esto porque Parallels tiene OTRO BUG, que hace que no siempre funcione la Máquina Virtual si no le gustan los permisos. En fin, nada grave, pero una vez cada dos o tres meses, tengo que recordar tildar eso en Mac OS X cuando se “va” misteriosamente.
  3. Velocidad. Cuando arranca el Parallels, mi procesador Core Duo se transforma literalmente en un procesador de un solo Core. Porque Parallels le asigna uno a la máquina virtual y otro para OS X. De modo que a veces se nota bastante que el Visual Studio está haciendo sus “cosas” y la máquina se pone más lenta. Tarda en responder unos segundos, enviar un Email a veces son 3 ó 4 segundos de GRRRRRRRR (actividad de disco). El iTunes rara vez, salta un poco cuando está reproduciendo un mp3 o similar. Digo Rara vez porque realmente no ocurre a menudo, pero depende del momento, si dos ó más aplicaciones deciden hacer algo en simultáneo, se notará. Ejemplos claros son cuando el Quicksilver se pone a actualizar el catálogo, el NetNewsWire se pone a sincronizar los RSS feeds, está entrando email, iTunes reproduciendo algo, el Safari con algún sitio “pesado” y el Visual Studio compilando. Está claro que no son tareas que hace un usuario todos los días, pero después de todo, los programadores, no hacemos lo mismo que un usuario. :)
  4. Estabilidad. Es muy difícil definir esto. Hay cuelgues. El Parallels a veces hace cosas raras. Muy pocas veces. Pero las hace. Alguna vez se ha “cerrado” (creo que menos de 10 veces desde que lo uso, pero las recuerdo…). Alguna vez no puede resumir una máquina virtual que fue suspendida (y hay que “reiniciarla” perdiendo la sesión) y cosas de ese tipo. Ocurren. Decir que no sería una mentira horripilante. Pero se puede usar perfectamente, no es algo de lo que uno esté pendiente todo el día. Cuando ocurre, se dicen dos o tres palabrotas, y se sigue. Después de todo, ¿hacemos backups, no? Si. Podría decir que es un 95% estable y fiable. Quizás hasta 98%, pero me reservo un 2% de inestabilidad. Tampoco es que yo le doy mucho uso al Windows. Después de todo sólo uso el Visual Studio allí dentro.

Estas son las 4 cosas más importantes a tener en cuenta. Se resumen en: Memoria, Disco, Velocidad y Estabilidad. No es nada sorprendente que sea así, y hasta suena “obvio” dicho de esta manera; pero es que a pesar de todo, es perfectamente utilizable aún para proyectos medianamente grandes. Ni hablar si los requerimientos son menores, yo creo que soy un ejemplo un poco extremo, porque mi solución de Visual Studio es grande. Pero si fuese algo más pequeño, esto cambiaría bastante (para mejor).

¿Qué se puede mejorar?

Creo que si mi portátil soportase 3GB de RAM, no lo dudaría. Prefiero seguir manteniendo esta configuración, gastar el dinero en más memoria (porque es caro) antes que tener otro ordenador. La conveniencia de poder arrastrar ficheros entre Mac OS X y Parallels, la ventaja de poder hacer Snapshots, backups de la máquina virtual fácilmente (se copia todo el .HDD y listo), de que Mac OS X es mas placentero (para mi) para el resto de las tareas informáticas que se me ocurran, y ese tipo de detalles, es que hacen que siga prefiriendo invertir en esta solución. Si el día de mañana dejo de trabajar en .NET, sólo me quedará el Boot Camp para usar el Flight Simulator y poco más.
Si mi portátil soportase Firewire 800 (y los nuevos lo hacen) quizás pondría un disco externo más rápido y más grande. La velocidad de disco es importante también cuando falta memoria RAM, el Swap es inevitable y mientras más rápido el disco, mejor.
CPU, supongo que los nuevos Core 2 Duo (recordar que el mío es Core Duo) quizás ayuden también a que ambos sistemas operativos tengan un poco mas de poder. Mi ordenador tiene un año de vida ya. Y todos sabemos lo que eso significa hoy en día.

He tenido el Parallels y el World of Warcraft abiertos en simultáneo y es increíble, pero ambos responden bastante bien; entiéndase por “bastante” como: Se nota que están ambos, hay más swap, el framerate del WoW cae un poco, pero andan y se pueden usar. No me imagino un Mac Pro con 4GB RAM, eso si que sería mejor aún. :)
Conclusión
Si están indecisos, espero que con este pequeño ensayo, tengan en claro que es un salto que se puede dar con bastante tranquilidad. Eso está probado que anda (no soy el único que lo dice). Nada es perfecto y esta solución tiene sus inconvenientes, pero realmente es un precio que cada uno debe evaluar si está decidido a pagar o no. En cualquier caso, todo apunta a que cada vez será mejor, porque los procesadores mejoran, la memoria baja de precio, los discos aumentan sus capacidades, y así la lista sigue eternamente. La velocidad del Visual Studio dentro de Parallels es muy buena y puesto en Pantalla Completa sin una pantalla externa, es difícil distinguir que se está trabajando en una máquina virtual. Nada que ver con lo que era el Microsoft Virtual PC (o como se llame). Es un mundo aparte.

Consideraciones Adicionales sobre Windows Vista™ y Parallels
Respuesta corta: No.
Respuesta larga: No y No. He probado Windows Vista™ en varios ordenadores reales (TabletPCs, ordenadores de escritorio y portátiles “normales”). Todos ellos nuevos, con Vista preinstalado. Sigo insistiendo: No. No me gusta Vista™. No voy a hacer una revisión entera, pero tiene muchos fallos que son exasperantes. Y tiene cosas buenas que me gustan. La búsqueda y el nuevo menú inicio son ampliamente mejores a lo que hay en Windows XP, punto. Pero no se justifica. Sumada a esta mala experiencia, vine a instalar Windows Vista™ en Parallels “para probar”. Como Partners de Microsoft, tenemos licencias de WIndows Vista™ Business. Anda MUCHO más lento que el XP Profesional (era de esperarse) Al punto que trabajar con Visual Studio en Vista + Parallels ya no es una experiencia grata. Al menos con mis escasos 2 GB de RAM.
De modo que si pensáis utilizar Vista™, de momento yo no consideraría esta opción como algo bueno. Claro que si estuviésemos hablando de un Mac Pro con 8 Cores y 8 GB de RAM, quizás la historia cambie. La realidad es que creo que el problema no es puramente de Parallels, sino del Vista en si. Hay que darle tiempo a un Service Pack 1 ó inclusive 2. En un futuro será perfectamente utilizable, estoy seguro de ello.
Dicho esto, igual cabe recalcar que se puede usar. Es más lento, tarda más en arrancar, tarda más en todo (inclusive tarda más en calcular el tiempo que va a demorar una copia de un fichero que la copia en sí) ;). Pero si necesitan Vista™ para probar una aplicación, naturalmente que se puede usar y muy bien. Al fin y al cabo, es para probar, ¿no?

Nota final sobre las copias de seguridad.

Todos sabemos que todo falla cuando menos lo esperamos; por ello yo realizo las siguientes copias de seguridad:

  1. Mi disco duro interno (El de Mac OS X) se clona diariamente con SuperDuper! (nunca voy a entender el “!” que le han puesto al nombre del software). El Clone es al disco iomega firewire, que tiene dos particiones. Una de 60 GB que es idéntica a mi disco interno y el resto para todo lo demás. O sea, las máquinas virtuales de Parallels, mi biblioteca de iTunes e iPhoto, etc. Todo lo tengo en ese otro disco. La copia de SuperDuper! es booteable y si fallase (como ya me ocurrió con el Powerbook) mi disco interno, podría arrancar perfectamente desde allí “como si nada”. Recomiendo esta solución a todos los usuarios de Macintosh. No tener una copia de seguridad es idiota. No tener una copia de seguridad tan buena y booteable que te permite seguir trabajando en menos de 2 minutos (malas palabras de por medio por haber perdido el disco), pudiendo hacerlo tan fácilmente, ya es de doble idiota. De verdad.
  2. La partición del disco duro externo, donde está todo lo demás (iTunes, iPhoto, Máquinas Virtuales, etc.) se copia una vez por semana a un disco externo USB2 que tengo “tirado” por ahí. Esto es porque si falla el disco Firewire, me quedo en pelotas y sin documentos. :) SuperDuper! al rescate.

Seriamente hablando, usar cualquier programa, pero hacer copias de seguridad. Todo puede fallar.

En fin, si han leído hasta aquí, debo felicitarlos, yo no se si lo hubiese hecho…
Si a pesar de todo deciden hacer el Switch, buena suerte y coraje, que -en mi humilde opinión- el balance es positivo. ;)
Update:Si, se llama Parallels, con dos L. He corregido el error (gracias al que me lo hizo ver). Y eso que veo el icono en el Dock TODO el día, en Quicksilver, en todos los sitios decía Parallels y yo no lo quería ver. En fin. Corrección de Paralells a Parallels. :O

Update2: He escrito una segunda parte, que cubre Leopard.

7 Comments

Leave a Reply