Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
viernes, 9 de junio de 2006
Esta mañana he recibido un correo electrónico invitándome a probar Google SpreadSheets, el último invento de los laboratorios de esta compañía. Como Googligan convencido, en cuanto he tenido ocasión, he saltado a comprobar cuánto de cierto hay en lo que se ha estado comentando en Internet durante los últimos días.

En la actualidad Google SpreadSheets se publica en forma de test limitado, es decir, se trata de una versión beta (bastante avanzada, todo sea dicho) a la que no se puede acceder sin disponer de una invitación, la cual es posible solicitar desde la misma Web. A mí me ha tardado tres o cuatro días desde el momento en que rellené el formulario de solicitud.

Vale, pero comencemos por el principio: ¿qué es Google Spreadsheets? Podríamos definirlo como una hoja de cálculo completamente on-line, una especie de Excel preparada para funcionar en un navegador, sin necesidad de descargar ni instalar software alguno, y, en principio, de uso gratuito. Pinta bien, ¿eh?

Desde el punto de vista de un usuario habitual de la hoja de cálculo de Microsoft, el primer contacto con la herramienta es impresionante. Estéticamente, muy limpio (se nota que usa Ajax, permítaseme el chiste fácil ;-). El manejo, sencillísimo, y más aún si se ha utilizado Excel, puesto que los mecanismos de interacción son muy similares a los de esta popular aplicación. La velocidad, bastante buena; en las pruebas que he realizado, con hojas de cerca de 2.500 celdas con fórmulas enrevesadillas encadenadas unas a otras, en ningún momento he notado retrasos que pudieran impedir el trabajo con ellas de forma fluida.

En cuanto a las funcionalidades, salvando la ausencia de gráficas, no he echado en falta nada de lo que utiliza habitualmente un usuario de nivel bajo y medio de Excel, entre los que nos encontramos la mayoría: fórmulas, formatos, ordenaciones, e incluso operaciones con archivos. Bien es cierto que no alcanza la gran cantidad de opciones que tiene Excel, pero desde luego, las principales sí que las incorpora.

El almacenamiento se soluciona completamente en el servidor. El usuario no tiene por qué guardar nada en su disco duro, todo quedará almacenado en su carpeta de las máquinas de Google. Respecto a esto, habrá que ver si los usuarios nos podemos acostumbrar a que nuestros archivos se encuentren guardados en Internet, lo que, para un mortal, equivale a decir "no tengo ni idea de dónde están mis ficheros". Por ello, es importante destacar que importa y exporta archivos XLS directamente y, por lo que he podido comprobar, no lo hace nada mal, incluso con fórmulas y formatos relativamente complejos.

Otro detalle que muestra el nivel del producto es su implementación de la idea de trabajo colaborativo, aspecto éste donde destaca sobre sus competidores tradicionales, al menos hasta el próximo movimiento de ficha de Microsoft. Lejos de montar una infraestructura de checkin/checkout o control de versiones, han optado por la comunicación asíncrona. En otras palabras, es perfectamente posible que varias personas se encuentren a un mismo tiempo tocando la misma hoja de cálculo, a la vez que pueden estar comentando la jugada en un pequeño chat integrado en el mismo entorno. De hecho, si una de ellas modifica el contenido de una celda, el resto de participantes verán, en pocos segundos, este cambio reflejado en la hoja sobre la que están trabajando.

Esto, que puede parecer relativamente sencillo en aplicaciones de escritorio, se complica bastante en un entorno desconectado como es la web. Es curioso, mientras se está usando mantiene una conexión activa con un servidor de Google, entiendo que será el canal de recepción de datos y notificaciones:

C:\>netstat find "google"
TCP JMA:2678 05178618550233449.spreadsheets.google.com:http ESTABLISHED


Para los ases del botón derecho del ratón, y más concretamente de la opción "Ver código fuente", sin duda es una decepción. Una página web simple, de unos 3K, que no hace más que referenciar una librería javascript almacenada en un archivo externo de unos 170k, que es en realidad la que hace la magia. Las fuentes están ahí, aunque a la vista de su contenido, deduzco que han sido 'ofuscadas' para dificultar su comprensión, y que gran parte de los procesos se llevan a cabo en servidor, que devuelve el HTML de la porción a actualizar en cada momento.

En fin, en mi opinión, una auténtica maravilla, y una nueva prueba de que Google apuesta por una nueva forma de trabajar, totalmente on-line y basada en Web, como ya lleva demostrando desde hace bastante tiempo.

Y por cierto, dado que uno de los fuertes de Google es el análisis de contenidos para la presentación de publicidad altamente dirigida, ¿aplicarán esta idea a SpreadSheets? Por ejemplo, ¿nos aconsejará entidades bancarias si estamos introduciendo en la hoja de cálculo un plan de tesorería en el que aparecen números rojos? Si estamos consultando un presupuesto de hardware recibido en formato de hoja de cálculo, ¿será capaz de recomendarnos productos similares, o incluso más económicos, que los que estén reflejados en él? La verdad es que las posibilidades son infinitas, tantas como utilidades damos a las hojas de cálculo.
viernes, 2 de junio de 2006
Desde hace años tengo asumido que un gran porcentaje de mis visitas a casas ajenas terminan en una revisión del equipo informático local. Pero no, no soy de esos que rehúyen este tipo de compromisos sociales; todo lo contrario, aunque a veces resultan algo insulsos ("ven a ver mi ordenador nuevo", "instálame la impresora", "no tengo espacio en el disco duro", "al escribir no me sale la eñe"...), otras me lo paso estupendamente, encontrándome con todo tipo de escenarios y retos. Son especialmente interesantes las relacionadas con virus, troyanos y especímenes varios de la fauna digital.

Hace poco, en casa de un familiar, convocado al grito de "ven a ver el ordenador que le pasa algo raro", me encontré con un panorama genial. Se trataba de un troyano (una pena, no recuerdo el nombre) descargado de algún sitio web de oscuras intenciones que se le había colado hasta el mismísimo tuétano.

Los síntomas visibles, básicamente, eran el secuestro absoluto del navegador (Internet Explorer): las página de inicio y búsqueda apuntando hacia un extraño sitio web, lanzamiento de ventanas popup publicitarias cada pocos minutos, y una serie de cuadros emergentes bastante llamativos alertando sobre problemas de seguridad en el sistema. Qué irónico.

"Estos malditos troyanos han secuestrado a Helena.
¡Vayamos a la guerra!"

Visto el panorama, puse a funcionar la artillería que muy prudentemente tenía instalada la máquina: Ad-Aware, Microsoft Antispyware (beta por entonces), Norton Antivirus, y Spybot.
Nada, como si le hubiera leído algo de Homero, ni puñetera cuenta. "¡Enhorabuena, tienes un último modelo", le dije a mi pariente.

"Los griegos reunieron cien mil hombres,
que en mil barcos marcharon hacia Troya"

Era el momento de ponerse el casco, agarrar el escudo y lanzarse al campo de batalla cual griego micénico furibundo, contra todo troyano viviente. Aunque no hay que precipitarse: lo primero, observar al enemigo.

"La ciudad de Troya estuvo sitiada cerca de diez años"

Lo que me llamó la atención en primer lugar era que estaba bastante bien hecho, lo que que me hizo reflexionar sobre el desperdicio de habilidades de determinados individuos. Deberían dedicar su tiempo y conocimientos a creaciones más útiles y menos nocivas.

El bichillo, como es habitual, se escondía en el registro de aplicaciones de arranque, es decir, se cargaba con el sistema operativo y consistía en tres ejecutables, con nombres similares a los procesos propios de Windows (como svchost.exe, winlogon.exe, spoolsv.exe...) a los que cambiaba la denominación levemente (scvhost.exe, winlogon.dll, spoolsvc.exe...) para que pasaran desapercibidos.

Estos tres ejecutables se encontraban en el disco duro, en el directorio Windows\System32, lo cual dificultaba aún más su localización, pero lo peor de todo es que no se podían eliminar: al estar cargados en memoria, los archivos siempre se encontraban en uso. Además, funcionaban de la siguiente forma:
  • se protegían entre sí: si alguno de ellos dejaba de funcionar (por ejemplo, matando el proceso), uno de los otros dos volvía a lanzarlo. Supongo que cada proceso vigilaba a los otros dos, formando así una cadena difícil de romper.
  • protegían las entradas el registro del sistema mediante las cuales se lanzaban al iniciar Windows. Era curioso: tal y como las cambiaba en el registro, ellos volvían a dejarlas como estaban en pocos segundos.
  • protegían la página de inicio del navegador, así como la de búsqueda. Al modificarlas ocurría como en el caso anterior, raudos acudían a restituir los valores oportunos.
  • protegían la desinstalación de complementos del navegador. La criatura también se instalaba aquí, tomando el control en el momento de abrir el Internet Explorer.

"Troya tenía unos muros inexpugnables"

Durante la primera fase, realicé varios intentos de anulación básicos, que más que nada fueron útiles para poder conocer mejor a mi contendiente. De hecho, todas las características que he comentado en la lista anterior las fui descubriendo conforme intentaba anular sus funcionalidades. Digamos que durante esta fase, siempre ganó él.

"Durante el tiempo del asedio, los bandos rivales
se hostigaban continua y salvajemente"

Estaba claro que había que recurrir a herramientas más sofisticadas. Dado que que era imposible utilizar software de eliminación de engendros de este tipo puesto que era demasiado reciente y aún no existían soluciones (vacunas) específicas, opté por descargar dos magníficas herramientas de Sysinternals: Process Explorer y Autoruns. La primera de ellas permite visualizar los procesos activos en la máquina con un nivel de detalle muy superior al provisto por el Administrador de Tareas de Windows. La segunda, permite acceder de forma muy sencilla a las zonas del registro del sistema donde se definen las aplicaciones que cargan de forma automática al iniciar el sistema operativo.

Después llegué a la obvia conclusión de que la clave estaba en anular los tres procesos centrales. Si conseguía pararlos, podría quitarlos tranquilamente del registro e incluso eliminar los archivos del disco duro. Pero claro, debía parar los procesos, tarea difícil por la protección a tres bandas que tenían implementada.

Dado que el programador del invento detectaba cuándo determinado módulo dejaba de estar en memoria para volver a lanzarlo, pensé que sería una buena idea probar a suspenderlos, es decir, paralizar su ejecución. Efectivamente, era el camino hacia la solución: al suspender el proceso, éste seguía estando en memoria, y por tanto los otros dos no detectaban nada anormal. Así, una vez estaban los dos primeros congelados, el tercer módulo pudo ser matado sin oponer resistencia alguna. Y después, a matar los otros dos. Ya tenía la memoria limpia.

"Ulises tuvo una gran idea. Construir un caballo de madera,
en cuyo interior se escondían varias decenas de soldados griegos"

A partir de ahí, todo fue mucho más sencillo. Con ayuda del software Autoruns limpié el registro de entradas en las secciones oportunas, haciendo que no se intentara ejecutar nada al arrancar, eliminé el complemento cargado en Internet Explorer y, por último, hice desaparecer para siempre los archivos del disco duro.

"Una vez llegó la noche, los soldados salieron del caballo y
abrieron las puertas a sus tropas, que invadieron y saquearon la ciudad"

martes, 30 de mayo de 2006
A los que nos atrae la idea de probar nuevos sistemas operativos, plataformas o entornos de desarrollo, a veces nos supone un gran impedimento el no disponer de una máquina de pruebas que poder destrozar instalando-desinstalando-reinstalando aplicaciones, módulos, librerías, parches y todo tipo de artilugios software, que normalmente tienden a llenar los equipos de basura digital.

Hace tiempo encontré algunos productos basados en web como gestores de contenidos (CMS) y similares que se podían probar on-line, corriendo en servidores de los propios desarrolladores. La idea me pareció tan fantástica como osada: "si quieres probar mi producto, toma, ahí tienes las claves de superadministrador, entra y juega con él". Efectivamente, se podía entrar, crear usuarios, eliminarlos, modificar los contenidos y hacer todo tipo de operaciones (¿perrerías?), aunque cada media hora el sistema volvía a su estado inicial, eliminando todas las barbaridades introducidas por gente que, como el menda, no tenía otra cosa mejor que hacer.

De esta forma es posible probar un sistema completo sin necesidad de descargar ni instalar nada. Podemos olvidarnos de instalar un entorno LAMP (Linux+Apache+MySQL+PHP), algo bastante complejo para neófitos, para probar tal o cual plataforma de creación de Portales, Blogs (como WordPress, del que ya hablé hace un tiempo), u otros. Toda una idea feliz.

A modo de ejemplo, si os interesa ver el efecto sobre una plataforma eLearning, existe una demo on-line de Moodle, un famoso LMS (Learning Management System o Sistema de Gestión de Aprendizaje) Open source.

Pero, ¿y qué ocurre cuando lo que quiero probar no es una plataforma Web? ¿Y si se trata de un complejo y pesado entorno de desarrollo, o un gestor de bases de datos?

Eso mismo han debido preguntarse los tecnólogos de Microsoft, que desde hace ya algunos meses han puesto a disposición del público sus Laboratorios Virtuales. Un laboratorio virtual es un ordenador que es posible controlar de forma remota de la misma forma en que lo haríamos si estuviésemos sentados encima. Y como no podía ser de otra forma, este ordenador viene con todo el software que podamos necesitar para probar o aprender a manejar los productos que pretendemos. La captura de pantalla que adjunto muestra el armamento que trae de serie el Windows 2003 Server virtual que he estado probando un rato: Biztalk Server 2006, Visual Studio 2005, SQL Server 2005, .Net 2.0... vamos, una bonita colección.


Microsoft ofrece este servicio en dos modalidades. A una la llaman "express", cuyas sesiones de control de la máquina remota son de 30 minutos y simplemente es necesario suministrar el correo electrónico y algún dato básico sobre nuestro trabajo. La otra modalidad, con accesos de 90 minutos, sí requiere introducir más información personal, por lo que de momento voy a obviarla convenientemente. ;-)

Existen distintos laboratorios, en función del producto o tecnología que queremos probar: Visual Studio Team system, SQL Server 2005, Biztalk Server y ASP.NET 2.0. Al iniciar cualquiera de ellos, se creará el entorno software apropiado, y se nos facilitará un manual que nos servirá de guía de aprendizaje para que lo tengamos más fácil al principio.

En resumen, esta tecnología permite, en menos de un minuto, disponer de un sistema con software que tardaríamos varias horas en instalar en nuestros equipos, suponiendo, además, que pudiésemos conseguir estas aplicaciones.

Por poner alguna pega, el entorno, manuales, e incluso el software de la máquina remota está en inglés; pero no pasa nada, eso seguro que cambia en un futuro próximo. También puede resultar algo lento a veces, aunque la verdad es que, en general, funciona bastante bien.
lunes, 22 de mayo de 2006
Según la Wikipedia, el término Phishing viene del inglés Fish (pescar), debido a que precisamente se trata de las técnicas que usan los pobladores del lado oscuro de la red para pescar datos personales y confidenciales de incautos navegantes utilizando señuelos y trampas, a veces sofisticadas, a veces bastante inocentes.

Este es el mensaje que he recibido hoy de la dirección (falsa, por supuesto) support@cajamadrid.es, no os lo perdáis porque no tiene desperdicio:
Apreciado Cliente de Banca en Linea,

Caja Madrid siempre trata de encontrar sus expectativas mas altas. Por eso usamos la ultima tecnologia en seguridad para nuestros clientes.

Por lo tanto nuestro departamento de antifraude ha desarrollado un nuevo sistema de seguridad que elimine cualquier posibilidad del acceso de la tercera persona a sus datos, cuentas ni fondos.

Este sistema esta construido en la utilizacion de una pregunta secreta y respuesta.

Su respuesta secreta seria usada para confirmar su identidad cuando haga una operacion de pagos.

Es obligatorio para todos los clientes de Caja Madrid Banca en Linea usar este sistema de seguridad.

Nosotros consejo para usted es que introduzca su pregunta secreta y su respuesta de su cuenta cuanto antes.

Si el registro no es realizado dentro de 14 dias su cuenta sera suspendida temporalmente hasta que su registro sea completado.

Esto solo le va a costar unos minutos de su tiempo y va a tener una seguridad mucho mas elevadar.

Para comenzar el registro por favor pinche aqui : http://oi.bancamadrid.com/

Atentamente,
Luis Perez Monreal.
Departamento de seguridad y
asistencia al cliente.
Caja Madrid.

Bueno, si partimos de que Luis Perez Monreal (nombre inventado, con toda seguridad) no maneja muy bien el castellano, podremos entender cómo un señor designado por una prestigiosa institución financiera para informarnos sobre nuevas medidas de seguridad es capaz de cometer tal cantidad de atropellos a esta lengua en tan poco espacio. En cualquier caso, se trata de un experto en seguridad, no de García Márquez. ;-)

¿Y qué me dicen de basar el acceso a los datos, cuentas y fondos personales en una pregunta personal del tipo "Nombre de su primer colegio"? ¿Eso es lo que da de sí el departamento antifraude? :-D Es simplemente ridículo.

Desde luego esto debería ser suficiente para no creérselo. Si, además, sumamos la gran cantidad de apariciones en los medios y la propia difusión que hacen desde estas entidades de que no deben prestar atención a este tipo de mensajes, parece asombroso que todavía haya usuarios que piquen el anzuelo.

Pero no podía resistirme: cual cándido pececillo, he picado el enlace del mensaje y me he encontrado con una página impecablemente copiada de la original de Caja Madrid. Sólo he echado en falta el candado en el pie del navegador indicando que se trata de una página web segura. Por lo demás, tanto el interfaz visual como los mecanismos de interacción son idénticos (de hecho, copiados a nivel de código HTML) del original.

Una vez allí, el usuario es guiado por un asistente en el que se solicitan distintos datos de acceso: DNI, número de contrato, claves de acceso, y algunos datos más, aunque aparentemente inofensivos. Al finalizar, nos obsequian con un texto de agradecimiento (sincero, eso sí) y nos redireccionan a la página, esta vez real, de la Caja. Buen trabajo, sí señor.

Uno, que es curioso por naturaleza, ha ido a consultar el whois en un registrador de dominios, a ver qué se conoce de los propietarios de bancamadrid.com, al que hace referencia el mensaje, obteniendo:

domain: bancamadrid.com
owner: Iain Daws
organization: MapInfo Ltd
email: xprojectp6@yahoo.com
address: Minton Place
city: Windsor
state: --
postal-code: SL4 1EG
country: GB
phone: 01753848240
created: 2006-05-21 19:24:10
modified: 2006-05-21 21:35:04
expires: 2007-05-21 15:24:10


Obviamente, los datos de registro también son falsos... La empresa MapInfo existe, tiene una sede en Windsor, incluso Iain Daws es uno de sus directivos. Ahora bien, dudo mucho que se dedique a hacer estas cosas.

Destaca, además, la fecha de creación del dominio, el 21 de mayo, ¡ayer! Se ve que el organizador de esta fiesta no tenía otra cosa mejor que hacer un domingo por la tarde que registrar un dominio con un nombre comercial atractivo, bastante similar al de la entidad financiera, y ponerse a enviar correos a diestro y siniestro.

Como último dato, buscando la dirección IP en la que está montado el servicio web (69.248.133.121) en varios localizadores geográficos gratuitos, resulta que está en Estados Unidos, más concretamente en New Jersey o Virginia, según la fuente que consultemos. Como para ir a buscarlos, vaya.

En fin, valga todo esto para, una vez más, recordar que nunca debe prestársele atención a un correo procedente de una entidad bancaria que le solicite introducción o envío de datos personales o claves, por mucho que parezca haber sido remitido desde las mismas.

sábado, 20 de mayo de 2006
En mi habitual ronda por la web de Microsoft para desarrolladores, MSDN, he encontrado en portada una serie de artículos sobre lo que se anda cociendo para la próxima versión de Visual Studio, nombre de batalla "Orcas"... ¡y eso que todavía estamos intentando digerir el VS 2005!

Una de las novedades más llamativas, o al menos ellos deben entenderlo así, pues aparece en portada, es la incorporación de LINQ (Language Integrated Query) al .Net Framework, que permitirá la extensión de los lenguajes disponibles para la plataforma con nuevas construcciones que permitan realizar consultas y actualizaciones sobre conjuntos de datos de una forma estándar y, como no podía ser menos, orientada a objeto.

El objetivo de este nuevo invento es facilitar al desarrollador, utilizando un lenguaje común (bastante parecido a SQL, por cierto), la realización de consultas sobre cualquier tipo de almacén. Hasta aquí, no hay nada nuevo. La novedad reside, en primer lugar, en que el almacén puede ser un vector, una colección, XML o una base de datos; además, el hecho de poder indicar de forma directa las instrucciones de consulta facilita enormente la programación, pues las comprobaciones sintácticas se harán en tiempo de edición y compilación, bastante mejor que con SQL hospedado, donde normalmente los errores se producen en ejecución. Interesante, ¿no?

Pero veámoslo con un ejemplo, en C# (aunque también podría ser en VB), tomado de la misma web. Supongamos que tenemos definido un array de strings de la siguiente manera:

string[] names = { "Burke", "Connor", "Frank",
"Everett","Albert", "George",
"Harris", "David" };

Podemos hacer una consulta sobre este almacén de esta forma tan sencilla:

IEnumerable<string> expr =
from s in names
where s.Length == 5
orderby s
select s.ToUpper();


Se entiende a primera vista: al ejecutar esta sentencia, expr contendrá una enumeración de strings con los nombres de cinco caracteres, ordenados alfabéticamente, y pasados a mayúsculas del almacén names. Antes de LINQ, o sea, en este momento, sólo podríamos hacerlo iterando sobre el array original, enviando a una nueva colección los elementos que cumplieran el criterio, y ordenar los resultados. Un tostón, vaya.

Aparte de los aspectos sintácticos, bastante diferentes a lo conocido hasta el momento, esta sentencia incluye los siguientes puntos:

  • "from s in names", estamos creando una variable local a la consulta, s, que representará a cada elemento en el array names. Bueno, esto es bastante similar a lo que estamos acostumbrados a utilizar en bucles foreach.
  • "where s.length==5", ¡podemos utilizar cualquier tipo de expresión booleana como criterio de filtro! Fijaos que en este caso estamos usando la propiedad length de la clase string, pero podría ser cualquier cosa.
  • "orderby s", podemos ordenarlas como creamos conveniente. Seguro, aunque no he podido comprobarlo, que la única limitación es que la expresión elegida implemente IComparable, para que el sistema pueda comparar valores.
  • "select s.ToUpper()", indica lo que queremos obtener en la enumeración final.
  • Bueno, aunque no aparezcan en el ejemplo anterior, es interesante saber que se pueden utilizar muchas más funcionalidades, ordenaciones inversas, agrupar los resultados, utilizar funciones de agregado, etc.

Ah, por cierto, no lo he comentado, pero se usa un generic para indicar el tipo contenido en la enumeración... de ahí el IEnumerable<string> del principio. Esto ha sido una de las grandes (y utilísimas) novedades del Framework 2.0, todavía reciente. Otro día hablaré de ellos, si me acuerdo.

Al comenzar este texto, hablaba de almacenes como una forma genérica de denominar a los contenedores de información sobre los que se pueden realizar queries, sin embargo el ejemplo sólo muestra cómo hacerlo sobre un array. ¿Y qué ocurre con los almacenes tradicionales, XML y bases de datos? Para ellos, se han creado XLinq y DLinq, implementaciones de LINQ destinadas a realizar consultas sobre estos dos tipos de fuente de datos, y siempre integrado en el lenguaje (nada de SQL o DOM), y de una forma muy parecida a lo visto con anterioridad.

LINQ está construido utilizando novedades que estarán presentes en C# 3.0 y VB.Net 9.0, como las expresiones lambda, árboles de expresiones, métodos de extensión, inicializaciones compuestas... todas ellas de entidad suficiente como para dedicarles un monográfico.

Desde luego, si hay algo que no se puede negar de estos muchachos de Microsoft es lo rápido que van. Y precisamente el problema es que, a veces, van demasiado rápido.

martes, 16 de mayo de 2006
De vez en cuando surge algo que hace cambiar tu vida, tu forma de trabajar y de ver las cosas.

Casi me cuestra trabajo recordar cómo se trabajaba con MS-DOS, con una matriz de 80x25 caracteres chillones sobre fondo negro, interactuando sólo a base de pulsar teclas y (secretas) combinaciones de éstas. Existe un antes y un después de la llegada de los entornos gráficos, y más concretamente, de Windows como impulsor de este cambio.

También recuerdo la llegada de la revolución internet. Los que estábamos enganchados a las comunicaciones a través de las BBS y Fidonet (¡qué tiempos!) mirábamos recelosos esa nueva tecnología que prometía acceso instantáneo a casi ilimitada información, independientemente de la ubicación de ésta, servicios interactivos (chats), correo electrónico también casi instantáneo... Se puede imaginar la revolución que esto significaba en un mundo donde, a modo informativo, un mensaje personal enviado a través de Fidonet (netmails) podía tardar días, incluso semanas, en llegar a su destino; y por supuesto, nada de webs ni información hipertexto: los servicios se limitaban a foros y envío o recepción de archivos a servidores.

¡Y para qué hablar de la banda ancha! Es increíble cómo el mismo cable que conectábamos al flamante módem de 2400bps es capaz de mover ahora casi mil veces más información en el mismo tiempo, con un coste bastante razonable. ¡Esto sí que ha sido una revolución!

Y ahora que lo pienso, estos tres temas que he comentado se han producido cada cinco años, aproximadamente. Veamos... si partimos de que el paso de MS-DOS a Windows se produjo en la primera mitad de los noventa, la popularización de Internet en la segunda, y la de la banda ancha durante los años del nuevo siglo, podemos conjeturar que:

"Cada cinco años se produce la llegada de una tecnología, producto o filosofía de trabajo que revoluciona nuestras vidas"

Vale, admito que es un poco arriesgado. Pero hagamos una apuesta: si antes de finalizar el 2009 no ha surgido nada revolucionario en los términos que estoy describiendo, tenéis mi bendición para venir aquí y reventarme el buzón de correo a base de comentarios insultantes.

Ahí queda eso.