Presente y futuro de LINQ

Siguiendo con mi idilio de esta semana con LINQ, voy a haceros un repaso de la situación actual y líneas futuras de evolución del mismo. [:)]


Como ya todos sabéis LINQ se encuentra todavía en fase beta. Las primeras versiones vieron la luz en Septiembre del 2005 (qué rápido pasa el tiempo). Desde entonces, ha evolucionado desde ser un simple add-in para Visual Studio 2005 hasta convertirse en parte intrínseca de la última versión del .Net Framework (3.5) y de la nueva versión del IDE, Visual Studio 2008.


Hablando del futuro, hay cosas que ya podemos afirmar sobre la versión estable de LINQ. Sabemos que incluirá directamente soporte para algunos dominios de datos:




  1. LINQ sobre objetos


  2. LINQ sobre ADO.Net, que a su vez supone el soporte para las siguientes tecnologías: LINQ para SQL, LINQ sobre entidades y LINQ sobre DataSets.


  3. LINQ sobre XML.

No obstante, LINQ se puede extender para soportar otros dominios. Algunas extensiones podrían ser LINQ sobre Sharepoint (algo de lo que ya se ha hablado por geeks), LINQ sobre servidores de Exchange y LINQ sobre OLAP, entre otras muchas posibilidades… En realidad, alguna de estas posibilidades pueden ser ya directamente implementadas haciendo uso de Reflection combinado con LINQ sobre objetos.


Otra posible vía de evolución de LINQ es LINQ sobre SQL. Ya que, si bien las versiones beta sólo soportan bases de datos en SQL Server, podemos implementar proveedores de datos que nos permitan manipular cualquier base de datos relacional.


Además de todas estas posibilidades, indirectamente, LINQ puede suponer una revolución en la forma en que desarrollemos aplicaciones. ¿Qué? Bueno, es cierto que LINQ en sí mismo no supone un cambio en la arquitectura de una aplicación puesto que su objetivo es proporcionarnos una serie de herramientas para mejorar nuestros desarrollos permitiendo la adaptación a arquitecturas diversas, pero también lo es que LINQ puede llegar a afectar ciertas partes críticas de soluciones con arquitecturas de N-capas. Por ejemplo, imaginemos el uso de LINQ en un procedimiento almacenado de SQL-CLR, donde se produciría una transferencia de nuestra query integrada en el lenguaje al motor de SQL, en lugar de utilizar sentencias de SQL propias.


Podemos concluir resumiendo todo este rollo en que hay una gran variedad de posibles evoluciones implementables sobre LINQ, y no debemos olvidar que SQL es un estándar ampliamente aceptado y adoptado por lo que no se puede sustituir por otro así como así, por cuestiones de rendimiento. De todos modos, LINQ es un paso interesante en la evolución de los lenguajes de programación actuales. El carácter declarativo de su sintaxis hace que podamos considerar el uso de LINQ para otros propósitos diferentes al acceso a datos.


En esta última línea, existen proyectos de investigación como PLINQ (Parallel LINQ), que como su propio nombre indica se dedica a investigar acerca de las posibilidades de paralelización de código que se nos abren mediante el uso de LINQ en nuestros desarrollos. Se pueden ofrecer otros muchos servicios adicionales a los ya comentados.


Adentrarse en el conocimiento de LINQ hoy en día puede ser algo bonito e interesante, pero puede llegar a convertirse en imprescindible de aquí a un tiempo… [:)]


¿Aún no te has animado a probarlo?

Estoy leyendo "Introducing Microsoft LINQ"

Llevaba tiempo oyendo hablar sobre LINQ, en blogs, en charlas como las del DevDay, grupos de usuarios… Había leído bastantes artículos técnicos al respecto tanto en internet como en distintas ediciones de DotNetManía. Desde las primeras CTP’s me he dedicado a instalarlas (como add-in de Visual Studio 2005) y hacer mis pequeñas aplicaciones que me sirvieran para aprender nociones básicas al respecto. Y por supuesto a probarlo ahora que lo tenemos disponible en Visual Studio 2008 (Orcas para los nostálgicos o los amantes de los CodeNames). Incluso, ya en Redmond, he tenido que lidiar con LINQ en alguno de mis proyectos, sacando información de debajo de las piedras…


Todo eso está muy bien, sí. Pero… nada como un buen libro que recopile (y amplíe) mucha de esta información de fuentes diversas, ¿verdad?


Pues por fin esta semana ha llegado Papá Noël a mi despacho y lo ha puesto en mis manos, y lo estoy devorando como hacía tiempo que no devoraba un libro técnico (concretamente, desde hace unos 6 meses que devoré el «WPF Unleashed» de Adam Nathan).


Definitivamente, «Introducing Microsoft LINQ» es un libro que recomiendo para todos aquéllos que quieran aprender LINQ desde cero, y también para aquéllos que, como yo, han ido aprendiendo cosas «a salto de mata» (como diría un gran Maestro mío).


«Introducing Microsoft LINQ» no sólo nos habla sobre las nociones básicas y bondades de esta nueva tecnología (cosas como la sintaxis, los tipos de operaciones que podemos realizar, las distintas fuentes de datos que podemos conectar con LINQ…), basándose en la CTP de Mayo de este mismo año.



No, es más que eso, también nos hace un repaso de las novedades de C# 3.0 y de VB 9.0, no sólo relacionadas con LINQ, sino en conjunto. Además de todo este contenido, me parece fundamental la forma en que se presenta el mismo. Las explicaciones son muy didácticas y los ejemplos muy aclarativos y representativos del potencial de LINQ.


Definitivamente, es un libro que recomiendo. Ya me contaréis vuestras impresiones al respecto del mismo [:)]

Spain is different!!

Hola,


Aprovechando el día libre gracias a la festividad del Día del Trabajador (que fue el pasado 1 de Septiembre aquí en EEUU), os dejo una lista que hemos recopilado de facebook (www.facebook.com), un lugar donde poder conocer gente con aficiones, intereses… similares a los tuyos.


Esta lista refleja un poco el sentir de los españoles aquí, cosas que nos chocan de la cultura americana, y cosas que a los americanos les chocan de nuestro país. Espero que os guste tanto como a nosotros nos ha gustado (es tan graciosa como real):


1.- Te parece perfectamente aceptable añadir fanta o Coca-Cola al vino tinto.


2.- Te desespera la hora a la que cierran los pubs por las noches (entre las 12 y las 2 de la madrugada). Incluso te parece que cierran a la hora a la que deberías salir de casa…


3.- Sabes lo que es un “botellón”.


4.- Te parece bien opinar sobre el aspecto de los demás.


5.- No darle “dos besos” a alguien que te acaban de presentar te parece de mala educación.


6.- En el Messenger escribes “jajaja” en lugar de “hahaha”.


7.- El aceite de oliva te parece imprescindible en casi todas las comidas. Incluso en una tostada…


8.- Te sorprende que los descansos y publicidad en la TV duren menos de 15 minutos.


9.- A menudo olvidas decir “please” cuando pides algo… ¿Acaso no se da por supuesto por el tono de tu frase?


10.- Te encanta “dar toques” con el móvil para comunicarte con alguien. También odias explicar en inglés lo que significa…


11.- No consideras las pipas de girasol una comida sana, son sólo algo para picar.


12.- Sabes perfectamente lo que es un pijo, y cómo identificarlos.


13.- Todas tus frases contienen al menos una de estas expresiones: “bueno”, “vale”, “venga”, “pues nada”…


14.- Sabes lo que significa “resaca”, y tenías al menos una por semana cuando vivías en España.


15.- Sabes cómo comer “boquerones”.


16.- Comes más tarde de las 14h y no te entra en la cabeza tener que cenar antes de las 9.


17.- Estás convencido de que no vas a encontrar tiendas abiertas entre las 2 y las 4-5 de la tarde. ¿Qué pasa con la siesta?


18.- Si alguien se mete con tu madre, más le vale correr…


19.- Sabes lo que es, y cómo cambiar, una bombona de butano. Y, por supuesto, echas de menos ver el camión del reparto.


20.- Eres, o has sido, seguidor de “Los Serrano” o de “Aquí no hay quien viva”.


21.- Eres incapaz de beber una cerveza que no esté fría.


22.- El hecho de que todos los hombres, o mujeres, de una misma familia tengan el mismo nombre de pila no te sorprende. Es más, entra dentro de toda lógica.


23.- Estás acostumbrado al sonido de los ciclomotores. ¿Por qué aquí no se oye ninguno?


24.- Sabes la diferencia entre “co…” y “cajones”, entre “tener calor” y “estar caliente”, entre “bacalao” y “bakalao”…


25.- Un domingo por la mañana desayunas antes de irte a la cama, no recién levantado.


26.- Te parece perfectamente normal tomar un par de cañas por la mañana. ¿Qué hay de malo?


27.- El suelo de los bares es un lugar ideal para tirar servilletas usadas. ¿Por qué usar una papelera?


28.- Sabes perfectamente que la “ensaladilla rusa” no tiene nada que ver con Rusia.


29.- Eres el único de tu grupo de amigos al que le hace gracia ver por la calle un Mitsubishi Pajero.


30.- Tienes amigos con nombres como José María, Pepe, Manolo… incluso Inmaculada Concepción.


Parafraseando al Maestro Sabina: «En Alicante y en Washington, en Vancouver y en Redmond, mi Atleti, mi España y yo, semos diferentes…»


Feliz comienzo de semana

Microsoft Channel 8: Your videos, our passion!!

¿Habéis oído hablar de Channel 8? En anteriores entradas os hablé de este tema, aunque obviando que lo conocíais (craso error por mi parte)… Aunque gracias a los posts de mis amigos Ethel y Jorge, todo queda mejor explicado… [:)]


Channel 8 es el nuevo canal de Microsoft, hecho por estudiantes y para estudiantes. Se trata de un espacio donde los estudiantes de todo el mundo, especialmente los Microsoft Student Partners, podremos expresar nuestra pasión por la tecnología en forma de vídeos con presentaciones técnicas, debates, entrevistas, reportajes sobre los eventos más importantes de Microsoft… También se están dando los pasos para convertirlo en una comunidad mucho más amplia, que incluya blogs, foros y recursos en general donde aprender sobre las últimas tecnologías de Microsoft, de una forma dinámica y divertida.


El canal nació hace algo más de un mes, y comenzó a emitir contenidos con motivo de la Imagine Cup. De ahí que la mayoría de material que hay por ahora en la web sea sobre eso… Estamos trabajando para crear nuevos y variados contenidos, tanto en inglés como en español, así que os recomiendo que sigáis de cerca nuestros pasos… Tengo la gran suerte de formar parte del equipo de Channel 8 desde los primeros pasos del canal, y prometo que vamos a dar mucha guerra [:D]



Y por último… Si eres estudiante y deseas colaborar en este bonito y ambicioso proyecto… Si piensas que tienes cosas que contar y compartir delante de una cámara, que el mundo entero debe conocer… ponte en contacto conmigo y cuéntame esas ideas, te estamos esperando!!


Y al resto de gente que desee conocer esta iniciativa un poco más de cerca… Deciros que os esperamos en el Tech-ed de Barcelona (5-9 de Noviembre), dando cobertura completa del evento, entre otras muchas sorpresas que estamos preparando! [6]

Windows Live añade soporte para CardSpace! (beta)

Como ya sabéis muchos, Windows CardSpace es una nueva forma de autenticación de credenciales de usuario. ¡Ahora podemos, además, utilizar CardSpace en combinación con nuestras cuentas de Windows Live!


Utilizar CardSpace para autenticarse en Windows Live ID significa, además de que mola mucho, que no necesitaremos utilizar passwords para acceder a nuestras cuentas. En lugar de ello, se enviarán nuestros credenciales y automáticamente tendremos acceso a servicios como Hotmail, Windows Live Spaces o cualquier otro tipo de servicio que acepte Windows Live ID.


Además, es muy sencillo de utilizar. Podéis seguir las instrucciones de este link


Si estás usando Windows Vista, es tan sencillo como que no tienes que hacer nada «extra» para utilizar esta funcionalidad, puesto que se encuentra incluída en .Net fx 3.0 (que viene de forma nativa en Vista).  Si utilizas XP, o 2003, necesitarás instalar .Net fx 3.0 (si es que aún no lo tienes… ¿a qué esperas para instalarlo? :-P)


El siguiente paso es configurar tus credenciales de usuario, puedes hacerlo siguiendo este otro link


Una vez hecho esto, ya puedes iniciar sesión en Windows Live con CardSpace!!


Para más información, y para dar feedback al equipo de desarrollo (es una beta, y ya sabemos lo que suele pasar…) podéis consultar el espacio del equipo de desarrollo


Have fun!!

Un tour por Redmond

Algo que mucha gente me ha pedido desde mis primeros días por aquí es que os muestre con imágenes cómo es todo esto. Es algo complicado, ya que las medidas contra posibles casos de espionaje industrial son muy fuertes y, como ya hemos comentado en alguna ocasión, debemos pedir permiso al departamento de asuntos legales para hacer fotos y publicarlas. Es por ello que no encontraréis demasiadas fotos por ahí del Campus de Redmond y, personalmente, me parece todo un lujo haber conseguido ese permiso y que os las pueda mostrar.


Hablando un poco sobre el Campus principal de Microsoft, situado en Redmond, debo deciros que, aunque no existen programas de “visitas turísticas”, si existen guías a disposición de los empleados. De modo que, si en alguna ocasión traemos a algún invitado, podamos contarle datos curiosos de los diferentes lugares por los que pase.


También hay casos de visitas “excepcionales”, en los que sí se hacen recorridos guiados por el Campus. Por aquí ha estado de visita gente tan importante como Mohamed Alí, Elizabeth Dole, Pearl Jam, los Secretarios de Defensa y de las Fuerzas Armadas de EEUU, por citar algunos…


Puesto que para mí los lectores de Geeks y, más en concreto, de este blog estáis en ese mismo nivel de importancia, voy a intentar llevaros a través de una especie de visita “virtual” por el Campus J


Ahí va:


Bienvenidos a Microsoft, estamos en Redmond (Washington). Este es el centro de operaciones de Microsoft desde 1986, año en que se produjo el último cambio de sede, llegando desde Bellevue (a apenas 10 minutos en coche de aquí), donde se ubicaba la antigua sede principal desde 1978. Aunque, como ya sabréis muchos, la compañía se fundó en Albuquerque (Nuevo México) en 1975.


Foto1_4   



El número total de empleados aquí ronda los 30.000, distribuidos en 102 edificios, lo cual representa casi la mitad de empleados de Microsoft en todo el mundo.


Las oficinas permanecen abiertas durante todo el año, y sólo en dos ocasiones se han visto obligadas a cerrar debido a catástrofes climatológicas: un tornado en 1993 y una tormenta de nieve en 1994.


Hay 22 cafeterías distribuidas por todo el Campus, para saciar el apetito de todos los empleados y, además, suponen un lugar agradable donde relajarse y, ahora en verano, tomar un poco el sol. Aquí tenéis una foto de la que yo más frecuento:


Foto2



La parte antigua del Campus:



Llama la atención la forma de X de los edificios de esta zona… ¿Por qué son así? Bien, utilizando esta forma, el número de oficinas con ventana al exterior es mayor, pura geometría…



Foto3_2 



Otra de las zonas de recreo del Campus es la zona de los campos de béisbol, fútbol (o “soccer” como lo llaman por aquí), baloncesto y volleyball.


Foto4 


Prácticamente todos los días se organizan partidos de fútbol, baloncesto… en estas pistas. Incluso hay ligas internas al más puro estilo universitario.


Como podéis comprobar, el Campus posee una gran riqueza natural y es bastante agradable pasear por él para ir de un edificio a otro, o incluso venir a trabajar en bicicleta (algo que mucha gente hace).


Foto5



Y bueno, aunque parezca mentira, también tenemos tiempo para trabajar… Mi oficina no tiene ventana al exterior, sino que da al pasillo (ya que mi edificio no tiene forma de X, como podéis ver aquí debajo, y en el reparto debí de llegar tarde para conseguir ventana…).


Foto6_2



Aún así, es un lugar bastante agradable para trabajar, en mi modesta opinión.



Foto7


Además, como la gente aquí es bastante simpática, siempre resulta fácil encontrar alguien con quien echarse unas partiditas de billar, futbolín o ping-pong (nosotros no somos tan afortunados de tener XBOX en la zona de descanso como en otros edificios, tendré que presentar una reclamación porque sin XBOX mi oficina no es un lugar habitable… jaja)


Foto8



Y, por supuesto, el hecho de tener cafeína gratis también ayuda…


Me despido por hoy, espero que hayáis disfrutado la visita tanto como yo haciendo de guía para tan ilustres visitantes.

La comunicación en el desarrollo software en Microsoft

El desarrollo de proyectos software es un proceso muy complejo. Existen diferentes enfoques a la hora de planificar las fases del desarrollo, la duración de cada una de estas fases, el modo de dar mayor prioridad a una u otra fase, el número de personas que intervienen y el papel de cada una de estas.


Tanto es así que hace unas décadas surgió el concepto de «Ingeniería del Software». De manera similar a un arquitecto que diseña y planifica la construcción de edificios, un ingeniero de software debe diseñar y planificar el desarrollo de un producto software. De la experiencia y talento del arquitecto depende que un edificio no se desplome, y de éstas mismas virtudes de un ingeniero de software depende que un proyecto termine con el resultado deseado.


Mucho se puede hablar y debatir sobre la gran cantidad de corrientes en la Ingeniería del Software, pero puesto que ni esto es una clase universitaria ni yo profesor, dejo la tarea de hablar sobre metodologías de desarrollo a uno de mis pensadores favoritos: Rodrigo Corral.


Lo que os voy a contar es mi experiencia en el día a día del desarrollo de productos de software en Microsoft.


En mi trabajo diario me he encontrado con una diversidad bastante grande de roles, de personas con especialidades diferentes en el ámbito de la ingeniería del software. El abanico va desde personas cuya virtud radica en unos profundos conocimientos que les hacen aptos para el diseño de proyectos (Arquitectos de software), otras cuyo punto fuerte radica en la planificación del proceso para construir lo que el arquitecto ha diseñado (manager), el «programador» que se encarga de convertir esas ideas en código para hacer realidad el software (lo que por aquí se conoce como Software Development Engineer, o de forma abreviada, SDE), el tester que se encarga de coger ese código desarrollado por el programador y someterlo a duras pruebas para asegurarse de la calidad del mismo, encontrar fallos y coordinarse con el programador para resolverlos…


Como muchos de vosotros ya sabréis, y los que no lo supiérais espero que lo hayáis entendido a través de mi explicación, el desarrollo del software es un proceso largo, complejo y que involucra a personas con perfiles muy diferentes. Ante esta dificultad sólo cabe una cosa: UNIÓN. Hoy más que nunca, y dicho sin el menor ánimo de prepotencia, sino llenándome de orgullo por los compañeros de trabajo que tengo, puedo decir que trabajo en un EQUIPO.


Mattmike


«Informático» es un término muy amplio, que engloba a profesionales de muy diversa índole, no sólo en lo referido al desarrollo software que os he contado antes, sino también en otro tipo de tareas: administradores de bases de datos (DBA’s), diseñadores (de los que ya os he hablado en anteriores entradas), desarrolladores de aplicaciones web, administradores de sistemas…


A menudo, estas diferencias son tan acentuadas que cuesta incluso hacerse entender entre unos y otros, hablando sobre un proyecto. Y esta reflexión nos conduce al factor clave en el desarrollo de proyectos: LA COMUNICACIÓN. Escrita en mayúsculas y negrita, aún así debería ser enfatizada mucho más.


El proceso de desarrollo de software requiere de una comunicación clara, precisa y, una cosa muy importante, eficiente. Cada una de las «máquinas» de esta cadena de montaje que es el desarrollo de software debe saber claramente cuál es su función, qué va a encontrar como materia prima para su fase, y qué espera la siguiente fase como resultado de su trabajo. Y lo más importante, de una manera eficiente. El tiempo es algo muy valioso en el desarrollo de software. La informática, y por extensión la tecnología en general, es un campo en constante evolución, de modo que la mínima pérdida de tiempo o retraso no justificado en la creación de un producto, produce un desfase que, finalmente, se traduce en pérdidas económicas importantes…


Para fomentar esta comunicación existen muchos mecanismos, confidenciales o públicos, en Microsoft. Desde el popular correo electrónico, listas de distribución a las cuáles se suscribe todo el grupo de trabajo para recibir emails automáticamente, grandes entornos de desarrollo como por ejemplo Visual Studio, orientados al trabajo en equipo y la coordinación de tareas entre personas con distintos roles dentro del proyecto, herramientas para notificar fallos o bugs en el software… y, por supuesto, las reuniones de trabajo.


En Microsoft, cada edificio tiene unas 15-20 salas de reunión, ¿por qué será?… Efectivamente, hay muchas reuniones. Reuniones con gente con los mismos roles que tienes tú, para hablar sobre tus avances y escuchar los del resto, para resolver en grupo problemas difíciles para uno solo, sesiones de aprendizaje conjunto… Reuniones con gente que ocupa otros roles, para saber qué y cómo lo están haciendo, y aportar tu visión sobre cómo ese proceso o esos objetivos podrían mejorarse. Reuniones con tu manager, como ya comentó Marta en la entrada anterior, para analizar tu rendimiento…


En mi caso, que soy tester, mantengo semanalmente unas 4-5 reuniones con programadores para mejorar el producto que estamos desarrollando, un par de reuniones con gente de mi equipo (testers) para coordinar nuestras pruebas, varias reuniones con Product Managers, que son personas que se encargan de analizar qué características debería y no deberían tener las próximas versiones del producto, en base a estudios de mercado, viabilidad técnica, opiniones de desarrolladores y testers…


Algo que llama la atención en estas reuniones es la enorme capacidad de diálogo de toda esta gente, su facilidad para expresar argumentos de manera no ofensiva aún cuando las posturas son radicalmente opuestas, y la enorme predisposición a ayudar a los demás. Aquí todos se esfuerzan por dar lo mejor de sí mismos, y que cada día esa cota sea mayor, pero no con el afán de ser individualmente los mejores, sino de elevar la calidad de su trabajo para desarrollar muy buenos productos.


Para todas aquéllas personas que trabajen en equipo, ¿cómo es vuestro trabajo?


Espero y deseo que tengáis la suerte que he tenido yo de caer en un equipo 🙂

Nuevo vídeo sobre integración de WF y WCF en .Net 3.5

Se ha publicado esta semana un nuevo vídeo en Channel 9 (http://channel9.msdn.com) sobre integración de WorkFlow Foundation y Windows Communication Foundation en .NET 3.5, podéis acceder al mismo desde aquí:


http://channel9.msdn.com/ShowPost.aspx?PostID=335756


La parte anecdótica de la noticia: El video es presentado por gente de mi grupo de trabajo y las herramientas mostradas también han sido desarrolladas por nuestro grupo (Connected Tools). A partir del minuto 30 del video, la cámara se pasea por la primera planta de nuestro edificio saludando a la gente que se va encontrando a su paso (varios pasillos contiguos al de mi despacho). Lástima que el dia que lo grabaron a mi me pilló en Corea, si no habría intentado acaparar un poco, jajaja


A cuidarse!

Mi verano en Microsoft a vista de pájaro

Hola amigos,


Os dejo por aquí mi plano de MSN Virtual Earth personalizado de la región de Redmond, con puntos marcados como mi oficina, la tienda de Microsoft, supermercados, Starbucks, centros comerciales, BlockBuster o mi casa… Impresionante la vista en relieve, y la vista en 3D (necesario instalar plugin en IE)


http://local.live.com/default.aspx?v=2&cp=ry5xt74tnz2p&style=o&lvl=1&tilt=-90&dir=0&alt=-1000&scene=3689071&cid=E7F202F1DE86E676!103&encType=1



Por si me queréis hacer alguna visita. xD


 

Algo huele mal acerca del .Net CF

De vuelta en Redmond tras el sueño «Imagine Cup», y mientras llamo a Bush para planear la ocupación militar sobre Canadá como represalia por haber perdido Air Canada mi equipaje, os dejo una imagen curiosa de una de las «dependencias» del edificio 42 del Main Campus (donde se ubica mi despacho) que capté la primera semana aquí, cuando mi estómago acusaba los nervios de los primeros días…


Sobran las palabras, que cada cual interprete 😉