viernes, marzo 31, 2006

Tiempo para seminarios

Llevo un par de días con mucho trabajo burocrático acumulado. Tengo bastante correo acumulado, y estoy limpiando un poco la página de inicio de www.marteens.com, quitando toda la historia ya antigua sobre las aventuras y desventuras de Borland y las betas anteriores al lanzamiento de Visual Studio 2005. Es difícil mantenerlo todo al día...

Visual Studio 2005
Principal novedad: voy a empezar una serie de seminarios presenciales en Boadilla del Monte, los sábados. Creo que es mucho más complicado coordinar que varios programadores abandonen su trabajo durante cuatro o cinco días y se vengan a un curso presencial. Está, además, el problema del precio... no porque sea caro, porque cobramos menos que la "competencia", sino porque en este momento, la relación coste/riesgo no está muy clara que digamos para muchos. Es normal...

Por eso, la idea que se me ha ocurrido es convocar estos seminarios de un día los sábados (el domingo es para la familia). La otra reducción de costes se produce al evitar tener que alquilar un aula y ordenadores: es mejor que cada programador lleve su portátil personal, configurado como a él le gusta, en la forma en que le hace más productivo. Y es coste innecesario que se puede quitar del precio del seminario.

Tarea pendiente para un servidor: redactar un par de temarios alternativos que se puedan impartir en 5/6 horas, y que sean muy prácticos. Y señalar las fechas tentativas. Todo esto, antes del próximo lunes, lo prometo...

viernes, marzo 24, 2006

Lo tengo...

Ya tengo la página donde se activan las suscripciones, al menos en Europa:

https://microsoft.eu.subservices.com/msdn/default.asp
La persona que me atendió en Soporte me ofreció activar manualmente la suscripción, pero al comentarle que podía ser un problema más "general", me dio directamente la URL. Además, le pregunté si era una página que se pudiese utilizar públicamente (para publicarla como estoy haciendo ahora) y me respondió que sí. Es extraño, de todos modos: observad que el dominio no es el habitual de Microsoft.

Siguiente paso: voy a contactar con el departamento comercial a ver si puedo resolver el misterio de los envíos a Afganistán...



¡Por fin! Ya me ha llegado el Visual Studio 2005. Estoy desinstalando todo lo que puedo de la beta 2 del portátil. Probablemente quite también las versiones anteriores de SQL Server (viene incluído el SQL Server 2005 Developer Version), porque sospecho que debo tener cuatro o cinco instancias del servidor funcionando en paralelo.

En cuanto tenga funcionando el Visual Studio y el SQL Server, contaré qué tal. Como dije antes, pedí la Pro (con MSDN Pro): si no, es difícil aconsejar sobre qué versión trabajar a otros. Y sospecho que, en la mayoría de los casos, basta con una Pro. De antemano, sé que me va a faltar el Profiler, y todas las tonterías de diseño UML. Pero en cualquier caso, quiero probarlo por mí mismo antes de ponerme a dar consejos.

(estos son los juguetes de un adulto... sniff...)



Primera divergencia (para bien), respecto a la publicidad: la caja dice que vienen incluídas las herramientas para Office, que se venden también como producto separado (y no precisamente a precio barato). Juraría que ninguno de los folletos y páginas que he leído lo incluían. Pero lo mismo me equivoco... o se está equivocando la caja. De todos modos, si vienen con esta versión, estupendo...



Definitivamente, no vienen las Office Tools en el DVD de la Professional. Si la caja no miente, deben venir entonces con la suscripción a la MSDN. En la caja vienen:

  • Dos CDs con Visual Studio 2005, hablando con propiedad.
  • Un CD titulado ".NET Frameworks SDK (x64)".
  • Tres CDs con la MSDN Library en castellano.
  • Un DVD con SQL Server 2005 Developer Edition.
  • Un CD con Windows XP Professional SP2.
  • Un CD con Windows 2003 Sever Enterprise SP1.
Por esto es que sospecho que habrá que descargar el resto del contenido: no veo, por ejemplo, WXP para AMD64. Hoy sábado, intenté registrarme en la página de suscripciones... ¡pero el número de serie que viene en la caja para activar la suscripción no tiene el formato que parece esperar la página! Las páginas en español para las suscripciones MSDN, además, son un verdadero laberinto. Tendré que esperar hasta el lunes para ver qué más viene con la suscripción.

Visual Studio 2005, en sí, no defrauda. He repasado la lista de bugs menores de la beta, y efectivamente, han desaparecido. Estoy trabajando ahora con un portátil Sempron 3000+, con 1GB de RAM (Acer ha tardado más de un mes en servirme la ampliación de memoria, un chip de Kingston que podría haber comprado en cualquier otra parte a mitad de precio; no le recomiendo Acer a nadie). La única operación que te hace esperar en esta configuración es la primera petición de ayuda. El resto es una gozada. Lo que voy a hacer ahora, por si a alguien le sirve, es capturar las imágenes del administrador de proyectos para mostrar los distintos tipos de proyectos y plantillas que vienen con esta versión.

jueves, marzo 16, 2006

La metodología Santo Tomás

¿No se lo cree si no lo ve? Es lo natural. Pero puede echarle un vistazo, tanto a Visual Studio 2005 como a SQL Server 2005, pidiendo un DVD de evaluación a Microsoft:

Visual Studio 2005/SQL Server 2005

En la página del formulario avisan que habrá en breve un formulario separado para Europa, pero ya se puede pedir en América Latina. La edición de Visual Studio 2005 que se incluye es la Team Edition, es decir, la más cara y completa.

Como ya he encargado mi copia pagada (he pedido una versión Professional con MSDN Pro), no he llenado el formulario, y no sé cuánto cobran esta vez por los gastos de envío. En situaciones similares, la costumbre es cobrar una media de 10 dólares por el envío. En el caso de las betas de VS2005, ni siquiera se cobraron los gastos de envío: envío gratuito.

La versión funciona 180 días a partir del momento de su instalación.



Sharq tiene información más al día que la mía. Las versiones de evaluación pueden conseguirse aquí para España:

Versiones de evaluación

Me comunica también en un comentario a esta entrada que el precio es de 12 euros por DVD... y que lleva ya tres semanas esperando. Es bueno saberlo...

lunes, marzo 13, 2006

Comentarios

I could be bound in a nutshell
and count myself a king of infinite space
Hamlet

Pido disculpas formales: activé la "moderación de comentarios" pensando que se trataba, entre otras cosas, de la posibilidad de editar faltas de ortografía en mis propios comentarios... pero evidentemente, no era eso. Para complicar las cosas, Blogger lleva una semana dando palos de todo tipo: cuando me di cuenta del problema, tampoco pude entrar en la página de moderación para ir publicando los comentarios pendientes. Ya están publicados todos, excepto un par de comentarios que estaban repetidos (pero la primera copia ya está también publicada). Al parecer, un cambio en la base de datos o en la aplicación de Blogger es la causa del caos, según la página de información de estado del propio Blogger.

El único sentido que tiene este formato de bitácora es, precisamente, que se pueda practicar la libertad de expresión. El único límite es el que marque la ley, y por suerte, no estamos debatiendo tópicos tan complicados. Es cierto que incluso hay esclavos que se sienten libres. ¿Cómo saber entonces si realmente uno lo es? Muy simple: camina. Cuando tropieces, aunque no veas con qué has tropezado, ahí hay una pared. Quizás todos estemos rodeados de paredes... pero hay paredes en habitaciones asfixiantes y hay paredes en la suite presidencial de un hotel, ¡y vaya si hay diferencias! Además, en unos casos, el propósito de la pared será evitar que te caigas de la vigésimo quinta planta del hotel. Pero en ese caso, se suele poner un balcón, o una ventana para mirar lo que hay al otro lado...

... quiero decir, antes de seguir complicándome con el símil, que no fue con una pared con lo que pudo tropezar la semana pasada. Lo que pasó es que hice obras y se me olvidó retirar un tabique...

Horizontes

¿Qué razones hay para migrar a .NET? A primera vista, es difícil encontrarlas. Borland, por ejemplo, justificó algunas de sus decisiones estratégicas respecto a Delphi.NET mediante un símil equivocado: comparó la transición a .NET con la que tuvo lugar hace tiempo desde DOS hacia Windows. ¿Por qué convenía al programador realizar esa transición? En mi caso, el motivo fue disponer de toda la memoria física que admitían los procesadores de 32 bits (¿quién se acuerda de la barrera de los 640KB?). Claro, por entonces trabajaba con algoritmos geómetricos que consumían mucha memoria... Para otros, el motivo fue la nueva interfaz gráfica, o la novedad de poder "dibujar" sobre la impresora, gracias al GDI, de la misma forma en que se dibujaba sobre pantalla. Especialmente con la llegada de Windows 95, el programador que daba el salto recibía como recompensa una interfaz gráfica que por entonces parecía muy difícil de programar. No es que el cliente final del programador exigiese tal interfaz: es que al usar esa interfaz, la aplicación ganaba en valor subjetivo. Y por supuesto: en determinados tipos de aplicaciones, una interfaz gráfica era lo apropiado.

¿Ocurre algo similar con la migración a .NET? Aparentemente no... pero hay varias sorpresas. Veamos primero lo de la memoria. ¿Cuál compilador de 64 bits está usted utilizando ahora mismo? En mi caso, uso Visual Studio.NET. Las alternativas son Java (y ya conoce una parte de lo que opino sobre Java), y algún otro compilador nativo, probablemente caro y bastante limitado en herramientas de soporte para el desarrollo. Es verdad que una aplicación típica de gestión no necesita el espacio de memoria que ofrecen los 64 bits, pero no todo el monte es orégano. Se avecina otro cambio importante: la aparición de Windows Vista, con Avalon sustituyendo a la obsoleta GDI. No se trata de un retoque en el estilo visual: Avalon significa gráficos acelerados por hardware, gráficos 3D sin excesivo esfuerzo, controles mucho más potentes, soporte para vídeo y audio, incluyendo reconocimiento y síntesis de voz...

Pero hay más ventajas y posibilidades en .NET, y no hay que esperar al futuro para sacarles partido. Y lo mejor de todo es que cualquier aplicación de gestión puede aprovecharlas. No obstante, se lo voy a explicar haciendo referencia a XSight Ray Tracer. La clave está en la extensibilidad. De entrada, XSight RT es fácilmente extensible. No existe una primitiva para crear pirámides en este momento. Para añadir pirámides, tanto al motor como al lenguaje, basta con declarar una clase que implemente la interfaz IShape. Pero eso lo permite cualquier lenguaje orientado a objetos, ¿no? La diferencia se nota cuando hay que "registrar" la clase para que el núcleo de la aplicación la encuentre. En .NET, el núcleo utiliza reflexión para que sólo sea necesaria una instrucción. En Windows nativo, necesitaríamos definir un mecanismo de registro partiendo de cero... e incluso si todo saliese bien a la primera, habría que tener mucho cuidado con los problemas asociados a las DLLs.

Una aplicación como XSight RT, necesita matemáticas a toneladas. Por ejemplo, la apariencia del mármol en la segunda imagen se logra combinando un patrón regular con una función de ruido espacial. Extender esta funcionalidad siempre ha sido complicado. POVRay, por ejemplo, implementa un sencillo intérprete de funciones y proporciona un conjunto básico de funciones matemáticas primitivas. ¡Pero se trata de un intérprete común y corriente, una simple máquina de pila interpretada! XSight puede hacerlo mejor: basta extender el lenguaje de escenas con funciones matemáticas, que pueden compilarse sobre la marcha a código IL... ¡y este código IL se convierte en código nativo para ser ejecutado! No hace falta que el código generado pase por el disco duro: en .NET v2.0 existe un nuevo API simplificado que permite generar código sobre la marcha para métodos, sin tener que declarar antes toda una clase.

¿Y qué hay con las aplicaciones de gestión? Classique, para Windows nativo, permite definir fórmulas para calcular los gastos de envío. En la última versión (en algún momento lo pasaré a .NET), para evitar complicaciones, la fórmula se "compilaba" a Transact SQL, para que fuese ejecutado remotamente por el servidor, a petición del cliente. ¿Y qué hay de los motores de scripts? Bien, es cierto que se podía usar el motor de JScript en Windows nativo, igual que ahora se puede usar Visual Studio for Applications, para incorporar un motor de JScript, o incluso de C#, dentro de cualquier aplicación. ¿La diferencia? En Windows nativo, el motor de scripts estaba basado en un intérprete, pero en cualquier caso, los modelos de objetos del host y del motor de scripts eran muy diferentes, y se complicaba la comunicación entre ambas partes. En .NET, en cambio, las dos partes implicadas coexisten dentro del CLR. Eso significa, en primer lugar, que el código script no se interpreta, sino que también se ejecuta como código nativo. Además, al usar el mismo modelo de objetos del anfitrión, aparecen muchas opciones de comunicación interesantes. Por ejemplo, se puede declarar en JScript.NET una clase que use como ancestro una clase declarada en C#.

Y estoy sólo arañando la superficie...

sábado, marzo 11, 2006

Cada día somos más libres en España

El Gran Hermano Zapatero decide qué es Bueno y qué es MaloSoy asmático. No recuerdo mi primer ataque de asma porque por entonces tenía seis meses, día más o día menos. Desde entonces, el asma es una constante en mi vida. A veces hay buenas temporadas, y se me cierran los bronquios sólo una vez al mes. A veces toca una mala racha y los ataques son más frecuentes; cuando era niño, por ejemplo, lo normal era tener un ataque cada noche. Y sin embargo, sobreviví. No es una enfermedad que se pueda curar definitivamente, de momento, pero es relativamente fácil detener un ataque de asma. El medicamento más popular, por lo efectivo e inocuo, es el salbutamol, que se usa casi siempre con un inhalador. La presentación más popular es el Ventolín, de la Glaxo. Uno se acostumbra al asma igual que se acostumbra a ser alto o bajito, a ser gordo o ser flaco. No recuerdo cuál fue la última vez que fui al médico por un ataque de asma. Tras tanto tiempo padeciendo esta molestia, estoy convencido de saber mejor qué me conviene que un médico que me ve por primera vez y que probablemente no volverá a verme en su vida.

Hoy he ido a comprar Ventolín a la farmacia. La farmacéutica no me lo ha vendido. Este gobierno que padecemos en España, que se preocupa tanto por nosotros, ha decidido que los farmacéuticos no puedan decidir sobre la venta de estos medicamentos, y castiga ahora la venta sin receta de medicamentos completamente inocuos como el Ventolín. Este gobierno, que más bien debería llamar desgobierno, sabe mejor que yo lo que me conviene y lo que no me conviene. Me conviene perder un par de días en concertar una cita con las S.S... perdón, con la Seguridad Social... para una consulta que puede tener lugar perfectamente dentro de un mes. Si en ese mes tengo un ataque de asma, o tengo un dolor de muelas que no puedo calmar con aspirinas... pues tengo que (ponga aquí el verbo apropiado). Pero Zapatero, el Gran Hermano, vela por nosotros. No, no es la primera gracieta que hace este individuo y que me afecta personalmente. Pero uno normalmente se calla y dice "esto no va conmigo". Hasta que un día revientas. Hoy me toca reventar.

Zapatero, por mí, puedes irte a la mierda...

martes, marzo 07, 2006

Para aprender .NET

Tenía un comentario sin responder en una entrada que se ha movido al archivo (Open Source Killed the Software Star). La pregunta era, más o menos, cuánto se tardaba en dominar .NET.

Si es para programar en ASP.NET (especialmente, la versión dos), la curva de aprendizaje es muy cómoda. En una semana está usted escribiendo código... siempre que se trate de aplicaciones con poca carga. Esta salvedad la hago pensando en la dificultad adicional de entender cómo funciona a fondo el sistema de acceso a datos en ADO.NET. Pero si se limita a imitar las técnicas más sencillas de acceso a datos, no hay demasiada dificultad. Y en muchas aplicaciones bastará con esto.

¿Es mucho o es poco? En la cuenta he incluido el tiempo necesario para experimentar con la administración de proyectos, y los primeros golpetazos con el lenguaje. Estoy pensando también en un programador con experiencia en Delphi o Java, no en un novato absoluto. Pongo a Java aquí en el mismo nivel que Delphi porque en este caso, el control de eventos es menos complicado.

Donde se puede tardar algo más es en las aplicaciones de interfaz gráfica, especialmente para sistemas divididos en capas. El programador de Delphi tiene aquí una ventaja importante (si conoce DataSnap, por supuesto). La dificultad viene dada porque ADO.NET no ofrece una interfaz similar a IDataBroker para definir el intercambio entre capas. Usted tiene todos los elementos para construir el sistema que le apetezca, y los bloques modulares son muy potentes y a la vez sencillos... pero depende de usted la forma que vaya a adoptar ese sistema. Por experiencia, cuando uno aprende un sistema nuevo, esta riqueza de alternativas suele percibirse más bien como una "amenaza": existe el temor fundado de elegir la vía menos apropiada y pagarlo a la larga.

En esto, la ayuda que puedo ofrecerle es el curso de ADO.NET. Precisamente, el objetivo de este curso es montar un sistema de este tipo, primero para el acceso a datos, y luego para la propia estructura de la aplicación (ventanas, menús, etc).

Respecto a la posibilidad de atascarse por culpa de un hueco de funcionalidad, las probabilidades son mínimas. En primer lugar, .NET v2.0 ha añadido un buen puñado de APIs para resolver problemas de este tipo: cifrado, compresión, etc. Pero sobre todo, siempre existe la posibilidad de acceder a una función ubicada en una DLL nativa, o simplemente importar una clase ActiveX para manejarla como si se tratase de una clase nativa .NET. Este procedimiento debe ser siempre la última opción, por supuesto... pero es bueno saber que está ahí, y que es fácil de utilizar.

Para quien no la conozca, exista una página, PInvoke.NET, que contiene prototipos para la mayoría de las funciones nativas del API de Windows (¡visite la sección Helpful tools!). Se trata de un "wiki", por lo que la página está en constante crecimiento. Por supuesto, siempre queda el problema de saber qué hacer con la función del API... pero se supone que estamos hablando de una persona que ya sabía cómo desenvolverse con Delphi y que ahora quiere probar fuerzas en .NET.

domingo, marzo 05, 2006

Otra mala noticia

Muy malo para Firebird, malo para Delphi... y quién sabe si bueno para MySQL:
Jim Starkey y Ann Harrison: a MySQL
Jim Starkey es el padre del InterBase, y Ann Harrison, que saltó a la fama cuando el brete que provocó la escisión de InterBase en dos, es su esposa. La verdad es que la noticia me da mucha pena: cuando sólo cuatro gatos sabían en España qué demonios era eso de InterBase, un servidor se partió los cuernos haciendo demostraciones y empujando el carro (sin que nadie de los que ganaban dinero vendiéndolo me lo reconociese jamás). Otra cosa es que, desde hace bastante tiempo, los avances hayan sido pequeños, tanto en Firebird como en InterBase. Creo que la arquitectura física de InterBase no debe dejar mucho espacio a mejoras espectaculares. Muchas de las opciones de administración que se perciben como un plus en SQL Server, Oracle y los servidores más mainstream son, en realidad, consecuencias de la existencia del transaction log en estas arquitecturas. Recuerde, por ejemplo, que el llamado "motor de replicación" de InterBase es una adición tardía, basada originalmente en triggers... y por tanto, bastante frágil.

jueves, marzo 02, 2006

Lo más difícil en Delphi

En un comentario en esta página, Dani Coll menciona un nuevo lenguaje de programación, dentro de la categoría "for kids". Y se me ocurre una pregunta:
  • ¿Qué es lo más difícil de entender para alguien que comienza a programar en Delphi?

Yo positivamente qué es lo que más trabajo me cuesta explicar, pero me interesa escuchar comentarios...