[OT] A big Thanks! to my PLAIN-pals

No descubro ningún secreto cuando digo que a los verdaderos amigos y compañeros se les conoce en los momentos difíciles. Es en tales situaciones cuando de verdad puedes calibrar la calidad humana de quienes te rodean día a día y cuánto realmente te aprecian.


Durante el pasado mes de noviembre la vida me puso en una situación así. Y ahora que todo ha pasado, quisiera agradecer aquí públicamente a mis compañeros de Plain Concepts, que han estado a una altura inmensa: desde las constantes muestras de solidaridad hasta el acomodo voluntario de mis tareas en sus ya apretadas agendas para que yo pudiera estar con mi familia, me he sentido arropado por ellos en todo momento.


Thank you, my friends!


P.S. Hago extensivo este agradecimiento a Paco Marín, Marino Posadas, José M. Alarcón, Miguel Katrib, Ian Marteens y muchos otros amigos que han estado en contacto con nosotros a lo largo de estos días.

LINQ es mucho más que LINQ to SQL

Uno de los «mind stoppers» con los que me encuentro con más frecuencia durante las charlas sobre LINQ es la idea preconcebida de que al hablar de LINQ se está hablando única y exclusivamente de una tecnología para acceder a bases de datos relacionales «encapsulando» la generación de las sentencias SQL. Tales opiniones frecuentemente equiparan LINQ como un todo con un mapeador objeto-relacional (ORM) como nHibernate o IdeaBlade DevForce, por solo mencionar algunos de los más conocidos.


Como intento demostrar en mi libro, esto *NO* es así. En primer lugar, aunque menos relevante dado que las expresiones de consulta de C# y VB en el fondo son mero «azúcar sintáctico» construido alrededor de llamadas a métodos extensores predefinidos en los proveedores, está el hecho de que, al estar soportado directamente en los lenguajes, LINQ ofrece un nivel de «inmersión» superior al que puede lograrse mediante el uso exclusivo de librerías.


En segundo lugar, y lo fundamental, LINQ es una tecnología genérica para acceder a cualquier almacén de datos que pueda verse como una secuencia o conjunto de secuencias de elementos de un cierto tipo: arrays, colecciones, documentos XML, DataSets o bases de datos relacionales son algunos ejemplos de las posibles fuentes LINQ para los que .NET 3.5 ofrece soporte predefinido; al ser también LINQ una tecnología abierta, es posible agregar ese soporte para fuentes no soportadas de manera predefinida: proveedores para sistemas de ficheros, ficheros binarios, tuberías (pipes) o bases de datos de información de proyectos en TFS son algunos de los ejemplos que se desarrollan en el libro. En general, como dijo Dinesh Kulkarni, precisamente Program Manager de LINQ to SQL, pronto tendremos hasta «LINQ to CoffeeMachine»: habrá proveedores LINQ para acceder a las más disímiles fuentes de datos.


En ese contexto, y con la práctica continuada, iremos avanzando hasta alcanzar lo que yo llamo el «nirvana LINQ»: el momento en que los programadores reconozcan al momento la posibilidad de utilizar una consulta integrada en el lenguaje para representar casi cualquier bucle o iteración en general que incluya selección, proyección, ordenación o agrupación, entre otras operaciones.


LINQ to SQL y el futuro LINQ to Entities son única y exclusivamente dos aplicaciones más de esa tecnología genérica; dos muy importantes, indudablemente, pero que no pueden ni deben «opacar» a las demás: LINQ, como Talonotel, es mucho más.

Código de los ejemplos de "C# 3.0 y LINQ" disponible

Pues eso: ya está disponible el código de los ejemplos del libro «C# 3.0 y LINQ», actualizado para las versiones definitivas de .NET Framework 3.5 y Visual Studio 2008.


Como Microsoft también ha liberado el SDK de Visual Studio 2008, como nos informaba puntualmente Bruno, he podido actualizar también el ejemplo 11_05, «LINQ to TFS».


Todo el código puede ser descargado en formato comprimido desde el sitio Web de la editorial o desde mi sitio Web «personal».


 

Una reflexión sobre el puzzle de la oferta de ilitia

Ante todo, mi felicitación a ilitia por lo que considero, como expresé en el post de Luis Ruiz al respecto, una excelente idea. Y el puzzle en sí mismo es, a mi modo de ver, genial.


Reflexionando un poco sobre el asunto, me he dado cuenta de que me equivoqué al afirmar allí que había que tener idea de C# 3.0 y LINQ para atacarlo. Para resolver el puzzle, en principio, bastaban los iteradores y la sentencia yield, disponibles en C# desde el año 2005:


public static class ExtensionesChuckNorris
{
    public static IEnumerable<int> To(this int a, int b)
    {
          for (int i = a; i < b; i++) yield return i;
    }

    public static IEnumerable<int> DownTo(this int a, int b)
    {
          for (int i = a – 1; i >= b; i–) yield return i;
    }
}

Esto me ha vuelto a traer a la mente una reflexión de mi buen amigo Rodrigo Corral, que me decía hace unos meses que según su experiencia mucha gente que programa hoy en VS 2005 y C# aún no conoce características introducidas en C# 2.0 como las antes mencionadas. Aquello fue lo que me dio la idea de incluir en el libro «C# 3.0 y LINQ» cuatro capítulos (métodos anónimos, genéricos, iteradores y tipos valor anulables) que explicaran esos conceptos como antesala de la presentación de las nuevas características que ahora se incorporan al lenguaje.


Desde aquí mi exhortación a los programadores de C# a que se esmeren en conocer en anchura y en profundidad el lenguaje que utilizan; no hay nada en él que resulte superfluo o inútil. De la misma manera, exhorto a los directores y jefes de proyecto a que potencien ese conocimiento en sus programadores; algo que sin dudas se revertirá en múltiples beneficios para la causa común.

KrasisPress.Presented += delegate {

El pasado viernes tuvo lugar en las oficinas de Microsoft Press la presentación de la editorial KrasisPress. El acto contó con una buena presencia de prensa especializada y público en general, y pudimos encontrarnos con muchos buenos amigos.


En esta foto aparecemos los autores de los tres primeros libros de la editorial:






  • José Manuel Alarcón («Programación web con Visual Studio y ASP.NET 2.0»)


  • Unai Zorrilla («Modelando procesos de negocio con Workflow Foundation»)


  • Octavio Hernández («C# 3.0 y LINQ»)

};  // fin del delegado anónimo 🙂

Presentación oficial de Krasis Press

El próximo viernes 16 de noviembre a las 11:00 am se celebrará el acto oficial de lanzamiento de la editorial Krasis Press, que se ha estrenado recientemente sacando al mercado tres libros de autores que «bloguean» aquí: José Manuel Alarcón, Unai Zorrilla y un servidor.


El acto te permitirá conocer todos los detalles sobre los títulos ya disponibles y otros que lo estarán en un futuro muy próximo, conversar con los creadores de la editorial y los autores de los libros sobre las tecnologías respectivas de las que éstos tratan… además de que hay algunas sorpresas preparadas, de las que obviamente no voy a hablar aquí 😉


El acto se celebrará en la Sala Marie Curie de la sede de Microsoft Ibérica en Madrid. Por motivos de seguridad de acceso a las instalaciones, se ruega confirmar la asistencia antes del miércoles 14 de Noviembre en info*arroba*krasis.info o en el teléfono 902 876 475.

"C# 3.0 y LINQ" disponible





C# 3.0 y LINQ

Ya está disponible el libro «C# 3.0 y LINQ», editado por Krasis Press. Espero sinceramente que sea útil, sobre todo en estos primeros tiempos en que la literatura en castellano sobre esos temas será algo escasa.


Desde aquí exhorto a los muchos autores potenciales que «bloguean» y/o visitan geeks.ms a que escriban: la satisfacción que se siente al ver terminado el trabajo de tantas madrugadas es indescriptible :-). Esa es la principal recompensa que cabe esperar: si no, leed este post del Maestro Petzold, que me refirió mi buen amigo Marino Posadas.


He habilitado el sitio Web de mi antigua empresa para que quien quiera comunicar un error, disentir sobre alguna opinión mía o simplemente mandarme un mensaje pueda hacerlo. Desde ahí se podrá también descargar el código fuente de los ejemplos y otros materiales que iré publicando y consultar las erratas que hayan sido descubiertas.


Por último, agradecer las amables palabras de Marc y Unai en este otro post.


 

October Conference .NET, los días 15 y 16 en Málaga

Los próximos días 15 y 16 estaremos en Málaga, donde se celebrará la primera October Conference .NET, evento gratuito organizado por Malaga .NET User Group y patrocinado por iMeta y MSDN, entre otras empresas. Allí tendré el honor de compartir cartel con ponentes de la talla de Dino Esposito, Neal Ford, Hadi Hariri, «El Guille» o Unai Zorrilla, entre otros.


Si puede acercarse, ¡no lo piense dos veces!


Todos los detalles aquí: http://www.octoberconference.net/index.es.aspx.

Por fin, cómo hacer un proveedor LINQ basado en IQueryable

Después de que muchos (un servidor incluido) se hayan roto literalmente la cabeza durante meses investigando los pormenores del funcionamiento de la interfaz IQueryable y cómo crear un proveedor LINQ basado en ella (al estilo de LINQ to SQL), el bueno de Matt Warren, uno de los creadores de la tecnología (viene trabajando en esto desde tiempos de Object Spaces), ha publicado en cinco posts todos los pormenores relacionados con el tema:


    http://blogs.msdn.com/mattwar/archive/2007/07/30/linq-building-an-iqueryable-provider-part-i.aspx (parte 1 de 5)


Ya había varias buenas aproximaciones por la red (sobre todo la de Bart de Smet), pero ninguna tan exacta y detallada como ésta.


Le recomiendo estos posts, si le gusta conocer cómo funcionan las cosas por dentro. Si piensa limitarse a escribir consultas integradas en C# 3 ó VB 9 (tenga por seguro que lo tendrá que hacer, más tarde o más temprano), entonces ya no tanto…