La entrada secreta de los MVP

Esto deberían avisarlo cuando te envían el pack de bienvenida como MVP.


Resulta que en las principales ciudades del mundo existen unas entradas secretas a través de las cuales, y sólo sabiéndote la palabra clave, puedes acceder al submundo de los MVP de Microsoft.


El otro día me encontré por primera vez con una de ellas. Son bastante pequeñas (algún MVP que yo conozco no pasaría por ellas) y se confunden con el entorno urbano, pero están ahí. Os dejo una foto sacada con el móvil para que las reconozcáis:



Para los que no se lo crean: os diré como encontrar esta. Saliendo por la puerta de abajo de la Gran Vía en el Corte Inglés de Vigo (España), a mano derecha, subiendo por la calle Ecuador (donde está la parada de los taxis), está a escasos dos metros de esa esquina. No tiene pérdida.


¡Diosssss! ¿Qué diablos habrá ahí abajo?. Eso, amigo mío, sólo lo sabemos los MVP… y Bill Gates :-))





AÑADIDO: esta es la furgoneta MVP enviada por Eugenio Estrada 🙂



Por lo que se ve debe de ser un MVP pluri-empleado, jaja.

¿Tienes un buscador en tu portal? Esto te puede interesar…

Hace unos días me pregunté por curiosidad cómo se podría añadir un determinado buscador a la nueva barra de búsqueda de Internet Explorer 7. Sí, esa que le han copiado descaradamente a Firefox (con la que estos chicos Open Source ganan más de 80 millones de dólares al año) y que, realmente, no sirve de mucho pues puedes hacer las búsquedas igual desde la propia línea de direcciones. El caso es que me llamaba la atención puesto que, si te fijas, puedes hacer que aparezca más de un buscador en ella, aparte del que trae por  defecto (Live Search).


En Krasis hace unos años creamos un índice/buscador especializado en ingeniería llamado Pandeo.com cuyo nombre hace honor a un efecto de resistencia de materiales por el que las columnas esbeltas sometidas a compresión pueden llegar, curiosamente, a estar sometidas a flexión y combarse. Pandeo.com Se trata más de una prueba de concepto y un proyecto de I+D interno que de un producto propiamente dicho, aunque sí que lo hemos licenciado a alguna empresa por ahí. El buscador replica el modo de buscar de Google, «chupa» de Internet los recusos indicados analizando su contenido, generando resúmenes automáticos con lo más relevante, haciendo una caché del cotnenido, etc… Tiene detección automática de idioma para que, a lo que no está en castellano, se le añada automáticamente un enlace que permita traducirlo y algunas cosas curiosas más.


Aprovechando la curiosidad que tengo y que (a las tantas de la mañana) estaba ya un poco saturado del trabajo decidí ponerme a investigar un poquillo y así desestresarme un poco  🙂 Bien, resulta que para poder aportar un elemento adicional a la barra de búsquedas de IE7 hay que acogerse a un estándar denominado Open Search que está desarrollado por Amazon.com y su estupendo multibuscador A9 y auspiciado por Microsoft y algunos otros.


Básicamente Open Search consta de dos vertientes: descubrimiento y contenidos. La primera de ellas determina la forma en la que describimos a un buscador para que pueda ser usado por sistemas, como Internet Explorer 7, que quieran hacer uso directo de sus búsquedas. Se trata simplemente de un archivo XML con un determinado esquema que describe esas capacidades y que ahora veremos.
La parte referente a los contenidos indica las pautas a seguir para generar los resultados de las búsquedas de forma que otros programas puedan aprovecharlos para dotarse de contenidos. Esencialmente es una versión aumentada con atributos «extra» del formato RSS, tan de moda últimamente (y que por cierto nuestro producto MAILCast Server lleva soportando casi desde sus inicios, siendo quizá el primero del mercado en hacerlo, al menos en España).


Construyendo la descripción del buscador


Vale, pero ¿cómo le saco provecho yo a esto?. Vayamos por partes… Primeramente vamos a crear un archivo .xml que describa los servicios de nuestro buscador. A continuación muestro, por ejemplo, el que he usado para Pandeo.com:



<?xml version=»1.0″ encoding=»UTF-8″?>
<OpenSearchDescription xmlns=»
http://a9.com/-/spec/opensearch/1.1/«>
  <ShortName>pandeo.com</ShortName>
  <LongName>pandeo.com – El buscador de los ingenieros</LongName>
  <Description>Índice y buscador especializado en recursos para ingeniería.</Description>
  <Contact>info@pandeo.com</Contact>
  <Tags>buscador, índice, ingenier, recurso, enlace, mecánica, edific, estructura, automo, diseño, material, search, index, engineer, mechanic, structure, resource, design</Tags>
  <Url type=»text/html» template=»
http://www.pandeo.com/?Search={searchTerms}»/>
  <Image height=»16″ width=»16″ type=»image/vnd.microsoft.icon»>http://www.pandeo.com/favicon.ico</Image>
  <Image height=»15″ width=»32″ type=»image/png»>http://www.pandeo.com/pandeo32x15.png</Image>
  <Image height=»31″ width=»64″ type=»image/png»>http://www.pandeo.com/pandeo_64x31.png</Image>
  <Attribution>Copyright Krasis (
www.krasis.com). All rights reserved.</Attribution>
  <SyndicationRight>open</SyndicationRight>
  <AdultContent>false</AdultContent>
  <Language>es</Language>
  <OutputEncoding>UTF-8</OutputEncoding>
  <InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>


Si lo analizamos con detenimiento veremos que es casi obvio lo que significa cada nodo de este XML. De especial importancia es el nodo ‘Url’ y, en él, los atributos ‘type’ y ‘template’. Este último indica cuál es la URL que debe llamar el programa que desee hacer uso del buscador para lanzar consultas sobre él. Para ello basta con indicar una URL y marcar con el comodín {searchTerms} el lugar en el que se le pasará la cadena de consulta. Obviamente el buscador debe soportar las peticiones mediante el metodo GET de los formularios, es decir, con los parámetros en la propia URL.


El atributo ‘type’ sí que es especialmente importante. La especificación Open Search no obliga a que nuestro buscador exporte sus resultados al mencionado formato RRS extendido para búsquedas, si no que simplemente puede devolver HTML. Esto sería suficiente para que trabajase con IE7, aunque no para los agregadores de búsquedas, pero centrémonos en lo que nos ocupa, que es el primer caso. Por tanto, si la URL indicada devuelve HTML pondremos «text/html» en el atributo ‘type’. Si el buscador soportarse el RSS de Open Search deberíamos poner «application/rss+xml».


He creado también un par de gráficos en dos tamaños para que pueda aparecer bonito en los diferentes agregadores, y los he asignado en los nodos <Image> que aparecen.


Se puede consultar la especificación completa desde OpenSearch 1.1 Draft 3.


Insertándolo en IE7


Al archivo de descripción le he llamado Pandeo_OSD.xml (OSD es de Open Search Description) y lo he colocado en el raíz del buscador. A continuación debo hacer que IE7 o cualquier otro programa agregador compatible con la especificación lo pueda encontrar. Para ello he utilizado en la cabecera de la página principal del buscador una versión especial de la etiqueta HTML <link> que sirve para este propósito y que queda de la siguiente manera:



<link title=»Pandeo: búsqueda Open Search» type=»application/opensearchdescription+xml» rel=»search» href=»http://www.pandeo.com/pandeo_OSD.xml» />


Como vemos se indico el nombre que quiero otorgarle en la caja de búsqueda y marco la ruta en la que he almacenado el archivo de descripción.


Nada mas hacer esto, cuyando alguien visita Pandeo.com con IE7 u otro contenedor compatible ve algo como esto:



Como vemos está disponible para la búsqueda desde el cuadro de texto mientras estamos en la propia página (algo, por otra parte muy poco útil pues ya estamos en el propio buscador ¿no?). Pero además, y esto es lo importante, nos ofrece la posibilidad de agregarlo para siempre a la caja de búsqueda de modo que podamos usarlo directamente desde ahí en cualquier momento sin necesidad de visitar el buscador.


Si pulsamos en esta opción el navegador nos pregunta si queremos realmente añadirlo, e incluso si queremos que sea nuestro buscador por defecto:



Voilá!, ya lo hemos conseguido:



Ahora ya tenemos Pandeo.com como un buscador más de la barra de búsqueda. Mola ¿no?


Añadiéndolo de manera programática


Si bien este debería ser el modo más habitual de agregar el buscador, bien es cierto que un usuario normal en raras ocasiones se va a fijar en el detalle de que lo puede agregar desde el menú desplegable de la cajita ¿verdad. Para facilitarles el trabajo sería estupendo poder ofrecerles la posibilidad de añadirlo simplemente pulsando un botón o un enlace de la página, en plan: «Añada Pandeo.com a su caja de búsqueda».


El caso es que IE7 nos lo pone muy fácil también. Dejando a un lado el código necesario para detectar que el navegador del usuario es IE7 para mostrar esta opción sólo cuando sea pertinente, el único código que necesitaremos es el siguiente:



<a Href=»#» onClick=»window.external.AddSearchProvider(‘http://www.pandeo.com/Pandeo_OSD.xml’);»>Añade Pandeo.com a tu caja de búsqueda</a>


Listo. Sólo hay que indicar la ruta de la descripción XML al nuevo método AddSearchProvider de la clase external de la ventana actual del navegador.


Es un tema bastante interesante, sobre todo si implementas la otra parte del estándar, la que permite devolver los resultados como RSS+XML puesto que de ese modo puedes sindicar las búsquedas en agregadores como A9, OSFeed o RSSBandit. Cuando saque un día libre (ciencia ficción) igual implemento esta parte para Pandeo.com y así queda redondo del todo 🙂


En fin, que si tienes un buscador, aunque sea sólo para dentro de tu portal, este tema te puede venir de maravilla.


Mañana más…


Quien dice mañana dice pasado, pero el caso es que en breve quiero rematar este asunto con otro tema a mi juicio interesante y, aunque ya más antiguo, relacionado directamente con éste: cómo crear tus propios comandos de búsqueda para la barra de direcciones de modo que pongas, por ejemplo:


PANDEO automoción


y se lance una búsqueda con la palabra «automoción» en Pandeo.com, o bien:


GGL cursos campusMVP


y se abra Google con los resultados de la búsqueda indicada.


Esto es muy útil no sólo para las búsquedas sino también para crear comandos personalizados para lanzar otras URLs.

Goowy: uno de los mejores escritorios web que he visto

Últimamente con esto de la Web 2.0 han empezado a proliferar como setas las apliaciones que tratan de reproducir un entorno de ventanas tradicional pero dentro de un navegador. Ya he mencionado anteriormente algo sobre este tema, pero la verdad es que este tipo de programas no me convencen mucho (al menos hasta que Google saque uno propio que no me extrañaría, jeje).


Bien el caso es que he tenido ocasión de probar hace poco uno de ellos que realmente me ha parecido el mejor que he visto hasta la fecha. Se trata de Goowy. Es un entorno de escritorio basado en Web con un montón de funcionalidades (aunque más o menos como todos): mensajería, e-mail, documentos, archivos, etc…


Lo que más me ha gustado es lo ágil que se mueve, la facilidad de uso, los fondos y skins personalizables y el entorno en general, que parece bastante válido para un uso habitual:



Échale un vistazo pues merece la pena.

Control gratuito: FileUploadAJAX de Subgurim.net

Hace unos días Javi Navarro, alias Subgurim, se puso en contacto conmigo para comentarme que había puesto a disposición de todo el mundo un interesante control para ASP.NET. Se trata de FileUploadAJAX, un control sustitutivo del control para subida de archivos al servidor (control FileUpload) de ASP.NET 2.0. Este control usa una técnica de aspecto AJAX para conseguir una interfaz de usuario más agradable y sencilla.


Se trata de un control muy fácil de usar. Desde que lo descargue hasta que estuve gestionando archivos en un ejemplillo pasaron menos de 10 minutos. Aunque el control es una versión 1.0 y se puede mejorar en algunos aspectos vale la pena usarlo pues simplifica bastante el trabajo.


Una de las cosas más interesantes (aparte de que es AJAX) es que permite gestionar desde la misma página la subida de varios archivos, almacenando una lista y pudiendo borrarlos si nos arrepentimos. También gestiona automáticamente el renombrado de los archivos que ya existen o la creación de las carpetas en las que deseamos guardar lo que se sube.


Un ejemplo rápido


Descárgate el control desde http://fileuploadajax.subgurim.net/. Ahora para crear una primera aplicación de ejemplo haz lo siguiente:


1.- Crea un nuevo proyecto Web.
2.- En el cuadro de herramientas del diseñador de WebForms añade una referencia al control FUA.dll desde la carpeta en la que lo hayas descargado (botón derecho y «Elegir elementos…»). Así podrás usar el control con sólo arrastrarlo sobre tu formulario.
3.- Arrastra el control a tu formulario. Verás que aparece una caja de subir archivos como representación del mismo.
4.- En el cuadro de propiedades ajusta los textos que quieres usar para añadir, borrar, eliminar de la lista y para el progreso de subir los archivos. Ajusta también la propiedad MaxFiles con el número máximo de archivos que quieras subir desde la página (por ejemplo 3 o 5).
5.- En el código de la página añade una sentencia



Imports Subgurim.Controles


para hacer uso directo y fácil de las dos clases que ofrece el control.
6.- En el evento Load de la página escribe lo siguiente (VB.NET):



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If FileUploaderAJAX1.IsPosting Then
    Dim archivo As HttpPostedFileAJAX
    archivo = FileUploaderAJAX1.PostedFile
    archivo.responseMessage_Uploaded = «Guardado: « + archivo.FileName
    FileUploaderAJAX1.Save()
  End If
End Sub


Es decir, si se está subiendo un archivo, obtenemos una referencia a un objeto de la clase HttpPostedFileAJAX que lo representa, y establecemos el texto a mostrar una vez se haya cargado como «Guardado: » seguido del nombre del archivo (así damos «feedback» al usuario sobre la subida del archivo). Finalmente lo guardamos. Al no especificar la ruta se guarda en el raíz de la aplicación.


Ahora ejecuta la aplicación. Verás que funciona muy bien y que la página no se recarga completa, sólo una parte, al más puro estilo AJAX. Muy fácil. Obviamente habría que crear una gestión de posibles errores, controlar aspectos como el tipo de archivo y su tamaño para que no se pueda subir cualquier cosa, etc… pero el ejemplo sirve para ver lo fácil que es usar el control.


Realmente no se trata de un control AJAX ya que por debajo usa marcos ocultos para conseguir su acción, pero el efecto obtenido es el mismo.


Es un control ingenioso y útil si bien necesitaría algunos toques a mayores para poder personalizar mejor la interfaz, corregir algún detalle (el texto de «uploding» no se muestra correctamente al subir archivos grandes, por ejemplo) y hacerlo más «empresarial». Adolece de los mismos posibles problemas que el control FileUpload de ASP.NET, pero es mucho más «cool» que este gracias a las capacidades asíncronas y algún detalle más como por ejemplo la traducción automática de rutas virtuales en físicas y el poder subir varios archivos desde la misma página.


Desde la página de descarga hay también documentación (algo escueta), unos foros y algunos ejemplos. Que lo disfrutes y gracias a Subgurim por dejar esto gratis 🙂

Google abandona su API de servicios Web a favor de AJAX

Google ha abandonado la API basada en servicios Web que tenía a través de la cual los programadores podíamos introducir búsquedas en nuestras propias aplicaciones. Y lo ha hecho para sustituirla por una nueva API basada exclusivamente en JavaScript y JSON.


Esta nueva API permite realizar todo tipo de búsquedas, tanto en la Web,como en mapas, vídeos, noticias y blogs. Y es realmente fácil de usar. En su caso más sencillo, donde no requiramos un control absoluto sobre la distribución final de los elementos (si bien permite algo de control), bastan cuatro o cinco líneas de código para tener búsquedas al más estilo Web 2.0 en nuestro portal o página.


La lástima es aquellos que deseen incorporar búsquedas en aplicaciones de escritorio tradicionales, que no estén dentro de un navegador. Para ellos esto es una mala noticia pues lo tienen bastante complicado y una API basada en SOAP era mucho más adecuada.


Hay quien opina que el movimiento tiene mucho que ver también con el control que proporciona devolver estructuras de código a las que se le puede añadir comportamiento (que es lo que devuelve JSON), frente a devolver simplemente datos que es lo que se obtenía con SOAP. Con esta nueva API Google puede controlar exactamente el comportamiento de los contenidos devueltos, la publicidad y el «branding». Si bien esto es cierto en el uso básico de la API todo apunta a que al usar el código con un poco más de control no tiene porqué ser necesariamente así. Echadle un vistazo a la documentación y ya me comentareis.

Bill, gracias. El mundo es un lugar mejor.

Portada revista TimeLos días 24 y 25, Nochebuena y Navidad, como es tradicional los pasé en la casa de mis padres en la playa, con toda la familia, los turrones y este tipo de cosas… En esa casa se guarda gran parte de mi juventud: apuntes de la carrera, ropa, libros y muchos recuerdos.


El caso es que estando allí encontre un antiguo ejemplar de la revista Time, de la cual soy suscriptor inconstante desde hace muchos años. Normalmente al cabo de dos o tres semanas tiro a la basura los ejemplares anteriores, si bien me guardo algunos que traen ciertas cosas interesantes. Pero son los menos. El ejemplar que encontré en casa de mis padres debía de serlo porque lo conservé allí hasta hoy. Se trata del número del 18 de agosto de 1997 (¡hace casi diez años!, ¡Cómo pasa el tiempo!). En su portada (ver foto que tomé con mi móvil en el lateral) se ve a un ya no tan joven Steve Jobs hablando por teléfono y supuestamente diciéndole a Bill Gates la frase que da título a este post.


Toda esta historia de la portada viene porque Bill Gates la semana anterior acababa de «salvar» a Apple de la bancarrota invirtiendo de nuevo en ella una importante suma añadida a la parte de la empresa que ya tenía Microsoft, cosa que mucha gente probablemente no recuerde.


Steve Jobs se marchó (o mejor dicho, lo echaron) de su propia compañía en septiembre de 1985, pero en la época de la revista regresó para intentar salvarla del cierre tras una serie de desastrosos gestores (John sculley, Michael Spindler y Gil amelio) y tras haber vendido a la propia Apple su nueva empresa NeXT Technology. Con esta jugada Apple conseguía la tecnología del visionario Jobs (parte de la cual está en la base de MacOS X) y además se aseguraba que Steve volvía a la empresa.


Cuando Jobs volvió a Apple la cosa estaba muy mal. Jobs cambió todo de arriba a abajo, incluyendo la ubicación de la empresa ya que: «Odio este edificio. Representa todo lo que ha ido mal con Apple.» (sic). En 1997 las pérdidas de Apple en los últimos 18 meses acumulaban 1.800 millones de dólares y necesitaban algo que los pudiera sacar de esa situación. Y ahí es cuando entra Bill gates y se compromete a seguir desarrollando Office para Mac durante los próximos años revitalizando así la plataforma, y a invertir 150 millones de dólares sin derecho a voto. La presentación fue la mar de «Orwelliana» con Bill Gates en una pantalla gigante a modo de gran hermano en el fondo y de hecho recordaba al mítico anuncio de Apple de la superbowl que iba precisamente de ese palo.


Interior TimeBueno dejo todas las tramas que subyacen a esta situación para que el que quiera las lea en el artículo original que reseño abajo, pero me llamó la atención leer de nuevo esta revista y ver las cosas con un poco de perspectiva que te dan los años.


De hecho Jobs, gracias a Gates, salvó Apple como es evidente, aunque tal vez no del modo que él esperaba. Me llaman la atención también varias cosas:


· Jobs ingresó por la venta de NeXT 400 millones de dólares en efectivo y 1.5 millones de acciones de Apple. Vendió de inmediato las acciones. Sólo poseía una acción testimonial en el momento de la publicación de la revista y dijo que no tenía inconveniente en volverse a Pixar de nuevo (otro de los grandes proyectos de este visionario a quien admiro empresarialmente tanto) si a alguien no le gustaba. Dado que tenía pasta de sobra para invertir en Apple sin recurrir a Bill Gates, ¿por qué no lo hizo?. Personalmente pienso que no creía en absoluto en el proyecto.


· No hemos «evolucionado» nada desde aquella época. Que nadie me malinterprete, es una forma de hablar. Me refiero a que, durante la presentación de Bostón, cuando salió Bill Gates en la pantalla y Steve le decía a los más de 1.000 asistentes que é (si él, el lado tenebroso) era el que les iba a salvar del cierre, la gente no paraba de abuchearlo igualmente. Igual de sectarios que ahora (y paso de entrar en polémicas, ya aviso). En palabras textuales de Jobs «fué un comportamiento infantil», «Me disgustó esa reacción tan poco profesional. Por un lado se mueren por tener la última versión de Office en sus Mac, pero por otro abuchean al presidente de la empresa que se lo proporciona. Me parece algo estúpido por su parte.». Jobs dixit.


· Por aquel entonces se mencionaba en la revista que el mayor peligro para la hegemonía de Microsoft era Java, aunque ya se estaba meridianamente claro también que el retraso del gigante de Redmond en Internet era un gran problema, como realmente se ha demostrado. De hecho ahora nos asustamos por la cifra que acaba de pagar Google por YouTube (1.600 millones de dólares) pero ya en la época (Jun. 97) Microsoft invirtió unos respetables 1.000 millones por un elevado porcentaje de la empresa Comcast. Ahí es nada. Además invirtió unos 425 millones en WebTV (quién se acuerda), y unos cuantos cientos más en otras empresas de Internet.


En fin poco más. También me ha llamado la atención lo poco que ha cambiado esta revista en 10 años: formato idéntico, así como distribución, muchos colaboradores y el tipo de artículos. Alucinante. Quizá lo que más haya cambiado es la publicidad: otro signo de los tiempos. En aquel número de 1997 había pocos anuncios y quitando uno de ordenadores el resto eran de bancos. En los números actuales los anuncios son casi todos de empresas de energía, relacionados con el medioambiente y también con las marcas de coches. Como cambia la sociedad.


Puedes leer el artículo completo en el archivo histórico de Time: «Steve’s Job: Restart Apple» (buen juego de palabras). Creo que merece la pena. En ese mismo número y justo a continuación en la página 33 está también la continuación titulada «If You Can’t Beat ‘Em» que también merece mucho la pena.


¡¡Nos hacemos viejos!! 🙁


En un próximo post os contaré lo qué me leí durante la semana de vacaciones que he tenido. Creo que también es interesante.