Como lo prometido es deuda, he aquí un relato pormenorizado de mis andanzas de ayer. Como sabréis los dos o tres que leéis este blog (
hola, mamá!) ayer se celebró el
Developer Days 2005, en los cines Kinépolis de Madrid; para presentar las novedades ya disponibles en la beta 2 de VS 2005 y unas cuantas cosas más. Antes de nada, pedir disculpas por la ausencia de acentos: mi PDA no los tiene, y alguno se me escapará al revisar el documento. En fin, vamos a ello.
0700: Monto en la
Continental, A.K.A.
la Conti, el autobús interurbano que me llleva a Madrid, y al tajo, todos los dias. Pero en este caso el trayecto es
cojonudo: de Alcalá a Canillejas (afueras de Madrid) en bus, metro linea 5 hasta Aluche (afueras de Madrid... al otro extremo) nada menos (27 estaciones) y luego otro autobús hasta Ciudad de la Imagen y los cines Kinepolis.
Necesito un coche.
0905: Llego a Kinepolis. Al final he tenido que coger un tax, porque la cola para coger el autobús que me hubiera llevado a Ciudad de la Imagen era tremenda: no se hubiera vaciado ni con que llegaran cinco autobuses de golpe.
0930: Presentación del evento. En la pantalla del cine proyectan un fondo de pantalla con motivos Microsoft y circunscrito a ese fondo una pantalla en la que se muestran las presentaciones, como es costumbre. Pero lo que nos recibe es una especie de muñeco 3D, más hortera que Ágatha Ruiz de la Prada en Halloween, con un insoportable acento francés (supongo que culpa del
animador que hablaba por el bicho, que intenta infructuosamente que lo aplaudemos o que le digamos a coro
buenos días como el público subnormal de los Teletienda yankees. A ver cuando aprenden que esto es España, joer. El muñequito presenta a un alto cargo de Microsoft, que no recordé apuntar como se llamaba ni que cargo tenía, sorry. Empezamos bien. El caso es que el hombre nos dio una charla optimista acerca de cómo el negocio IT está despegando (otra vez) en España, pero esta vez de verdad, no como el espejismo
punto com. Otra cosa que dijo, y que después me dio que pensar, es que España puede ser el destino de, y cito,
proyectos complejos de deslocalización. ¿Y se supone que eso debe ser motivo de alegría? Para aquellos de vosotros que no llevéis corbata, la deslocalización es el proceso por el cual una empresa se da cuenta de que sus curritos cobran demasiado y de que en la India (por ejemplo)
parece que les pueden hacer el mismo trabajo por mucho menos dinero. Quien dice la India dice Rumanía, Rusia, Huesca o Villacabras del Palancar. Cualquier sitio en el que el nivel de vida sea más bajo que el tuyo y los sueldos, también. Por lo tanto, lo que se hace es despedir a todos los trabajadores locales (que ya se sabe que cobran demasiado y encima son avariciosos y siempre quieren cobrar más) y
deslocalizar los proyectos haciendo que los hagan hindúes que no sólo cobran menos sino que además no piden tantas zarandajas como seguros médicos, cobertura al desempleo, días de vacaciones remunerados y otros estorbos que hacen que la empresa no gane toda la pasta que debería; que es, sencillamente,
toda. En fin, que me pierdo: que me resulta muy curioso que deba ser motivo de alegría el ser receptores de proyectos complejos de deslocalización. En lo obvio, sí, debemos alegrarnos: más curro para todos, lo que siempre es bueno. En lo no tan obvio, uno piensa que si se vienen aquí proyectos de otros lados sencillamente debe ser porque estamos mal, muy mal en materias de retribuciones, beneficios sociales y esas cosas comparados con los países que nos van a echar la mier... digo, a deslocalizar sus proyectos. Otra cosa es lo
imaginativos que son los directivos de las empresas cuando se trata de abaratar costes: siempre parecen pensar
vamos a joder a los de costumbre. Y cuando no son despidos masivos, son regulaciones de empleo y ahora las deslocalizaciones. Joer, os juro que el día que unos ejecutivos se reduzcan el sueldo a
límites razonables para abaratar costes habrá que hacerles una estatua o algo.
En fín, que me pierdo. Otra cosa interesante que mencionó este hombre (de verdad que lamento no haber apuntado quién era) es la iniciativa
DotNet Solidario, una iniciativa apadrinada por Microsoft mediante la cual se quiere proporcionar herramientas software gratuitas a las ONGs que lo deseen (y que no piensen que Linux es más alternativo y radi y más guays, y por lo tanto más adecuado a su ONG, claro). Aquellas ONGs que se apunten a la iniciativa (y ya hay unas cuantas) disponen de un Visual Studio NET 2003 gratis, amén de un hosting completito también por la patilla. No sólo eso: si eres desarrollador y quieres colaborar construyendo la página web de una ONG, puedes apuntarte.
1000: Presentacion de Compact Framework 2.0, por Alejandro Mezcua. Para mí, unas de las presentaciones más excitantes de la mañana, aunque vi a bastante gente dormida. Justo antes de que comenzara la presentación nos enseñaron un sistema novedoso en los Dev Days: para hacer que la gente pudiera preguntar, han copiado a programas estilo
Salsa Rosa y han habilitado un número de teléfono para que la gente pudiera enviar preguntas por SMS (eso sí, a un teléfono normal). Montaron un servicio web conectado al teléfono móvil de destino que recogía los mensajes recibidos y los enviaba a un Windows Forms. Nos enseñaron por encima cómo hacerlo y parecía simple. Envié una pregunta, claro.
En general, podemos esperar un rendimiento y unas capacidades muy mejoradas en la nueva CF. Entre lo destacable, mencionar mejoras en el manejo de strings, XML y ADO .NET con SQL Mobile (la nueva versión de SQL CE, claro). Validación de Schemas para XML (pero no para DTD), soporte XPath y serialización genérica con XmlSerializer. Los controles,
por fin, permitirán docking. Los formularios incluirán automáticamente un scroll cuando el formulario sobrepase las dimensiones de la pantalla. Eventos SuspendLayout y ResumeLayout.
ChangeOrientation para cambiar la orientación de la pantalla, apaisado o vertical, incluida en el CF. Adaptación automática de los formularios y sus controles a los cambios de resolución, o de rotación. Controles nuevos: DateTimePicker, MonthCalendar, DocumentList, LinkLabel, Notification, Help, DataGrid, WebBrowser. Añadido soporte para el portapapeles. Eventos y propiedades para teclados. Intellisense mejorado: muestra solo los elementos relacionados con el tipo de dispositivo con el que estemos trabajando. Herramientas remotas, proyectos de instalacion mas conpletos que la simple generación de ficheros CAB que tenemos en el CF 1.1. SQL Mobile estara muy integrado con SQL Server 2005 y VS 2005, con soporte DTS y plan de ejecucion grafico. Se podrá realizar databinding mediante drag and drop. Nuevo cursor, SqlCeResultset, navegable y actualizable, y permite DataBinding. Mas de una conexion simultanea permitida con BDD. Compresion automatica de la BDD. Mejoras en la sincronización con SQL Server 2005. Rendimiento mejorado en la sincronización (update de datos, no de registros completos). Y una novedad muy curiosa: el diseñador de Forms viene ya con el skin del dispositivo de destino, para que sepamos de antemano cómo queda la aplicación visualmente. El skin es personalizable para que podamos incluir las características propias del dispositivo. En general, una muy buena presentación.
1100: El muñeco francés es un hortera, y no tiene ni puta gracia.
1100: Leonardo Diez nos presenta las novedades del Framework 2.0. Incluirá soporte para hardware de 64 bits, en el CLR y las librerías de clases para WinForms, ADO.NET, ASP.NET y servicios Web. No se podrán hacer llamadas a APIs nativas ni código no manejado. Permite desarrollar en plataformas 32 bits y depurar remotamente en plataformas 64 bits. Aparte de eso, se incluye el muy añorado por los programadores de VB6
Edit & Continue, soportado por el CLR y el compilador, en C# y en VB .NET, Win y Web Forms. Para aquél que no lo haya experimentado nunca, era la posibilidad de detener la ejecución en modo depuración y poder hacer cambios en tu código directamente, para poder continuar la ejecución después con el código nuevo. Personalmente, no lo hecho de menos: es una mala práctica.Se dará mucha más información al programador en modo debug: DataTips mejorados, inspección de objetos simplificada, visores de tipos para DataSet, XML y HTML. Esto de los visores de tipos es impresionante: imaginaos que tenéis un objeto XML que, a fin de cuentas, es un chorro tremendo en formato string. En modo debug, podremos abrir su datatip, expandirlo y elegir verlo en un visor: podremos ver los datos en modo jerárquico, con exactamente la misma presentación que hace IExplorer de XML. Si abrimos de esta manera un dataset en modo debug, nos abre un formulario con los datos que tiene nuestro dataset en formato rejilla. Es más, podremos crear visualizadores personalizados para nuestros objetos. A estas alturas yo ya estaba babeando. Mucho. Otra característica interesante: ObjectTestBench y la ventana de Inmediato nos permitirán ver el comportamiento de nuestros objetos
antes de ejecutar la aplicación. Los ya mencionados genéricos, y tipos parciales que es la capacidad de definir nuestras clases en múltiples ficheros .CS para por ejemplo separar nuestro código del autogenerado o para mejorar la compartición de trabajo, simplemente declarando la clase como
partial y respetando las sencillas restricciones que hay. Para VB .NET se añaden las clases
My, que en Microsoft denominan
clases de acceso directo: My.Application, My.Computer, My.Forms, My.User, My.Settings, y un largo etc. Es una simplificación de código pura y dura. No me emocionó la idea: parece ser que desde la misma Microsoft desprecian a VB haciendo el lenguaje de programación
for dummies. Tendremos snippets de código incluidos, Intellisense mejorado, refactorización, corrector sintáctico mejorado, etc. Es decir, exactamente lo mismo que ahora hace
ReSharper, pero incluido. En concreto, las capacidades de Refactoring incluyen el renombrado inteligente de variables, extracción automática de métodos e interfaces, quitar o reordenar parámetros, y convertir automáticamente variables en propiedades. Otra cosa que me gustó, porque recientemente me ha tocado de cerca, es que en C# se ha simplificado mucho la creación de enumeradores mediante la sentencia
yield.
11:35 Descanso. Justo cuando pienso en lo coñazo que es venir a estos eventos solo, me encuentro con un antiguo compañero de curro y su novia. =)
1200: Pasan un anuncio del proximo
TechEd, en Amsterdam. Cómo me gustaría ir. Pero los 2250 € no están, sencillamente, a mi alcance. Y eso es la inscripción en el evento, viaje y alojamiento no incluidos. Y aunque tuviera esa pasta la guardaría para comprarme una licencia de VSTS.
1205: Para mi sorpresa, y cuando creí que se habrían olvidado, me responden a la pregunta que hice por el móvil. En efecto, me dicen que las capacidades P/Invoke del CF 2.0 están muy mejoradas. Y que se han aplicado el cuento viendo a los de
OpenNETCF (al fin y al cabo, son MVPs) y que la CF 2.0 incorporará bastantes clases
wrapper para acceder a funcionalidad de la máquina a bajo nivel de forma cómoda. Bien, pero que muy bien. Por otro lado, nos comentan que por un problema logístico no han podido entregarnos el DVD con la beta 2 de VS en la bolsa de bienvenida (que pesa un quintal, y el 90% es morralla); pero que las mandarán por correo a todos los asistentes. Ya tengo dos. =)
1210: Pablo Peláez nos presenta VSTO 2.0: Visual Studio Tools for Office, basándose en el paradigma
smart client que Microsoft lleva un tiempo defendiendo (y yo también, por modesta que sea mi aportación). VSTO es un modelo de código subyacente para desarrollar soluciones centradas en documentos Office, aunque de momento sólo funciona para Word y Excel, usando codigo manejado. VSTO, y esto lo recalcó bastante el ponente, no reemplaza de momento a Visual Basic for Applications o VBA, sino que lo complementa. En el propio IDE de VS se incluyen diseñadores para documentos Word y Excel, y dichos documentos incluyen soporte a controles .NET y un modelo de programación mejorado: de hecho es un modelo-vista-controlador, al estilo ASP .NET. Para hacer una distribución desconectada de nuestros documentos, y que podamos mostrar documentos Word o Excel sin tener que instanciarlos, podemos crear
islas de datos, insertadas en el assembly. La demo fue bastante impresionante: Peláez cogió un típico documento Excel de cálculo de hipotecas y lo convirtió en un momento en un documento interactivo, que recibía fotos de un servicio Web, etc.
1230: WinForms, por el mismo ponente. Me doy cuenta al revisar mis notas que de esto he tomado muy pocas, pero es un detalle que se debe interpretar al revés. Escribir en la PDA es duro (o al menos yo no estoy acostumbrado) y si tomé pocas notas en esta charla fue precisamente porque me dejo impresionado, no por falta de novedades. Los ya mencionadas DataTips, smart tags, document outline y edición rápida de propiedades. Auto alineamiento de controles, y reglas para la alineación de los mismos. Nuevas fuentes de datos. ClickOnce para deployment inteligente de clientes via web (im-pre-si-o-nan-te). Mejoras en los procesos de instalación y desinstalación de nuestras aplicaciones Windows. Podemos seleccionar campos de una base de datos desde la vista de servidores y al arrastrarlos sobre el formulario se
traducen en sus correspondientes controles TextBox o ComboBox o NumericUpDown. Controles Panel con layout interno invisible para posicionar controles. Redimensionado automático de controles al cambiar tamaños de pantalla. Autoscroll. Etc.
1245: César de la Torre nos presentó las novedades en ASP NET 2.0. Y son unas cuantas: las
master pages, que permiten crear una plantilla fija para nuestro sitio web y que el resto de las páginas hagan uso de la
herencia visual y hereden partes o todo el aspecto de las master pages. Temas, skins. Se introducen los profiles: almacenes de datos persistentes, fuertemente tipados, que
no tienen nada que ver son los SessionState actuales. Controles nuevos para WebForms.
Muchos controles nuevos. Pero muchos, muchos: unos cincuenta y pico. TreeView, SiteMap, controles de navegación, GridView mejorada, DetailsView, controles DataSource SqlDataSource para hacer databinding directamente con una base de datos y ObjectDataBinding para hacer databinding con nuestros propios objetos de lógica de negocio. Nuevos servicios base: membership para logins con interfaz multi-proveedor, controles web integrales de login y servicio web para gestión de roles. Y
Web Parts. Web Parts, que es un marco de trabajo para construir aplicaciones tipo
portales, que permite en tiempo de ejecución que un usuario con derechos de administrador pueda manejar a su antojo la distribución de las páginas mediante drag&drop, los contenidos, la conexión entre distintos Web Parts, etc.
1520: Por culpa de mi manía de comer con calma, llego
muy tarde a la presentacion de SQL Server 2005, que empezaba a las 14:45. Llego a tiempo para ver al ponente hablar sobre índices sobre campos Xml y consultas XQuery. Lo lamento de veras porque tenía ganas de ver las capacidades nuevas del gestor.
1530: Presentacion de VS Team Suite (VSTS) y VS Foundation Server (VSFS). Quieren hacerla graciosa, y esta vez lo consiguen. Tres MVPs nos presentan una especie de obra de teatro improvisado, en la cual van interpretando los diversos papeles que componen la empresa ficticia Hinojo Software Factory y su
crítico proyecto Hola Mundo. Y la verdad es que ambos productos darán mucho que hablar en los próximos meses: han conseguido juntar Visual Studio con Project con Visio para que todo el ciclo de vida de una aplicación vaya de la manita e integrado. Muy curioso el momento cuando uno de los MVPs pidió en la sala que levantásemos la mano los que hacíamos testeos unitarios,... y levantamos la mano dos personas.
1645: Comentario del programa colaborativo
Desarrolla con MSDN, con presentación de la aplicación
MSDN Video, con la que Microsoft quiere mostrar un ejemplo de
best practices lo bastante grande como para que tenga
miga. Y vaya si la tiene. El ponente crea una aplicación sencillita en respetuoso formato tres capas y explayándose en las explicaciones de cómo hacer las cosas
bien utilizando las clases ya creadas de MSDN Video como ejemplo. Al final añade un servicio web (claro) como proxy de la lógica de negocio para disociar completamente las capas. Y al final, para babeo absoluto del personal (por lo menos, mío) y con la excusa de que hay que irse acostumbrando que viene Avalon, va y utiliza un interfaz manejado con código fuente DirectX 9 administrado: las portadas de las películas se veían en una especie de TV tridimensional que podía rotar, entre otras cosas. Una pasada. Al final, y utilizando como cobaya al invitado sorpresa, demostraron el uso de un cacharro hardware que es una especie de diapasón gigante que se supone que controla los movimientos del usuario y permite que éste maneje la interfaz con las manos, estilo
Minority Report. Debido a la escasa luz ambiental del cine no funcionaba muy bien.
1740: Invitado final
sorpresa y fin de fiesta. El invitado era
Pablo Motos, que se marcó un acto de stand-up comedy (que por fin se ha puesto de moda en España, joer). Me gustó bastante, la verdad.
NOTA.- Arfs! Mi post más largo sin duda. Tenéis que ver la versión
en inglés. ;-)