Windows Phone Day 2013

Gracias a la invitación de la comunidad Avanet estuve con Miguel Mendoza y Andres Fontan en el Windows Phone Community Day en Medellin, Col el 5 de Octubre de 2013.

Esta vez estuve presentado algunos elementos claves de arquitectura de software, construcción de aplicaciones y planes de vida, fue una conferencia relajada, muy divertida y muy iconoclasta, fue increible preparla, la audiencia estuvo muy conectada y creo que todos pasamos un buen rato. Muchas gracias a Zorey, Eliana y todos los genios de Avanet por invitarme.

Nueva versión de Log4Net

La instrumentación es un elemento clave en el desarrollo de aplicaciones reales de software, cuando nos enfrentamos a un error de la aplicación en producción, en un servidor o ambiente que no tiene herramientas de desarrollo, con la presión de identificar rápidamente cuál es el problema y cómo resolverlo nuestra única esperanza es que el equipo de desarrollo haya implementado instrumentación.

Mi herramienta favorita para esto es Log4Net, es estable, poco invasiva y muy eficaz y configurable.  En este punto se ha convertido en algo obligatorio de cualquier proyecto de software que abordo. Precisamente hace algunos días se publicó una nueva versión que cuenta entre sus novedades con soporte para la ejecución en ambientes medium trust para aplicaciones .Net, algo que nos va bien con proveedores de Cloud Computing como Rackspace donde no existen permisos de full trust para las aplicaciones y seguramente muchos otros hosting compartidos.

La lista completa de mejoras aquí:

http://logging.apache.org/log4net/release/release-notes.html

Guatavita Merrell 2013

Despues de 8 horas termine mi primer maraton de montaña (Trail Running), mucho más complejo mental y fisicamente que mi primer maraton de calle en Miami, pero a la vez menos desgastante para las piernas, en especial rodillas y pies.

Unos paisajes increibles y todos los climas me acompañaron en el recorrido

Miami Marathon, USA 2013

Acabo de finalizar mi primera maraton: ING Miami 2013.

Llegue hace un par de días a Miami, son días complicados para mi, tengo una gran confusion y me siento un poco deprimido, estoy seguro que estos dias me seran utiles asi que me pongo en el estado mental de la carrera y no pienso en nada mas por un par de días.

No estoy seguro de haber entrenado lo suficiente, he hecho 35 kms en un entrenamiento y fueron muy duros, tambien unos 150kms de bicicleta y tambien muy duros, ni modo ya estoy aqui, no es el momento de dudas o temores.

Es mi primera vez en una carrera de esta magnitud, mi hermano me lleva a la expo y se convierte en la logistica oficial de la carrera. Al recibir el kit me sorprendo porque no tiene mi nombre en el, me inscribi muy tarde.

La feria es increible, hay cientos de proveedores, miles de cosas, compro algunas que he visto en internet: un cinturon de carrera, unas medias de compresion, unos geles, todo me parece increible, hasta la forma de pagar: pasando la tarjeta por un dispositivo en el iphone.

Almuerzo pasta un poco tarde, tambien como bien, organizo todo y me acuesto temprano, la carrera es a las 6am y estamos muy lejos de Miami.

No es fácil dormir, me despierto un par de veces en la noche, igual llegan las 4:30 de la mañana y hay que levantarse, me visto de corredor, desayuno proteina y estoy listo. Mi hermano maneja una hora, al llegar al centro de miami hay mucho trafico, logramos parquear lejos del American Airlines y caminamos con otros corredores. De casualida me encuentro con Mauricio, el tambien vino de Colombia a correr los 21km, se esta preparando para los 42 en Holanda, nos tomamos una foto y nos deseamos suerte.
Los corrales estan llenos, la energia es tremenda y me estoy congelando, hace frio en Miami a las 6am en febrero, es de noche aun cuando empieza la musica, los fuegos artificiales y se da la largada.

Estoy corriendo rodeado de personas de todas partes del planeta, todos los idiomas, tipos de personas y actitudes, son mas del 20.000 en esta carrera asi que siempre se esta rodeado de gente, los primeros kms me parecen dificiles, voy incomodo con el estomago, pasan lentos, llegar a South Beach me parece eterno, pero algo en la playa lo hace mejorar, quiero un restaurante para resolver el tema del baño pero no hay, solo gente que sale de fiesta a las 7am con copas gigantes de margaritas y vestidos como
para un capitulo de CSI Miami y brindan por nosotros.

Me olvido del baño y llego a los 10kms, voy un poco lento pero siento que encontre un paso que me sirve, ademas al pasar por entre las casas y ver familias que nos alientan, nos regalan cosas y comida me llena de animo, en esta carrera la gente, los espectadores, saben que son importantes y lo asumen.

Al salir de South Beach por el Venetian se que se acercan los 21Kms y me siento fuerte, hablo con algunos espectadores, con un par de corredores y llego al punto de la foto famosa con los tipos vestidos se naranja, los dejo y me acerco a la desviacion, he leido y me he preparado para este momento, aqui empieza la carrera de verdad.

De pronto estoy solo, mas del 70% venian por la media maraton y ya se van a sus casas, a mi me queda trabajo por hacer.

En el km 23 paro, entro al baño, no es la mejor experiencia pero ya esta por lo menos no hay fila. Me encuentro a mi hermano, me da agua, me anima y sigo, viene un puentecito, es minimo pero ya siento las piernas pesadas.

Al terminar Brickell Avenue me encuentro con los que vienen de regreso, son muchos y se que para estar en ese punto me falta bastante distancia aún. En el km 25 el dolor en las piernas es muy fuerte, parece que cada musculo posible se rebela, tomo agua, un gel y trato de no pensar en eso mucho, me motivo pensando en Felipe, en la familia, en los amigos, esta parte del recorrido es muy solitaria.

Llego al km 27 arrastrandome, el dolor es muy fuerte, me detengo, tomo un analgesico, mas agua y practicamente me ducho, el frio se convirtio en un calor pegagoso y el sudor en una costra solo posible en la Florida.

Camino del 27 al 30, este debe ser el muro, todas las debilidades juntas, todas las dudas, todo el temor de fracasar. No vine a caminar me digo a mi mismo, me obligo a trotar de nuevo, hay dolor pero parece haber bajado, logro concentrarme y mantengo el paso, estoy corriendo de nuevo.

Al pasar por los restaurantes de Coconu Grove la gente nos anima de nuevo, algunos carteles son muy inteligentes o de plano chistosos, asi que logro mantener el paso. Llego al final de la doble via, ahi esta mi hermano de nuevo, le pido agua y volteo a la derecha al ultimo puente, este nos lleva a la mitad de la bahia y regresa, el sol esta durisimo y ahora el viento es un problema, estoy corriendo sobre el mar y es como una mano en el pecho empujando para atras, al final del puente me detengo de nuevo, estoy muy cansado y con mucho dolor, diez pasos despues vuelvo a correr, es el km 38 lo mejor que puedo hacer es terminar esto rapido.
Salgo del puente y me encuentro de nuevo con Jaime, Diana y Victor, ya tiene agua. Jaime y Victor corren a mi lado, no me dejan detenerme, victor se detiene pero jaime sigue, hay que pasar de nuevo uno de esos puentecitos, lo subo con toda la energia, estoy corriendo rapido y la gente anima, llego al callejon de meta, obligan a mi hermano a desviar.

200 metros mas adelante cruzo la meta, dicen mi nombre por los altavoces, estoy muy feliz, casi no lo creo cuando me entregan la medalla.

He terminado mi primera maraton.

La ayuda de mi hermano fue fundamental, la colaboración de Diana y Victor, el aliento de las personas a lo largo del camino, parece una aventura individual pero ahora para mi es trabajo en equipo. Me quedo un par de semanas en la casa de mi hermano, es tranquilo a pesar del trabajo, es bonito con la piscina que veo desde el estudio pero sobre todo vuelvo a sentir proposito, objetivos y felicidad, no puedo estar mas agradecido con él por estos momentos, por esta carrera, por estar ahi siempre a pesar de todo.

pd: El dolor pasadas algunas horas es tremendo, almorce y estire pero sigue siendo muy fuerte, cada musculo se queja por separado a veces y en grupo otras veces. Me cuesta mas de 5 dias estirando, con hielo y demas volver a caminar normalmente, 3 uñas se me caen. Claramente el esfuerzo fue brutal y ahora soy consiente que debi entrenar más. Me cuestiono ahora si vale la pena?, por qué hacerlo?, si lo volveria a hacer?. Hoy no tengo respuestas.

Innovación en el modelo educativo

Como padre de un niño de 4 años me he enfrentado, junto con mi esposa, a las decisiones y procesos relacionados con la selección del colegio donde adelante sus estudios de primaria y secundaria. Esta selección incluyó todo tipo de consideraciones que iban desde lo económico hasta el modelo educativo y tenían la dificultad adicional de ser una decisión para los próximos 13 o 14 años y con un impacto altísimo en el futuro y felicidad de nuestro hijo. Después de visitar varias opciones en todo el espectro económico y con diferentes modelos en el enfoque seleccionamos el Colegio San Jorge Inglaterra por sus valores, tradición, equipo humano, instalaciones y visión integral de la formación como un proceso que involucra lo académico y deportivo en un marco de desarrollo saludable.

La felicidad con la que Felipe se va todas las mañanas para su colegio y el compromiso con el que asume sus eventuales tareas a sus escasos 4 años nos demuestran que tomamos la decisión correcta, sin embargo como especialista en procesos de creatividad, innovación y emprendimiento tengo que preguntarme de que forma puedo invitar al colegio a reflexionar sobre estos temas y de esta forma asegurarnos de que el colegio excelente que es hoy cuando ingresa a pre-kinder sea también excelente cuando reciba su grado de secundaria.  La motivación es simple (tomo prestados las palabras de Ric Elias en su conferencia TED) :  ser los mejores padres posibles.

Mi trabajo diario consiste en retar las posibilidades y los conceptos prestablecidos, enfrentar a las personas y los equipos con sus propias y arraigadas creencias y plantearle escenarios que aunque hoy parecen imposibles o impensables tiene una base racional, de esta forma ayudo a las organizaciones a encontrar de formas creativas alternativas posibles para la continuidad en sus posiciones de liderazgo, en el caso particular del Colegio y en general del modelo educativo sigo las teorías y planteamientos de Sir Ken Robinson quien viene revolucionando sistemas educativos alrededor del mundo por medio de algunas preguntas fundamentales como por ejemplo: Es valido un sistema educativo diseñado en el siglo 19 para el siglo 21?, Siendo que hoy en día millones de personas nunca encuentran su verdadera pasión y simplemente viven una vida de tedio laboral, qué estamos haciendo para que eso no le pase a nuestros hijos? Cómo les estamos ayudando a encontrar su “Elemento” ?

Referencias
http://sirkenrobinson.com/

Sir Ken Robinson: Do schools kill creativity?
http://www.youtube.com/watch?v=iG9CE55wbtY  (2007)

Sir Ken Robinson: Bring on the learning revolution!
http://www.youtube.com/watch?v=r9LelXa3U_I  (2010)

RSA Animate – Changing Education Paradigms
http://www.youtube.com/watch?v=zDZFcDGpL4U&feature=fvwrel

Aunque estas preguntas pueden haber sido relevantes en el siglo 20, en los últimos años se han vuelto aun más trascendentes debido al impacto que tiene la tecnología en la vida de todas las personas, basados en las leyes de Moore que afirman que la velocidad de computo (y redes, almacenamiento, etc.) se duplican cada 18 meses las perspectivas para Felipe a sus 19 años será tener equipos de computo, en relación a un iPhone actual de 8 gigas, de 1.073.741.824 gigas. Estos equipos seguramente tendrá un factor de forma totalmente diferente a los que vemos hoy y estarán conectados todo el tiempo a sistemas de información semánticos que les permitan acceder a cualquier fuente de información pero no de la forma como lo hacemos actualmente sino basados en múltiples contextos.  Un ejemplo interesante hoy en curso son las gafas de google

Referencias

Project Glass: One day…
http://www.youtube.com/watch?v=9c6W4CCU9M4

y si pensamos en ese tipo de dispositivos relacionándose con buscadores semánticos, algo que ya hoy hace Apple al conectar sus dispositivos iPhone y iPad con el motor de búsqueda Wolfram Alpha para soportar su sistema Siri, tendremos que preguntarnos si vale la pena aprender de la forma que lo hacemos hoy, en realidad necesitamos aprender a multiplicar? o cuál  es la capital de Francia? o qué pasa cuando combino Sodio con Cloruro?

Referencias

Sistemas de respuestas basados en preguntas semánticas
http://www.wolframalpha.com/

Stephen Wolfram: Computing a theory of everything
http://www.youtube.com/watch?v=60P7717-XOQ&feature=relmfu

Si al final de cuestionarnos todos estos temas llegáramos a la conclusión de que hay que hacer algún tipo de cambio en el modelo educativo, este tendría que estar basado en la interacción de los profesores con nuestros hijos así que seria bueno preguntarnos que hace grandes, excelentes, profesores, la fundación Bill y Melinda Gates se ha venido haciendo esas mismas preguntas y ha encontrado resultados muy interesantes

Referencias

Bill Gates: “How Do You Make a Teacher Great?” Part 1
http://www.youtube.com/watch?v=OnfzZEREfQs

Bill Gates: “How Do You Make a Teacher Great?” Part 2
http://www.youtube.com/watch?v=BCSdIRNZmHw&feature=relmfu

Qué tipo de educación seria entonces relevante en este escenario hipotetico de tecnologias siempre presentes y altamente conectadas y contextualizada? No lo sé, ni pretendo saberlo, seguramente el enfoque seria en aprender a aprender, en aprender a realizar preguntas y en asociar cosas y temas que parecen no tener sentido, de pronto nos saltaremos muchos años de colegio y universidad y aprenderiamos más de comunicación de ideas, de programacion neurolingistica, de emprendimiento y sistemas sociales que de cualquier otra cosa que ya tengamos disponible al instante, de pronto pasariamos de enseñar cosas que resultaban necesarias en la revolucion industrial a otros temas más aplicables a la vida diaria y posiblemente más orientados a hacernos felices y saludables, Jaime Oliver tiene un buen ejemplo:

Referencias
Jamie Oliver’s TED Prize wish: Teach every child about food
http://www.youtube.com/watch?v=go_QOzc79Uc

Hacking SQL Server 2008 (Kind of…)

Como habrán visto de algo que escribí la semana pasada estoy instalando una nueva máquina de desarrollo y una de las primeras cosas que hay que ponerle es la base de datos,

Problema

Yo utilizo SQL Server Express 2008 R2 with Advance Services porque es gratis, funciona muy bien para prácticamente todo lo que hago y es lo suficientemente ligera como para que la maquina no quede destruida tratando de aparentar ser un servidor. Pues bien, durante la instalación de esta máquina no tuve precaución de habilitar la autenticación mixta, o peor aún de hacer que los administradores de la maquina se convirtieran en administradores de SQL, así que al final del día tenía una maquina corriendo un SQL server al que me podía conectar como un usuario de privilegios restringidos, es decir no podía crear bases de datos, aumentarme los privilegios, cambiar el modo de seguridad, etc.

Solución

Siguiendo estos pasos pude conectarme a la base de datos en modo de usuario único, darle al usuario administrador de mi maquina el rol de sysadmin y recuperar el control de mi base de datos.

Lo primero es detener todos los servicios de SQL

Luego abrir una consola de comandos y conectarse al SQL como un usuario único, que es básicamente utilizar el ejecutable de SQLSrv mas los parámetros –S –E con el nombre de la instancia y el modo de conexión.  Algo como C:Program FilesMicrosoft SQL ServerMSSQL10.SQLEXPRESSMSSQLBinn>sqlservr.exe -s MyInstancia -m

Cuando terminó de ejecutarse el proceso de conexión, abrí otra consola de comandos y me conecté a la base de datos con el modo de comandos (SQLCMD) también pasando el nombre de la instancia.  (C:>SQLCMD -S MyServerMyInstance –E)

Finalmente ejecuté el procedimiento almacenado  sp_addsrvrolemember  y le di permisos a mi usuario de la máquina de convertirse en administrador de SQL  exec sp_addsrvrolemember @loginame=’MyDomainMyUser’,@rolename=’sysadmin’.

Detuvé todo con un comando Shutdown y reinicié desde la consola de servicios.  Listo, ahora mi usuario de la maquina es administrador de SQL y puedo crear bases de datos, cambiar el modo de autenticación o crear otros usuarios administradores.

Hackeado?

Como lo que hice aquí fue básicamente tomar un usuario que solo es administrador de su máquina y elevar sus privilegios para que fuera administrador de SQL pues se ha configurado un ataque de elevación de privilegios que deja a un usuario con acceso a todas las bases de datos de un sistema dado en pocos minutos. Como contrarrestar esto? Yo creo que lo más importante es insistir en que los usuarios tenga cuentas de usuarios y que no sean administradores de las maquinas locales, esta es la principal vulnerabilidad de toda la plataforma Microsoft en términos de algunas personas que saben bastante de seguridad.

Referencia: http://blogs.ameriteach.com/chris-randall/2009/12/11/sql-server-2008-forgot-to-add-an-administrator-account.html

 

Preparando Maquinas de Pruebas

Una de las cosas en las que más se gasta tiempo un desarrollador de software es probando componentes, instalando parches, plataformas y mil cosas más, incluso aunque muchas veces estos entornos solo se necesitan por un par de horas para desarrollar algunas pruebas de concepto.  Ahora si justo este desarrollador hace aplicaciones distribuidas entre varios servidores o dispositivos el conjunto de maquinas que se necesita se hace mucho mayor y tener estos ambientes en línea puede ser muy costoso en tiempo y dinero.

La pregunta entonces que uno debe hacerse es como crear maquinas para pruebas rápidamente?

La mejor solución para este tipo de escenarios es montar un anillo de virtualización (Virtual Ring) que básicamente es una red virtual compuesta de varias maquinas virtuales corriendo y conectadas en un servidor de virtualización. Hasta antes de Windows 8 esto requería no solo hardware con soporte para virtualización sino un sistema operativo con soporte para virtualización o una herramienta de virtualización de las que hay varias en el Mercado. Yo empecé con VirtualPC, pase a Virtual Server 2003 (corriendo sobre Windows 2003 y luego sobre Windows 2008 cuando el procesador no soportaba virtualización) y finalmente llegue a Hyper-V con Windows 2008 que me ha parecido una herramienta increíble, pero seguía teniendo el problema de necesitar un sistema operativo de servidor y una maquina decente. Ahora que mi portátil tiene más poder de computo que un servidor de hace unos años el problema de la maquina no es tan grave pero el sistema operativo de servidor sigue siendo un problema. (No me gusta instalar en mi portátil Windows 2008 R2 porque de todas formas lo uso para entretenimiento, jugar y cosas así que no se van bien con un OS de server). O por lo menos asi era hasta Windows 8.

Ahora tengo Windows 8 en mi portátil y tal vez la única razón por la que finalmente migre fue el soporte para Hyper-V en el OS de mi maquina (versión Pro).

Ya no tengo excusas para mantener correcto mi anillo de virtualización sobre Hyper-V pero aún necesito un par de trucos para poder crear rápidamente maquinas, configurarlas, destruirlas, etc, no quiero gastar 3 horas instalando y parchando un OS para usarlo dos días. La solución sysprep y las opciones de exporter, importer de Hyper-V.

Los pasos que seguí para construir un esquema que me permita crear rápidamente maquinas de desarrollo es este:

  1. Habilité Hyper-V en el OS de Cliente. (Windows 8 Pro)
  2. Creé una maquina virtual y le instalé Window 7 Ultimate con todos los parches y complementos necesarios hasta llevarla a un punto que considero es una maquina base para un desarrollador, es decir un OS completo y parchado a la fecha.
  3. Sobre esa maquina ejecuté la herramienta de sysprep
  4. Luego seguí las instrucciones de clonación de maquinas virtuales y generé un clon que puedo usar para construir múltiples maquinas con la configuración básica, de esta forma puedo crear 1 o 100 maquinas iguales rápidamente y montarlas sobre el anillo de virtualización.

Nota:

Hay que tener también presente que una maquina virtual finalmente tiene toda su configuración en un archivo XML que a veces resulta conveniente abrir en Notepad y editar a mano para cosas como los nombres y ubicaciones de los archivos que se importan.

Gracias a Miguel Mendoza por apuntarme en la dirección de la herramienta Sysprep que por cierto también permite volver virtual una maquina física, algo que puede ser muy, pero muy útil para guardar una imagen de una maquina que entra en desuso o de una persona que ya no esta en la compañía pero se le quiere dar esa maquina a otra persona.

 

 

 

El mayor problema del narcotrafico

Según afirma enfáticamente el abogado De la Espriella en televisión no es ningún delito recibir plata de narcotraficantes. De haberlo sabido antes nos habríamos ahorrado un platal en leyes contra el lavado de activos.

Será que le suena a alguien muy normal que lo contraten para un matrimonio en una isla, lo lleven en yate y la fiesta dure 5 días?. El mayor problema del narcotráfico es como destruye los valores y la ética: Yo no soy narco, pero la plata de los narcos me sirve!. Ese es el mayor error y el mayor problema de nuestra sociedad.

Julio 4 de 2012. En reacción a las declaraciones del abogado Eduardo de la Espriella quien defiende en televisión a un cantante famoso de vallenatos que se presento en una fiesta de un narcotraficante según informan la policía y los medios de comunicación

Programa de Introducción a la Escalada en Roca

Durante varios años he escalado, estudiado, investigado y sobre todo interiorizado múltiples enseñanzas de la Escalada en Roca, el Montañismo y en general los Deportes de Aventura en mi vida diaria, tanto personal como profesional, combinando ese aprendizaje de diferentes fuentes con el entrenamiento que he recibido durante años en liderazgo y gestión de grupos he construido el Programa de Introducción a la Escalada en Roca.

El programa de Introducción a la Escalada en Roca es una actividad de coaching de 5 horas que se desarrolla al aire libre en el Farallón de las Rocas de Suesca (Cundinamarca, Colombia), para un grupo máximo de 5 personas.

Durante el programa de Introducción al Escalada en Roca se explican diversos aspectos técnicos de la escalada como los tipos de escalada, equipos técnicos y de seguridad necesarios, tipos de escalada, tipos de entrenamiento y alimentación y se realizan dos (2) prácticas de escalada en Roca en rutas de diferente dificultad y características así como una (1) práctica de rapel.

Sin embargo, más allá de las prácticas de escalada y los aspectos técnicos de la escalada el Programa de Introducción a la Escalada en Roca busca enseñar a aplicar algunos conceptos de la escalada en la vida diaria de los participantes, entre los aspectos más importantes que se abordan están:

  • Definición de Objetivos: Cómo determinar los objetivos correctos, separar los objetivos propios de los objetivos de otros, gestionar los sentimientos de éxito y fracaso.
  • Visualización: Utilizar la visualización como un componente fundamental de la consecución de cualquier meta. Visualización positiva y negativa.
  • Estrategia, Planeación y Ejecución: Determinar las mejores formas de alcanzar un objetivo, recursos disponibles, planeación de recursos y ejecución del plan.
  • Manejo del Miedo y el Estrés: Identificación de temores reales y falsos, manejo del miedo y reinicio de los planes trazados.
  • Resolución de Problemas: Utilizar técnicas de pensamiento creativo y activar otros modelos de pensamiento para la resolución de problemas.

Este programa utiliza algunos principios del coaching para permitir que sea el participante quien encuentre los resultados adecuados y los apropie para su vida diaria.

“El coaching consiste en liberar el potencial de las personas, para que puedan llevar su rendimiento al máximo. Consiste en ayudarlas a aprender en lugar de enseñarles.” Timothy Gallwey

Algunos de los más importante elementos de coaching que utilizamos son los siguientes:

  • Transmitir entusiasmo
  • Propiciar Espacios de descubrimiento
  • Identificar lo importante
  • Perfeccionar la comunicación
  • Promover el avance.

Si Usted desea más información sobre el programa de Introducción a la Escalada en Roca (o inscribirse) lo invito a visitar la página de registro

“Existe una fórmula: desempeño equivale a tu potencial menos interferencia. La clave está en controlar la interferencia originada en las dudas sobre sí mismo para alcanzar los objetivos propuestos”
“Algunas veces somos nuestros peores enemigos. El miedo hace que nos desenfoquemos, que perdamos el sentido de lo que es importante.” Timothy Gallwey

Juan Peláez

 

 

(Find vs First vs FirstOrDefault) or (Single vs SingleOrDefault)

Cuando se esta trabajando con colecciones en entityFramework (especialmente en el modelo Code First) y se necesita traer un objeto de la colección, es decir de la base de datos que la representa, se tienen diferentes alternativas que no siempre son tan claras para el desarrollador, cuando usar cual.  Aquí una breve explicación y recomendaciones de cada una.

Find(): Busca primero si el objeto esta dentro del contexto y si no hace una petición a la base de datos, si el objeto no existe lanza una excepción.  Recomendada en casos en los que el contexto persista en memoria como por ejemplo aplicaciones de escritorio, no tan útil en aplicaciones web donde en general el contexto no esta en memoria entre una petición y otra.

First(): Retorna el primer objeto de la colección (o consulta) si la consulta no retorna registros dispara una excepción.

FirstOrDefault(): Retorna el primer objeto de la colección o consulta, si la consulta no retorna registros devuelve null. Este es el que recomendamos en aplicaciones web y permite manejar mejor el evento de la no existencia de un registro.

Single(): Retorna el único objeto que cumple con la condición, si ningún objeto cumple con la condición dispara error, si dos objetos cumplen con la condición dispara una excepción.

SingleOrDefault: Retorna un único objeto que cumple con la condición, si ningún objeto cumple con la condición retorna null, si dos objetos cumplen con la condición dispara una excepción.

Establecer con mucha claridad cuando se debe usar cada uno de estos métodos y hacer que sea una directiva muy clara dentro de las políticas de desarrollo de las empresas ayudará enormemente a la calidad y el mantenimiento de las soluciones que se desarrollen con Entity Framework.

Juan Peláez
CTO
3Metas.