Nuevo sitio en Microsoft: HTML 5 Labs

Un nuevo sitio de Microsoft, dedicado a la investigación de prototipos basados en el nuevo estándar HTML 5 ha visto la luz recientemente y está disponible en la dirección «HTML 5 Labs«. La declaración de intenciones es clara, y así lo explica Jean Paoli, co-autor del estandar XML y General Manager for Interoperability Strategy en Microsoft, en el artículo «Prototyping Early W3C HTML5 Specifications» garantizar a los desarrolladores que los sitios que diseñen utilizando el nuevo estándar, utilin recursos que no desaparecerán cuando se consolide la especificación y pase a ser oficial.

De momento, hay dos proyectos: IndexedDB, dirigido por Pablo Castro, que es un borrador para una especificación que permita almacenar grandes cantidades de datos estructurados en el explorador utilizando índices palto rendimiento en el acceso po, y WebSockets, dirigido por Thomasz Janczuk, que trabaja en la implementación de un sistema dúplex de comunicación entre los navegadores y el servidor, tal y como se explica en esta entrada de su blog.

 

Lo nuevo en Silverlight 5

Ya no es un secreto para nadie que Scott Guthrie anunciará la nueva versión Silverlight 5 en el próximo «Silverlight Firestarter» del día 2 de diciembre. Lo comenté yo también ayer en más detalle en el blog de DotNetMania (blog.dotnetmania.com). Tampoco lo es el papel futuro que la plataforma tendrá en el desarrollo para XBOX360 (la tan traída y llevada oferta de trabajo para ingenieros de software que se incorporen a ese proyecto). Pero lo que quizá no resulte tan conocido, son algunas de las características que parece que incorporará esta versión. Los mentideros allegados son un hervidero en estos momentos y hasta se hacen porras (versión USA) sobre las novedades que anunciarán Guthrie el dia 2.

Aunque no suelo hacerlo, me he liado la manta a la cabeza (para taparme la calva, más que nada) y me he decidido a apostar por las que pienso que tienen más posibilidades de estar en esta versión. Lo podéis ver en la primera entrada de la sección «Crónicas Binarias» en mi sitio:
www.elavefenix.net/cronicas.aspx. Faltan cosas que seguro que estarán (si no en la beta en la versión final), y quizá alguna de las que cito no aparezca. Veremos qué pasa…))

Saludos

La historia de la creación de .NET

A propósito de mi «post» anterior sobre los delegados, varias personas han comentado su interés por saber algo más de la historia de la creación de .NET, y algunas de las curiosas circunstancias que se dieron, así que aquí va lo que yo sé por entrevistas con el propio Hejslberg, Don Box, y algunos otros. Hejlsberg es un tipo totalmente vocacional, y en otra entrevista decía «I got into programming not because I wanted to make a lot of money, or because someone told me to. I got into it because I just got totally absorbed by it. You just could not stop me«. De hecho, a la pregunta de porqué se había ido de Borland, respondió: «pensé que era el momento para mí de buscar nuevos retos. El tiempo que pasé en Borland fue excelente, pero por otro lado el tener la oportunidad de trabajar con algunos de los más brillantes diseñadores de la industria informática de hoy, me resultaba muy atractivo«.

(Hejlsberg en Tech-Ed 2007)

Hejlsberg entró en MS en 1996 con una oferta irresistible. Él mantenía correspondencia desde su época de arquitecto en Borland con algunos líderes tecnológicos de diversas compañías, entre los que estaban Brian Harry (MS), personal de IBM, de universidades, etc. Y uno de los motivos de esas discusiones trataba de cómo debería de ser un Garbage Collector (las discusiones sobre este tema son abundantes en la red), y sobre cómo se podría hacer una nueva plataforma de ejecución que mejorase las prestaciones de J2EE (más de 10 años después de la creación de éste). Gates quería conseguir una plataforma similar pero mejorada, que aprendiese de los fallos y mejorase y actualizase sus posibilidades. Y Hejlsberg era el candidato idóneo.

En 1996 (los datos económicos no vienen de su parte sino por otra via) MS le ofreció $1,5 millones + stock options por liderar el proyecto. Borland respondió con una contraoferta y entonces MS dobló su oferta, que -además- incluía carta blanca para fichajes de su propio equipo. Fin del debate.

El propio Hejslberg me decía lo siguiente respecto a sus propósitos iniciales: «yo me incorporé a Microsoft en Noviembre de 1996, y mi primer trabajo fue asumir la construcción (como Arquitecto principal) de Visual J++. El proceso de construcción ya había comenzado y yo de hecho me incorporé a lo que después fue la versión 1.1 del producto y  no era la forma idónea de abordar una implementación así, por que había que integrar como fuera Visual J++ dentro de Visual Studio, y tampoco podía decirse que estuviéramos usando el modelo de objetos idóneo en ese momento. Era como tomar la idea de C++ y poner Java 1.1 en su lugar, no tenía el «feeling» real de Java«.

Lo cierto fue que -en un momento dado- y debido al contencioso que mantenían MS y Sun se «despistó» un correo de Hejlsberg a Gates, con copia a los principales líderes técnicos vinculados al proyecto (Peter Kukol, Nathan Myhrvold, el fundador de MS Research, etc), donde contaba lo siguiente: «Ya tenemos planeada la arquitectura de la nueva plataforma y las líneas generales de cómo vamos a implementarla. También está muy avanzado el trabajo con el nuevo lenguaje. A falta de un nombre mejor, vamos a llamarlo J++». Este lenguaje, finalmente, fue C#, por que a alguien se le ocurrió que # era en realidad como 4 signos +, y Anders afirmaba que se había inspirado en muchos otros lenguajes antiguos, no solo en C++ y Java, sino en Haskell, ML y varios más.

Respecto a C#, Anders añadía: «En C#, sin embargo, hemos podido abordar el problema completamente desde cero. Hemos considerado todas estas cosas, y hemos eliminado aspectos engorrosos, como la gestión de memoria, el manejo de punteros, y hemos hecho hincapié de forma muy especial en la seguridad de tipos y la conversión, etc, para permitir una mayor flexibilidad sin que eso suponga una pérdida de las posibilidades. Se puede seguir utilizando las características «antiguas», como código no seguro, mediante una declaración explícita, o puede usarse código totalmente seguro. Esta es una de las características de flexibilidad más importantes dentro de C#».

Otros dos pilares fundamentales a tener presentes en la construcción de la plataforma eran los servicios Web y XML como sintaxis (XML no es y nunca será un lenguaje en sí, sino una sintaxis, una forma de escribir datos con su descripción y su arquitectura. De ahí que de origen a distintas «gramáticas» que describen actividades diversas: MathML, CML VRML…), y MS ya se había anticipado y participó de forma activa en la construcción del estandar (ver documento oficial del estándar en W3C, donde aparece entre los firmantes de la especificación, Jean Paoli de MS, junto a personas de Sun, Netscape y el mundo académico.

Paralelamente, Don Box, que también colaboraba con W3C, pero en la creación del estándar SOAP, se incorporaría a MS junto a Peter Drayton, y varios más en lo que ya era una carrera imparable y bien definida en la construcción de esta plataforma…

Stan Lippmann

Entre ellos, a muchos les sorprendió encontrar a Stan Lippmann, que se convertiría en Arquitecto de Visual C++ .NET , principalmente centrado en las Extensiones Administradas del lenguaje. Durante más de una década estuvo en los Bell Laboratories donde trabajó junto a Bjarne Stroustrup (alma mater de C++) en las primeras versiones de cFront , la implementación de C++ de Bjarne.

El resto es más conocido. Cuando recupere algún dato más, lo comentaré por aquí, como lectura veraniega intrascendente…)

Saludos

 

Anders, ¿por qué creaste los delegados?

Eso le pregunté a Anders Hejlsberg, el arquitecto principal de .NET y «alma mater» del lenguaje C#, la primera vez que lo entreviste, hace ya 10 años. La respuesta me dejo helado, por que no me esperaba algo así, y dió lugar a muchos paréntesis en mis clases donde explicaba esto con más detalle. Hoy lo quiero compartir aquí, ya que se sale de la mera teoría. Su respuesta: «No me quedó más remedio…» (¿?)

Ante mi sorpresa, Hejlsberg profundizó en el tema comentándome que, cuando Gates le hizo la correspondiente oferta (IRresistible, por que implementaba la interfaz «no puedo decir que no»), una de las cosas que antepuso fue terminar con las infames BSOD’s.(pantallas azules, ya sabéis). Así que, como es un científico, abordó el problema de forma científica, y comenzo por hacer una análisis estadístico de cuáles eran sus causas. Resultó que el 90% eran debidas a drivers, y ahí solo podían ponerse serios con los fabricantes y poco más. PERO, el 10% restante, que era por causa propia, obedecía ¡en su 99%! a solo dos razones: Punteros a función perdidos y problemas «Casting» (conversión de tipos). La gaussinana resultante tenía un aspecto similar a este: (Y me hizo un dibujo parecido al que adjunto aquí):

 

1º Objetivo cumplido: focalizar el problema y reducirlo al máximo.

Ahora venía el segundo: dar con una solución -única a ser posible- que resolviese ambos. Y aquí es donde entra la auténtica genialidad de este danés. Vuelve a pensar en los orígenes de los dos problemas y se da cuenta de que en los dos casos se relacionan con la llamadas a métodos. Le da una vuelta de tuerca más y vuelve a replantearse las bases de la Teroría General de la Información, para identificar al problema concreto dentro del modelo teórico: (primera página de  cualquier libro sobre el tema): Emisor – Receptor – Canal e Información transmitida. Pero…¡eso es el sistema de eventos!  Emisor -> La clase que llama usando un método. Receptor -> Otra (o la misma clase) que recibe (en otro método). CANAL (el vacío del entorno de ejecución – que el sustituirá por un entorno ADMINISTRADO) e Información transmitida (los valores que pasamos al receptor).

2º Problema resuelto: el modelo sobre el que se actuará queda indentificado de inicio como parte del modelo general de la TGI. Y sus partes, también: el CANAL y la recepción de los tipos esperados.

¿Qué faltaba? Lo que siempre se ha hecho en Informática para resolver problemas propios de las llamadas directas: poner un intermediario. UN DELEGADO. Las llamadas ya no se harán nunca de forma directa, sino a través del delegado, que -al estar administrado por el CLR- no intentará llamar a algo que no está disponible. Problema del puntero a función resuelto por la vía del canal (y por la eliminación de los punteros, claro).

La solución a la segunda causa, decía Hejlsberg, «me pareció trivial, una vez resulto lo anterior». Basta con que el delegado que hace las llamadas TENGA LA MISMA SIGNATURA (recordemos, mismos tipos de parámetros y mismo valor de retorno), que el receptor, y, ¡adiós a los problemas de «casting»!, y, por ende, adiós a los problemas de las BSOD por esas causas.

Hejlsberg se fue a Canada durante 6 meses a pensar sobre el asunto, pero una vez planteado al problema, afirmaba que lo resolvió en un fin de semana (al menos en teoría). Su gran apoyo: el trabajo serio, con método y los conocimientos profundos de los fundamentos. Hasta hoy no he visto nada que contradiga esos principios.

Saludos y buen verano.

PD: Se admiten comentarios, apostillas y todo tipo de opiniones. El tema creo que lo merece.

Marino

 

Cómo convertirse en Super-Administrador en Windows 7

Pues sí. Existe una cuenta de Super-Administrador,
que se crea la primera vez
que se inicia el sistema (tras la instalación) y se desactiva
por cuestiones de
seguridad. Es algo así como el GodMode para cualquier
operación y la promesa
de que no más preguntas tendrán que ser contestadas garantizando
la legitimidad
de ciertas acciones. Los pasos a dar son los siguientes:

  • Lanzar una ventana de comandos (CMD) en modo Administrador
  • Teclear: net user administrator /active:yes
  • (Para desactivarla posteriormente: net user administrator /active:no)
  • Si todo va correcto, cerrar sesión de la cuenta activa y
    volver a la
    ventana de selección de cuenta, donde debe aparecer la nueva cuenta Administrator. Funciona estupendamente (aunque siempre conviene ese recordatorio de que «estas cosas las asume Ud bajo su cuenta y riesgo, etc, etc.». Y me da que W7 todavía guarda otras sorpresas…;)

Para más datos parecidos podéis ver las últimas entradas en la sección «Crónicas Binarias«, de mi sitio web.

Saludos

Marino

The Art of Computer Programming o cómo resistir el paso del tiempo

Uno de los libros más emblemáticos de toda la historia de la la Informática es, sin duda, esta obra de Donald Knuth. El porqué, se ha discutido en la abundante literatura al respecto, que todos los grandes libros generan. Pero, en mi opinión, la clave está en que Knuth busca la esencia de los problemas informáticos y los aborda desde un punto de vista matemático, que transciende la solución concreta, y, por tanto, sigue viva, porque vivas siguen las Matemáticas que lo sustentan: el metalenguaje en que fueron escritas.

La obra constaba originalmente de 3 volúmenes (el primero de ellos publicado en 1968, y el último en 1973), pero, recientemente (2005) se ha publicado un cuarto, donde Knuth y sus colaboradores de la Universidad de Stanford abordan aspectos novedosos que, o bien no existían en el momento de la creación de los textos originales, o eran demasiado avanzados (o se encontraban en un estado aún embrionario), como para proceder a una formalización. Además, el buen humor de Knuth es proverbial, y para hacer -ya en aquel entonces- de su obra algo dinámico y que fomentara la colaboración e interacción con el lector, no se le ocurrió otra cosa que ofrecer premios a quien encontrara erratas o imprecisiones en el texto. El premio consistía en un «Dolar Hexadecimal» o sea 2,56$, que el descubridor podía hacer efectivos en cualquier banco.

Más recientemente, el CEO de Apple Computers, Steve Jobs, ofreció una conferencia a sus empleados impartida por nuestro personaje. Cuando este llegó, Jobs se levantó de su asiento para recibirlo con un «Es un honor conocerlo Profesor Knuth», a lo que Knuth respondió «You’re full of shit», lo que -siendo comedido- podríamos traducir por «No seas gilipollas», ya que -como afirmó después- asumía que Jobs no había leido su libro ni siquiera por encima.

Otra anécdota relativa a los grandes CEO’s de la industria informática tiene que ver con el propio Bill Gates. En su blog, hace unos años declaró -respecto a la obra que nos ocupa- que había intentado leerla, y no había pasado de la página 40, pero que, aún así, la consideraba una obra de referencia absoluta y se la exigía a todos sus ingenieros. Para concluir: «De hecho, si la has leído, quiero tu currículo».

Por lo demás, el autor ha sido reconocido con los algunos de los más distinguidos premios que se conceden en el mundo de la informática, como el Premio A.W. Turing (una lista de los galardonados se encuentra resumida en mi web) y el John von Neumann, y, a sus 72 años, sigue en la brecha como Profesor Emérito en Stanford, revisando los sucesivos anexos del cuarto volumen de esta obra, no sé si inmortal, pero sí una «rara avis» en un mundo donde un período de 2 años marca la obsolescencia. Hace unos años ya La prestigiosa revista «American Scientist«, la incluía en la lista de los «100 libros que más influencia científica han tenido a lo largo de la historia».

 Saludos

(OT) Belleza fractal

Hace ya 30 años que el matemático Benoit Mandelbrot descubrió el Conjunto de Mandelbrot, que responde a la representación gráfica bidimensional de una ecuación bastante simple (ver definición). Ahora un grupo de matemáticos (Richard Rucker y otros) ha profundizado en el tema añadiéndole una dimensión a las ecuaciones, y representándolas gráficamente. Los resultados son… para verlos. Animado por la ocasión, he incluido un visor Silverlight con zoom incluido que permite apreciar algunos de los increíbles detalles de estas estructuras. Incluso hay áreas del dibujo que han sido bautizadas con nombres bien sonoros, como la primera que presento en el control «La cueva de los secretos perdidos»…

Podéis verlo en mi sitio web: www.elavefenix.net

Saludos

Marino

(OT) Oferta de trabajo para un Analista-Programador

Hola a todos

Si alguno de vosotros le apetece cambiar de aires o simplemente aprovechar una buena oportunidad en el cargo que indico en el título, que se ponga en contacto conmigo en la dirección de correo que adjunto más abajo.  Eso sí, la experiencia como Analista-programador tiene que ser contrastable y demostrable. El trabajo no es para un proyecto, sino algo de duración indefinida, y la empresa tiene una reconocida solvencia.

Correo: mposadas@mvps.org

Espero que esto pueda ayudar a alguien.

Saludos y buen verano

Marino Posadas

www.elavefenix.net

 

 

 

Dices tú de videos…

La estupenda referencia de José M. Alarcón (que ya conocía y recomiendo a todos, por que creo que por ahí van los tiros), me ha recordado un vídeo paralelo en el tiempo de publicación (muy reciente) en el que la directora del famoso Icon MediaLabs del M.I.T., Patti Maes presentaba lo último en interfaces de usuario. Cuesta 350$, y no tiene teclado, ni pantalla (ni le hace falta).

La demostración propiamente dicha comienza sobre la mitad del vídeo, cuando el sistema empieza a reconocer los movimientos del usuario y genera en la superficie que se quiera (una pared, los dedos de una mano) tanto el teclado, como la pantalla de proyección. En su aserción final, Maes promete algo impresionante. Dice (traduzco): «les emplazo a Uds. dentro de 10 años en este mismo escenario, para ver esta misma tecnología…como un implante…». El auditorio se caía literalmente de aplausos. El vídeo esta disponible en esta dirección: http://www.youtube.com/watch?v=nZ-VjUKAsao

Y ya que estoy escribiendo aprovecho para comentaros que finalmente he decidido ponerme por mi cuenta. De momento, mi primera aventura en solitario está siendo la construcción de la nueva Web de DotNetMania, en la que estoy usando ASP.NET 3.5 y Silverlight 3.0. Cuando esté lista (me tendrá todo el verano liado, supongo), ya pondre un enlace por aquí.

Un abrazo a todos

Marino

www.elavefenix.net

 

Sobre el porqué recomienda la documentación el uso de 1 en vez de 0 en Thread.Sleep(1) para Silverlight

Hola

Iba a poner esto como respuesta al artículo de Octavio sobre «Qué problema tiene este código», pero lo pongo en artículo aparte por si le sirve a alguien más. La documentación oficial de Silverlight recomienda, en efecto, usar System.Threading.Thread.Sleep(1) (con un 1 en vez de un 0), cuando queremos suspender el subproceso actual y dar prioridad a otros subprocesos en espera de ejecución. La razón principal no la sé al 100%, pero sí que hay un par de cosas importantes en este escenario:

a) por un lado la documentación advierte que «No llame a Sleep
desde el subproceso de la aplicación principal en la aplicación basada
en Silverlight. Si lo hace, la interfaz de usuario dejará de responder,
se bloquearán los eventos BackgroundWorker y DispatcherTimer, y se bloquearán las llamadas entre subprocesos al subproceso de la interfaz de usuario que se realizaron utilizando
Dispatcher«.

b) Pero, sobre todo, hay que recordar que una aplicación Silverlight actualiza la interfaz de usuario desde la hebra principal de ejecución. Esto puede provocar situaciones intolerables cuando se están procesando grupos de ficheros locales, por ejemplo, y la IU no hace nada hasta que ese proceso concluye (pongamos por caso, creando bitmaps a partir de ficheros gráficos del equipo del usuario que van a ser presentados en pantalla). En este caso, debiéramos dejar la responsabilidad de la creación del Bitmap a un método que sea llamado cada vez que se produzca el evento CompositionTarget.Rendering, en una instrucción del tipo CompositionTarget.Rendering += new EventHandler(CrearBitmap). Si lo hacemos así, cada vez que un nuevo elemento (Bitmap, aquí), este construido y listo para ser mostrado, el motor de interpretación visual (rendering) actualizará la IU evitando esos lapsus por  falta de respuesta.

c) El uso de System.Threading.Timer en Silverlight debiera de hacerse cuidadosamente, y, mejor aún, pensar en soluciones con DispatcherTimer, como demuestra Emil Stoychev en su artículo «Tip: Asynchronous Silverlight – Execute on the UI thread«.

d) Lo del 1 por el 0 será para darle tiempo a la pobre (hebra). De todas formas, y si os gusta eso del debugging a más bajo nivel -David (Salgado) y Pablo (Alvarez)…por si no la habíais leído…-)), fijaros lo que dice esa maravillosa «monstrua» que es Tess Ferrandez en «Debugging Silverlight applications with windbg and sos.dll«

Saludos

Marino