La tendencia XaaS: Todo como Servicio

En el artículo anterior se definieron los conceptos de la Nube y Cloud Computing, y se repasó rápidamente la evolución de tecnologías que favorecieron el surgimiento de dicho paradigma. En el presente artículo se definirán los diferentes conceptos “*aaS” relacionados con el concepto de cloud computing (SaaS, PaaS, IaaS, etc.). SaaS digamos que ya es un término hasta cierto punto conocido, pero ¿y los demás? Eso es lo que se aclarará en este artículo.

Los servicios de computación en la Nube, así como muchas otras implementaciones basadas en SOA, caen sobre el enfoque de servicios compuestos (composite services), una característica que en inglés se describe como “composable”. Wikipedia define a un “highly composable system” como un sistema que “provee componentes recombinables que pueden ser seleccionados y ensamblados en varias combinaciones diferentes para satisfacer los requerimientos específicos del usuario. Los atributos esenciales que definen que un componente sea composable consisten en que sea: auto-contenido (modular), esto es, que pueda ser desplegado independientemente, puede cooperar con otros componentes, pero los componentes dependientes son reemplazables. Debe ser también stateless, es decir, que no debe manejar estado, lo que significa que trata cada petición como una transacción independiente, sin relación con alguna petición anterior.”

CloudComputingLayers

Este gráfico muestra las 5 capas lógicas de una plataforma de cloud computing identificadas en el artículo Toward a Unified Ontology of Cloud Computing, de Lamia Youseff, Maria Butrico y Dilma Da Silva, un muy buen artículo que aporta una definición de la separación en categorías de los componentes de los entornos de cloud computing. A continuación una breve descripción de las diferentes categorías de componentes recombinables generalmente aceptados que contribuyen a brindar servicios de computación en la Nube, y que se encuentran presentes en todos (o casi todos, al menos por el momento) los proveedores de cloud computing:

Software como Servicio:

El término Software as a Service (SaaS) es comúnmente utilizado para referirse a software en la Nube. Sin embargo, a pesar de que la mayoría de los sistemas de software como servicio son servicios en la Nube, no todos lo son.

Application as a Service es sinónimo de SaaS. Este modelo consiste en el despliegue vía Web de una aplicación de software comercial, de manera que esté disponible para los usuarios finales a través de la Internet a través de un navegador Web, con un modelo de precios basado en suscripción o en uso, a diferencia de una licencia vitalicia tradicional para una versión en particular. Además, como usuarios de SaaS, no nos interesa dónde está alojada la aplicación, sobre qué Sistema Operativo se ejecuta, o si fue desarrollada utilizando .NET, Java, PHP u otra tecnología. Lo mejor de todo: no se requiere ninguna instalación en el entorno cliente.

Los ejemplos de SaaS incluyen aplicaciones como Microsoft Office Live, Microsoft Exchange Online, Microsoft SharePoint Online, Microsoft Dynamics CRM Online, GMail y SalesForce.com. Si bien Microsoft fue de los primeros en mostrar su apoyo al paradigma que representa SaaS con servicios Web basados en SOAP, ha ido migrando gradualmente para promover su visión de S+S (Software plus Services).

Software más Servicios:

El modelo de Sofware plus Services (S+S) propuesto por Microsoft como alternativa a SaaS consiste en la combinación de las capacidades de ejecución local de software con las de software como servicio. De esta manera, el software como servicio pasa a ser un complemento de las aplicaciones on premise para proveer algún valor agregado (mejor experiencia, más características, contenido adicional, etc.).

Algunos de los beneficios más importantes de este modelo sobre el de SaaS consisten en:

· Las aplicaciones on premise ofrecen por lo general una mejor experiencia que las aplicaciones Web. Tecnológicamente hablando, Por lo general es más simple brindar una muy buena experiencia de usuario en una aplicación local que una experiencia regularmente buena en una aplicación Web, lo cual se debe al funcionamiento del protocolo HTTP subyacente en Web. Esto se puede conseguir con tecnologías como AJAX, pero personalmente lo considero un esfuerzo adicional.

· En el modelo S+S un usuario puede trabajar desconectado localmente y sincronizar luego su información con la de la Nube, lo cual es un factor importante para usuarios móviles como vendedores o trabajadores en campo.

· Si la privacidad de la información es un tema delicado para la organización, en el modelo de S+S el proveedor puede proveer a sus usuarios una opción de mover sus datos no privados a la Nube y mantener la información sensible de manera local sin que eso impacte en las capacidades de la solución de software.

· Para los fabricantes de soluciones de software, el modelo de S+S se torna bastante atractivo debido a que les brinda nuevos modelos de negocio le permiten monetizar sus soluciones con estrategias de precios basadas por ejemplo en transacciones, suscripciones, publicidad, sincronización, respaldo de información, etc.

· En el modelo S+S se puede aprovechar la potencia de procesamiento del equipo cliente, justificando la inversión en el mismo. De acuerdo con la Ley de Moore, con los constantes avances tecnológicos, cada vez se tienen mejores equipos y más baratos, me parece que habría que aprovecharlos.

Uno de los ejemplos más interesantes de S+S es el EC2 de Amazon Web Service que corre en Windows Server 2003 y SQL Server [Express] 2005 con almacenamiento de datos de EBS (Elastic Block Storage) y almacenamiento de S3 para AMIs (Amazon Machine Images) y respaldos de instantáneas de EBS.

Almacenamiento como Servicio:

Debido a que la abstracción de nuestro hardware en la Nube no es tan simple como reemplazar nuestros servidores con la virtualización ofrecida por el proveedor de cloud computing, sino que también es necesario reemplazar el sistema de almacenamiento físico. Este es el motivo por el cual el almacenamiento en la Nube es de vital importancia en una implementación de cloud computing. Este modelo nos permite cargar nuestros datos (documentos, imágenes, etc.) hacia la Nube sin tener que preocuparnos de cómo se almacena o de las estrategias de backup o de alta disponibilidad utilizadas por nuestro proveedor de servicios para garantizar el acceso a nuestra información cuando la necesitemos.

El ejemplo más simple de almacenamiento como servicio es aquel de tipo Files as a Service (o FaaS por sus siglas en inglés), permite a los usuarios almacenar archivos de diferentes tipos de datos en un sistema de archivos jerárquico altamente escalable y recuperarlos a través de la Internet utilizando los diferentes tipos MIME (Multipurpose Internet Mail Extension). FaaS fue uno de los primeros servicios disponibles basados en la Nube. Diversas compañías en Internet(como SmugMug, DropBox, Ozmo, y HolaServers) están aprovechando las capacidades de FaaS provistas por el servicio S3 (Simple Storage Service) de Amazon Web Services (AWS) para proveer sobre esa plataforma sus propios servicios para almacenar imágenes y otros archivos, y le brindan acceso a los usuarios de manera gratuita o a cambio de un pequeño monto. Windows Live SkyDrive de Microsft es un desde hace ya unos años un proveedor de FaaS que le brinda actualmente a los usuarios hasta 25GB de almacenamiento libre de cargos.

El término Data Storage as a Service o Database as a Service implica el almacenamiento estructurado de datos con al menos algunas de las características de un sistema de gestión de bases de datos relacionales (RDBMS), como capacidades de consulta, índices de llave primaria y foránea, y asociaciones de entidades a través de JOINs. Los servicios en la Nube comerciales, como Amazon Web Services (AWS), Google App Engine (GAE) y Windows Azure, ofrecen tablas EAV (Entity-Attribute-Value) indexadas y lenguajes de consulta que tienen alguna relación con SQL. Microsoft ofrece con SQL Azure Database (SADB) “servicios de bases de datos altamente escalables, expuestas en Internet y distribuidas en la Nube para el almacenamiento y procesamiento de consultas relacionales.” (ver referencia).

SADB, Amazon SimpleDB, y el DataStore de GAE ofrecen características avanzadas que los califican como Databases-as-a-Service (DBaaS). Las características de estos sistemas de bases de datos en la Nube, que por el momento son limitadas, van a ir incrementándose con el tiempo, conforme los proveedores de dichos servicios van actualizando su plataforma.

Plataforma como Servicio:

Los componentes de Platform as a Service (PaaS) son todos aquellos orientados al desarrollo y despliegue de aplicaciones sobre la plataforma de la Nube. Estos componentes proveen los medios necesarios para soportar el ciclo de vida de construcción y entrega de servicios y aplicaciones Web sobre la nube. Usualmente comprende por lo menos estos tres elementos distintos:

❑ Componentes de tipo Herramientas como Servicio o Tools as a Service (TaaS), que provee herramientas de desarrollo y lenguages basados en la Web, como Microsoft Visual Studio (para Visual C#, Visual Basic, IronPython y IronRuby) o la alternativa de código abierto Eclipse (principalmente para Java). Las Herramientas de Windows Azure para Visual Studio 2008 (y las recientemente lanzadas para Visual Studio 2010) incluyen plantillas para crear roles Web y roles de trabajo, y servicios de flujos de trabajo secuenciales en la Nube, que pueden ejecutarse bajo una instancia local (desarrollo) o en la Nube (staging/producción) de Windows Azure (conocida como la Fábrica). Google App Engine ofrece soporte de una variante de Python y Java, así como los frameworks webapp y Django.

❑ Una plataforma virtualizada de ejecución de aplicaciones que permita ejecutar aplicaciones en la Nube, típicamente sobre una IaaS y entregada como SaaS. Amazon EC2 tiene AMIs pre-configuradas para distribuciones de 32 bits y de 64 bits de Linux, Windows Server 2003 R2 con SQL Server 2005, y bases de datos Oracle, así como OpenSolaris de 64 bits. Windows Azure corre sobre Windows Server 2008 con una version personalizada del hipervidor Hyper-V de Microsoft. Google App Engine ofrece entornos de ejecución de Python y de Java por separado.

❑ Componentes de tipo FaaS para persistir el estado en tiempo de ejecución de la aplicación. En el EBS (Elastic Block Store) de Amazon Web Services, se utilizaría SimpleDB o S3, en el entorno de GAE se utilizaría BigTable, o las tablas y blobs del Servicio de Almacenamiento de Windows Azure.

Infraestructura como Servicio:

En el artículo anterior se mencionó que a través de la Nube su podía consumir servicios, que podían consistir en software o hardware. El concepto de infraestructura como servicio aterriza los principios de TI orientada a servicios.

Los proveedores de Infrastructure as a Service (IaaS) brindan los recursos tradicionales de un centro de datos, como potencia de procesamiento, memoria y almacenamiento de computación, solo que en el caso del cloud computing, estos recursos se encuentran en un ambiente virtualizado sobre una red (típicamente, pero no obligatoriamente, la Internet), y esto lo hace altamente escalable. A las implementaciones de IaaS o PaaS proporcionadas sobre una Intranet se les conoce como nubes privadas.

El modelo de negocio que los proveedores de IaaS utilizan generalmente consiste en un modelo de precios basado en uso o en suscripciones, modelo conocido para el caso particular de IaaS como de utility computing o de computación de utilidad.

Comunicaciones como Servicio:

Communications as a Service es un modelo de outsourcing orientado a las comunicaciones empresariales. Estas comunicaciones pueden incluir los servicios de VoIP, mensajería instantánea, colaboración y aplicaciones de videoconferencia utilizando dispositivos fijos y móviles.

El proveedor de CaaS es responsable por toda la administración y mantenimiento del hardware y el software de comunicaciones. Este provee las capacidades de comunicaciones a través de un entorno orientado a servicios, configurable, programable, predecible y confiable, y que cuenta con seguridad de red, provisionamiento dinámico de overlays de red virtuales para el aislamiento de tráfico o para asignar ancho de banda dedicado, encriptación de comunicaciones, y monitoreo de la red. Todo esto es críticio, pues el proveedor de servicios de CaaS ofrece una calidad de servicio garantizada en base los Acuerdos de Nivel de Servicio (o SLAs por sus siglas en inglés).

Este modelo le permite a las empresas desplegar selectivamente los medios y dispositivos de comunicaciones en un modelo “pay as you go”, según sea necesario, eliminando la gran inversión de capital y los gastos generales en curso para un sistema cuya capacidad a menudo pueden ascender o descender por debajo de la demanda actual. El modelo de CaaS ofrece flexibilidad y capacidad de expansión que las pequeñas y medianas empresas de otro modo no podrían costear, que permite la adición de dispositivos, modos o la cobertura de la demanda. La capacidad de red y conjunto de características se puede cambiar de un día para otro si es necesario para mantener nivelada la funcionalidad con el ritmo de la demanda y no desperdiciar los recursos cuando no se requieran.

Monitoreo como Servicio:

Los componentes de (Monitoring as a Service) MaaS se encargan de monitorear el funcionamiento de la plataforma en la Nube y de notificar al usuario de computación en la Nube de eventos como fallas de disponibilidad de la red, errores, o disminución en las velocidades de la Nube. Por ejemplo, Cloud Status es una simple aplicación para el iPhone que monitorea el estado de Amazon Web Services, Google App Engine y Twitter y reporta si el servicio es normal, tiene problemas, o si está caído. Una implementación de MaaS puede contener componentes de auditoria para la evaluación de vulnerabilidad de la red o para verificar el cumplimiento de los contratos de nivel de servicio (SLAs) y la precisión de los cargos de uso mensuales.

Algunos proveedores de servicios de MaaS, como RightScale, también proveen de automatización del despliegue de instancias para incrementar el número de instancias AMI en ejecución durante picos de demanda del servicio y para reducir el número de las mismas conforme la demanda disminuye.

Todo como Servicio:

EaaS, XaaS, o *aaS son las diferentes siglas asociadas al modelo de Everything as a Service, subconjunto del modelo de cloud computing. Wikipedia describe al modelo propuesto por EaaS como “el concepto de ser capaz de invocar componentes reutilizables y de grano fino de software a través de una red.’’ Lo que falta en esta definición es la interacción orquestada entre los diversos componentes para poder resolver un problema de negocio, que es frecuentemente llamada Integration as a Service.

Del mismo modo que Microsoft es el principal propulsor de S+S, HP es el mayor promotor del modelo de EaaS. Este modelo tiene como propósito principal superar los retos técnicos que surgen al migrar las operaciones de un negocio completamente a Internet, o lo que es lo mismo, a la Nube.

Espero que hayan quedado un poco más claros los diversos conceptos *aaS aquí tratados. El siguiente artículo se tratará acerca de los diversos factores que favorecen o dificultan la adopción del modelo de cloud computing. Hasta la próxima.

La Nube como Plataforma Computacional

En estos días mucho se escuchan los términos de “cloud computing” o computación en la nube, y se habla mucho de lo beneficioso que puede resultar este modelo para las empresas, pero ¿de qué se trata realmente toda esta nueva revolución? ¿Cuáles son los verdaderos beneficios de adoptar este modelo de computación? Y como nada puede ser 100% positivo (por lo menos no para todos los escenarios posibles), ¿cuáles son los riesgos que conlleva adoptar la computación en la nube? El presente artículo es el primero de una serie en la que trataré de responder estas y otras preguntas que suelen surgir al mencionar el concepto del cloud computing.

¿Y qué es realmente la computación en la Nube?

En primer lugar, podemos definir la computación en la nube como la evolución de una serie de tecnologías que han llevado a alterar la manera en la que las organizaciones de hoy (y de mañana) conceptualizan y construyen su infraestructura de TI. Esta evolución ha originado un nuevo paradigma en el cual se pueden ofrecer/consumir servicios de computación a través de Internet.

Respecto a la “Nube”, según la definición de Wikipedia, es simplemente una metáfora de la Internet, y la computación en la Nube es un paradigma que permite ofrecer servicios de computación a través de Internet. Personalmente, me parece un poco escasa dicha definición. Sin embargo, me parece excelente la definición que formula George Reese en su libro Cloud Application Architectures:

“La Nube no es simplemente una manera más elegante de describir a la Internet. Si bien la Internet es un fundamento clave para la Nube, la Nube es algo más que la Internet. La Nube es donde vas para usar la tecnología cuando la necesitas, por el tiempo que lo necesites, y ni un minuto más. No instalas nada localmente, y no pagas por la tecnología cuando no la estás utilizando.”

De esta manera, la Nube como tal pasa a ser un servicio que podemos consumir bajo nuestras propias necesidades. Dicho servicio puede consistir en hardware o en software, o en una combinación de ambos, y se encuentra conceptualmente en la Nube. Es bajo este contexto que surgen conceptos como SaaS, IaaS y PaaS, que revisaremos más adelante en un artículo posterior.

Otro factor que contribuye al concepto de la Nube por su esencia intangible es el hecho de que ni el usuario, ni los desarrolladores saben en dónde ni cómo se encuentra alojado su servicio (y ciertamente no necesitan saberlo). Quizás incluso ni el proveedor de los servicios puede determinar inmediatamente en dónde se encuentra una instancia de los servicios dentro de su centro de datos.

¿Y cómo llegamos a este modelo de la nube?

Ahora que ya sabemos un poco acerca de lo que representa la Nube como plataforma, me parece que sería adecuado centrarnos en cómo es que ha sido posible este fenómeno. Como mencioné unas líneas arriba, se ha tratado de una evolución progresiva en distintos ámbitos de las llamadas Tecnologías de la Información.

En cuanto a la plataforma de servicios de Internet desde un simple proveedor de acceso telefónico a Internet hasta la inminente realidad de una plataforma de aplicaciones de software de nivel empresarial.

EvolucionISPs

Al principio los proveedores de servicios de Internet se enfocaban únicamente en establecer la infraestructura de conectividad necesaria para que los individuos o empresas puedan acceder a la World Wide Web. Por su parte, las empresas estaban enfocadas en construir su propia infraestructura de redes.

Posteriormente, con el “Boom” de Internet, el enfoque de los proveedores de servicios de Internet se orientó a brindar el acceso a sus servidores Web (por entonces aún con recursos limitados)  para que los clientes puedan hospedar sus sitios Web y puedan tener presencia en Internet.

Más adelante tomó importancia el concepto de housing, en el que las empresas hospedan sus propios servidores en los grandes centros de datos de los proveedores de servicios de Internet. Bajo este modelo, una vez delegadas las tareas de TI y de comunicaciones en el proveedor especializado en la materia, las empresas se pueden enfocar en lo que es realmente importante para su negocio, e incluso pueden aprovechar sus propias instalaciones de red y su ancho de banda para otros usos exclusivamente internos.

Últimamente ha surgido una creciente oferta de suscripciones a servicios de software, de manera que los clientes no tienen la necesidad de preocuparse por los detalles de la infraestructura subyacente. Es aquí que son los fabricantes de software quienes han tomado la iniciativa y aprovechan la Internet no sólo como medio para ofrecer sus servicios a sus clientes sino como plataforma para esos servicios.

En el futuro próximo, conforme van madurando los diferentes aspectos (entre ellos destacan por su importancia la seguridad, la interoperabilidad y la conectividad) de las diferentes plataformas de “Cloud Computing”, la Nube se terminará de consolidar como esa gran plataforma de servicios en la que será totalmente transparente para las empresas consumir sus servicios como si se tratara de soluciones on-premise, con la ventaja obvia de utilizar los recursos a la medida de sus necesidades en todo momento. De esta manera se podrán contar con soluciones completas en las que resulte relativamente sencillo integrar la plataforma en la Nube con la plataforma on-premise y, eventualmente, dependiendo de las necesidades particulares de cada cliente, se podría migrar gran parte o incluso toda la infraestructura de la organización a la Nube.

Hasta aquí hemos dado un repaso rápido al proceso evolutivo de los servicios brindados por los ISPs (Proveedores de Servicios de Internet). Sin embargo, para llegar a la propuesta de computación en la Nube, no solamente ha tenido que ver la evolución de los servicios de Internet. Otro factor importante que también ha sido sujeto de esta evolución es el que representan los dispositivos con los cuales el usuario puede acceder a estos servicios, y a las aplicaciones brindadas a través de estos servicios. Las computadoras también han sido objeto de una evolución similar que nos han llevado a nuestra realidad actual. En esta evolución destacan las siguientes fases:

EvolucionClientes

Las PCs y Laptops tradicionales son las protagonistas indiscutibles de esta evolución, pues si bien aún se mantienen vigentes, son algunos de sus aspectos los que han conllevado a la evolución en los equipos cliente utilizados por las empresas. Un factor clave que ha dirigido esta evolución es el costo, tanto de los equipos como de las licencias de software de las computadoras.

Como alternativa a las PCs tradicionales surgieron inicialmente las Network Computers (NCs), la primera generación de clientes ligeros. Estos equipos contaban con componentes y software más baratos que los de las PCs pero carecían de unidades de almacenamiento, por lo cual requerían de un servidor de archivos para almacenar la información. Las NCs se diferenciaban de los terminales tontos antiguos en que éstos últimos utilizaban los recursos de procesamiento (memoria y procesador) del mainframe al cual se conectaban mientras que las NCs tenían los suyos propios, pero mucho más limitados que los de las PCs, por lo que solamente podían ejecutar un navegador Web y unas pocas aplicaciones descargadas. A esta oleada iniciada por las NCs de Oracle se unieron algunos otros fabricantes entre los que destacan IBM con su Network Station y Sun con su Java Station. Finalmente al surgir soluciones para utilizar las PCs tradicionales como NCs este tipo de dispositivos fueron quedando descontinuados.

Posteriormente, WebTV Networks desarrolló entre los años 1995 y 1996 un dispositivo que conectados a la línea telefónica accedía por discado directo a un servicio online propietario que le brindaba el acceso a correo electrónico y a Internet, y que se conectaba a las entradas de audio y video de una TV convencional. Microsoft vio una oportunidad en esta variación de cliente ligero para Internet y adquirió la compañía a fines de 1997. En 1999 entró en escena AmericaOnLine con su servicio AOL-TV para competir directamente con la oferta de Microsoft. En 2001 Microsoft relanzó WebTV, entonces bajo el nombre MSN TV. En 2002 AOL-TV cerró sus servicios. Más adelante, en 2004, Microsoft lanzó MSN TV2, esta vez basado en Windows CE. Actualmente Microsoft todavía brinda el servicio de WebTV y MSN TV, pero ya no comercializa los equipos.

Durante los últimos 2 años ha habido una explosión en la demanda de dispositivos móviles como Smartphones y Netbooks, y esta tendencia no hace más que acentuarse con el surgimiento de dispositivos cada vez más ligeros y con mejores prestaciones, y ¿cómo no mencionarlo? Los precios también van disminuyendo conforme mejora la tecnología. Las Netbooks son pequeñas laptops pensadas principalmente en la movilidad y en el acceso a Internet. Perfectas para consumir aplicaciones en la Nube, no les parece? Estas Netbooks tienen sus orígenes en las pequeñas y baratas (pero robustas) laptops del programa Una Laptop por Niño (ULPN u OLPC, por sus siglas en inglés) orientado a brindar a cualquier niño del mundo conocimiento y acceso a las tecnologías de la información como formas modernas de educación. El éxito del programa impulsó a diferentes fabricantes a desarrollar laptops con las características necesarias para poder brindar movilidad, una razonable capacidad de proceso y, sobre todo, el acceso a redes inalámbricas e Internet. Esta nueva generación de dispositivos está principalmente orientada al mercado de consumo, pero también podría ser aprovechada a un nivel empresarial conforme las prestaciones van mejorando.

Va quedando claro cómo los avances tecnológicos acontecidos en la última década han ido allanando el camino para el surgimiento de este nuevo paradigma de computación que representa el cloud computing, con una plataforma en Internet en la que se pueden montar diversos servicios y dispositivos cliente optimizados para consumir los servicios brindados por dicha plataforma. En el siguiente artículo revisaremos la tendencia de XaaS (Todo como Servicio) que ha surgido como parte del modelo de cloud computing. Hasta la próxima.

Utilidad de Descargas del MIX ’10

Hoy revisando algo del material del MIX 2010 encontré en el sitio Web del evento, específicamente en la sección de descarga de videos y slides de las sesiones, que se hacía referencia a una utilidad (cURL) para descargar bajo demanda el material y que, con ayuda de un par de simples archivos de procesos por lotes (sí, exactamente, los antiguos y casi olvidados .BAT), nos permitía descargar en un gran lote todo el material disponible del evento.

 Descargas MIX10
Las indicaciones de descarga con cURL en la web del MIX ’10.

Decidí probar dicha herramienta y ver qué cualidades tenía, así que descargué la última versión y siguiendo las indicaciones hice algunas pruebas de descarga del contenido del MIX 2010.

Descargas cURL
La última versión disponible de cURL es la 7.20.1.

Una vez que terminó de descargar el primer video probé cancelar la ejecución del proceso por lotes y volver a invocar a la rutina de descarga (lo hice un par de veces) para verificar si continuaba con la descarga del último archivo desde el punto en que se había quedado, o si empezaba de nuevo a descargarlo o si simplemente lo obviaba del proceso por lotes y continuaba con el  siguiente archivo.

cURL en acción
cURL en acción. Lamentablemente no continuó con las descargas parciales.

Eso último fue lo que sucedió. Los videos descargados parcialmente se pueden ver hasta el punto en que se cortó la descarga. Dado que en la ejecución del batch escogí la descarga de los videos en alta resolución, todos los videos son de más de 200 o 300 MB. Sin embargo, como se puede apreciar en la siguiente imagen, los archivos cuya descarga fue interrumpida se quedan con el peso correspondiente al momento en que se produjo la interrupción del proceso de descarga por lotes.

Carpeta MIX10
Las descargas de cURL que son interrumpidas no se reanudan al volver a ejecutar el proceso de descarga por lotes.

 

Ya hace algunos meses leí un artículo en el que se recomendaba el uso del Free Download Manager como administrador de descargas. En ese artículo el autor recomendaba este software debido a que soportaba, además de muchas de sus otras características en común con otros administradores de descargas, la descarga masiva de archivos copiando las URLs al portapapeles y luego importándolas al programa. Adicionalmente, me parece muy útil la característica de limitar el ancho de banda de descarga para cuando esté navegando mientras se lleva a cabo la descarga.

Importar del portapapeles FDM
Opción de importar lista de descargas desde el portapapeles en Free Dowload Manager.

Para el caso particular del material del MIX , la información de las descargas la tengo en texto plano en los archivos de procesos por lotes (URLs de descarga en MIX10Downloader.bat y título de las sesiones en MIX10Renamer.bat) así que no debería ser muy complicado obtener las URLs concretas. Pensé por un momento en hacer un programita para extraer la información de los archivos .bat y que mande las URLs al portapapeles. Sin embargo, no me pareció que esa fuera el tipo de experiencia más adecuado para este escenario tan simple, así que opté por hacer las manipulaciones de cadenas en un simple libro de Excel y al menos me parece que ha quedado decente.

El libro consta de 3 hojas de cálculo. La primera hoja presenta la información de las descargas y nos permite elegir el formato a descargar (WMV de alta calidad, MP4, WMV simple o PPTX) y en base a dicha elección nos brinda los enlaces de descarga correspondientes a las diferentes sesiones. Para descargar con el FDM solo resta seleccionar las celdas con las URLs, copiarlas e importar dicha información al FDM. También se muestra el título de cada sesión por si se desea descargar alguna en particular. Las otras hojas solamente realizan la manipulación de cadenas necesaria para alimentar a la primera hoja.

Excel descargas MIX10
La primera hoja de mi libro de Excel con la información de las descargas.

Esta no es una solución convencional pero al menos me parece una manera simple de abordar este escenario. Espero que este pequeño resulte de ayuda. Saludos.

Acerca del desarrollo web para móviles con .NET

Este artículo surge como una respuesta a un comentario en el artículo inicial de Cuestiones básicas de desarrollo para dispositivos móviles con .NET. La pregunta iba orientada a cómo se desarrollan aplicaciones Web para dispositivos móviles. Y es que,inicialmente me faltó aclarar que los artículos estaban enfocados en el desarrollo de aplicaciones cliente en el dispositivo móvil, no en aplicaciones de servidor Web para dispositivos.

Si revisamos la plataforma de desarrollo .NET, tenemos dos vertientes principales de aplicaciones claramente diferenciadas: aplicaciones Web y aplicaciones de cliente enriquecido. Esto se cumple no solo en el .NET Framework estándar, sino también en el .NET Compact Framework para los dispositivos móviles. Veamos el siguiente gráfico.

.NET Mobile Development Platform

En este diagrama podemos apreciar las 2 vertientes de aplicaciones para dispositivos móviles. Algunas de las ventajas por las que prefiero enfocarme en el desarrollo de aplicaciones cliente para dispositivos móviles son la capacidad de aprovechar de la mejor manera posible en el desarrollo las características del dispositivo y de las mejoras y características que nos brinda el .NET Compact Framework para este tipo de aplicaciones. Tal como lo muestra el gráfico, por el lado de las aplicaciones Web el cliente consiste básicamente en el navegador (browser) del dispositivo y no se puede aprovechar en este modelo de programación muchas de las características que puede tener el dispositivo.

Ahora revisemos un poco de historia. En los tiempos de Visual Studio .NET 2003 los diversos tipos de dispositivos disponibles manejaban maneras muy diferentes de renderizar el contenido HTML (tanto entre dispositivos como con browsers de PCs tradicionales), motivo por el cual Microsoft liberó el Microsoft Mobile Internet Toolkit (MMIT). La versión 1.0 del MMIT permitía generar código cliente para los browsers de los dispositivos en 4 diferentes lenguajes posibles: HTML 3.2, cHTML 1.0, WML 1.1 y WML 1.2.

Conforme pasó el tiempo el avance de la tecnología y la asimilación casi completa por parte de la industria de estándares Web como HTML 4.0, CSS, JavaScript y XHTML ha llevado a que hoy en día muchos de los navegadores incorporados en los dispositivos (por no decir todos) soportan (casi) las mismas características que un navegador de escritorio. Esto a nivel tecnológico. Pero volvemos ahora a revisar los retos del desarrollo para dispositivos: la resolución de pantalla limitada, la velocidad y costo de conexión, el consumo de batería que debemos contemplar, etc. Nuevamente nos encontramos con la necesidad de hacer versiones de nuestras aplicaciones Web (o, por lo menos, parde ellas) específicas para dispositivos móviles.

Ahora bien, en Visual Studio 2008 no tenemos disponibles plantillas para crear formularios web y aplicaciones web móviles, plantillas que sí estaban disponibles en Visual Studio 2005. Felizmente Ronald Armas publicó un artículo acerca de cómo habilitar estas plantillas en el entorno de nuestro Visual Studio 2008. Adicionalmente, en una discusión al respecto en el foro de ASP.NET (ver referencias adicionales) se mencionó entre las siguientes herramientas adicionales como complemento para desarrollar aplicaciones Web para dispositivos móviles:

Nuevamente, quedo a espera de sus comentarios, preguntas y/o sugerencias. Hasta la próxima. Nos leemos!


Referencias adicionales:

Cuestiones básicas de desarrollo para dispositivos móviles con .NET – Parte II

Continuamos con esta serie de artículos en la que vamos revisado algunas de las importantes decisiones iniciales a considerar al emprender un proyecto de desarrollo móvil. En el artículo anterior abordamos el tema de la elección de la plataforma sobre la que implementaremos nuestra aplicación. Recordemos que la plataforma en este caso viene señalada por la versión del Sistema Operativo del dispositivo, y la edición para el tipo de dispositivos a utilizar, dependiendo de si presentaban pantalla táctil y/o funcionalidad de teléfono.

En esta ocasión nos vamos a centrar en revisar el conjunto de herramientas que tenemos a nuestra disposición para desarrollar aplicaciones para las diferentes plataformas. Dado que, como ya se mencionó en el artículo anterior, la plataforma Windows CE (o Windows Embedded) está orientada al desarrollo de software para dispositivos personalizados, vamos a dejar de lado esta plataforma de ahora en adelante y vamos a enfocar los artículos al desarrollo para las diferentes ediciones de Windows Mobile. Cabe resaltar que solo voy a mencionar en este artículo las herramientas básicas que extienden nuestro IDE (Visual Studio) para soportar el desarrollo en estas plataformas, puesto que ya César Fong y José Miguel Torres ya han hecho una excelente recopilación de herramientas y recursos para desarrollo en Windows Mobile.

Cerrando casi el presente año 2009 tomaremos como punto de partida las 2 últimas versiones (versiones finales) de Visual Studio disponibles a la fecha, es decir, Visual Studio 2005 y Visual Studio 2008. Y es que si bien ya desde Visual Studio .NET 2003 teníamos plantillas para el desarrollo de aplicaciones para dispositivos móviles, no podemos pasar por alto el hecho de que las herramientas que revisaremos a continuación solamente son compatibles con las versiones 2005 y 2008 de Visual Studio. Adelantándonos un poco al siguiente artículo, también podemos mencionar que en Visual Studio .NET 2003 solamente podíamos desarrollar aplicaciones para dispositivos móviles utilizando la versión 1.0 del .NET Compact Framework (ya veremos en ese artículo las diferencias entre las diferentes versiones del .NET CF, por el momento continuemos).

Veamos las plataformas soportadas “out-of-the-box” por estos entornos de desarrollo:

  • Visual Studio 2005
    • Pocket PC 2003 SE
    • Smartphone 2003 SE
  • Visual Studio 2008
    • Pocket PC 2003
    • Windows Mobile 5.0 Pocket PC R2
    • Windows Mobile 5.0 Smartphone R2

Adicionalmente, Microsoft ha publicado un conjunto de herramientas adicionales (de libre disponibilidad) conforme las ha ido liberando las nuevas plataformas para extender el soporte de estos entornos de desarrollo. Y es aquí donde surge un conjunto de siglas que inicialmente resultan un poco confusas: SDK, DTK, DRK. Ampliemos un poco el artículo al respecto publicado en el blog de Windows Mobile (hoy conocido como Windows Phone Blog).

Los SDKs (Kits de Desarrollo de Software) contienen precisamente las herramientas, los emuladores, la documentación y ejemplos que amplían Visual Studio para soportar una versión específica de la plataforma de Windows Mobile. Así tenemos actualmente los siguientes SDKs disponibles:

Como se detalla en las descripciones de estas descargas, los SDKs para WM5 solamente son compatibles con Visual Studio 2005 puesto que 2008 ya incorpora una versión actualizada de estas herramientas. Por su parte, los SDKs de WM6 son compatibles con ambas versiones de Visual Studio.

Los DTKs (Kits de Herramientas del Desarrollador) son la forma en la cual Microsoft ha distribuido las herramientas para soportar el desarrollo para dispositivos con Windows Mobile 6.5. Estas herramientas per se no son suficientes, pues al ser 6.5 una mejora sobre la plataforma 6.0 existente, Microsoft brinda estas herramientas como adicionales a los SDKs de Windows Mobile 6.0 para, en conjunto, brindar el soporte a la nueva plataforma 6.5.

OK hasta este punto hemos visto el soporte a las versiones 2003, 5.0, 6.0 y 6.5 de Windows Mobile. ¿Y para la versión 6.1? Pues bien, esta versión (así como la 6.1.4) no presentan diferencias respecto a 6.0 desde el punto de vista del desarrollador (esto es, no hay APIs adicionales o nuevas herramientas que presenten un cambio en cuanto a la experiencia en el desarrollo). Los cambios principalmente están dados en diferentes form factors o resoluciones de pantalla soportadas y en características del software, por ejemplo, en el caso de 6.1.4, la incorporación del nuevo Internet Explorer Mobile 6. Entonces, si vamos a desarrollar para estas versiones de la plataforma, debemos utilizar los emuladores correspondientes. Lo mismo aplica si deseamos, por ejemplo, probar una aplicación que muestre su IU en el idioma del dispositivo (localización). Deberíamos probar nuestra aplicación utilizando los emuladores con la plataforma en los idiomas deseados.

Si revisan todas las descargas mencionadas hasta aquí, siempre se refieren a las ediciones Standard y Professional, pero en no hay descarga para la edición Classic. Si volvemos al cudro de las ediciones disponibles según las características del dispositivo, vamos a ver que las características de pantalla táctil determinarán la edición de SDK a utilizar. Por ejemplo, ya sea que deseemos desarrollar para las ediciones Professional o Classic, descargaremos las herramientas de Professional, y para la plataforma Standard descargaremos las herramientas de Standard.

Con pantalla táctil

Sin pantalla táctil

Con capacidades de teléfono

Pocket PC Phone Edition
Professional

Smartphone
Standard

Sin capacidades de teléfono

Pocket PC
Classic

[no existe]

  Herramientas Professional Herramientas Standard

El siguiente concepto es el de DRK (Kit de Recursos del Desarrollador). Se trata de un DVD con una compilación de contenido (los SDKs, PPTs y videos de webcasts, laboratorios, ejemplos y herramientas adicionales, etc…) para empezar a desarrollar en la versión correspondiente de la plataforma. Así se han distribuido versiones del DRK para Windows Mobile 5.0, 6.0 y 6.5. Este DVD se podía adquirir pagando los gastos de envío (gratis si estabas en USA) y, particularmente en el caso de 5.0, se puso de libre disponibilidad una descarga alternativa con la mayoría del contenido (a excepción de videos y el contenido más pesado del DVD). Lamentablemente esa descarga ya no está disponible, pero llegué a descargarlo en su momento y fue de gran utilidad. Posteriormente en un evento de Microsoft me regalaron una copia del DRK de 6.0. Muy útil también y con gran parte del contenido actualizado. El problema con la versión de 6.5 es que existe el link en el sitio de MSDN (aquí) donde supuestamente podríamos ordenar el kit, pero hace unos meses reemplazaron el contenido de esa página con material de SQL 2008 R2 (fíjense en el título, que se ha mantenido) y ya no se puede acceder al formulario para adquirir el DRK. Una pena en verdad.

Windows Mobile 5 Developer Resource Kit     Windows Mobile 6 Developer Resource Kit

Bueno, y para cerrar este artículo, recordar que todos estos SDKs tienen como pre-requisito un aplicativo que permita sincronizar el dispositivo móvil (o el emulador) con la PC. Qué aplicativo utilicemos dependerá de la versión del Sistema Operativo de nuestra PC. Para Windows XP o Windows Server 2003 debemos utilizar ActiveSync 4.5, y para Windows Vista, Windows Server 2008 o Windows 7 debemos utilizar el Centro de Dispositivos de Windows Mobile.

Windows Mobile Device Center 6.1

Nuevamente espero que este artículo sea de utilidad para toda la gente que quiere involucrarse en el desarrollo de aplicaciones para dispositivos móviles con la plataforma .NET. El siguiente artículo en la serie presentará algunos detalles acerca de las diferentes versiones del .NET Compact Framework disponibles. Igual seguiré atento al feedback de la comunidad para poder mejorar lo que se deba o profundizar en algún tema que por ahí haya quedado suelto. Saludos. Hasta la próxima. Nos leemos!

Cuestiones básicas de desarrollo para dispositivos móviles con .NET – Parte I

Esta vez abordaré un tema básico que genera muchas confusiones en gente que recién empieza a desarrollar para dispositivos móviles o que quiere orientar su desarrollo a esa interesante rama. Y es que en las diversas charlas y talleres que he dictado de desarrollo móvil,al inicio las dudas más frecuentes circundan siempre los temas de:

  • Los sistemas operativos (plataformas) de los dispositivos (por ejemplo, Pocket PC 2003, Windows Mobile 5, 6, 6.1 o 6.5, Windows CE, Windows Embedded).
  • Las ediciones de los sistemas operativos y sus diferencias (Pocket PC, Smartphone, Pocket PC Phone Edition, Professional, Standard, Classic).
  • Las versiones del motor de ejecución – el.NET Compact Framework – compatibles con esas versiones de sistemas operativos (.NET Compact Framework 1.0, 2.0, 3.5).
  • Las versiones de Visual Studio compatibles con esas plataformas y versiones del .NET Compact Framework.

Y es que, si bien .NET soporta desde ya hace mucho tiempo el desarrollo móvil, existen todos estos conceptos que, al principio resultan quizás algo confusos para quienes quieren entrar en la “onda móvil”. Y esto muchas veces causa tanta confusión que he conocido personas que en un momento dijeron “esto no es para mí, muy complicado, mejor sigo en Web o en Windows” pero que, cuando comprendieron mejor todos estos conceptos, vieron que se trata de toda una serie de cuestiones y decisiones de importancia fundamental para el desarrollo orientado a dispositivos.

Algo que sucede muy frecuentemente es que al incio de los talleres de desarrollo móvil (o simplemente cuando le empiezo a explicar a alguien acerca del tema), la mayoría de personas preferiría obviar la teoría inicial (a la cual siempre trato de darle la importancia debida) y empezar como en todo curso de programación… con su “Hola mundo” en versión móvil. Pero si hiciera eso y, por ejemplo, directamente ejecutara el Visual Studio 2008 y les dijera “Vamos a crear una aplicación de dispositivos. Seleccionen en Project Type ‘Smart Device’ y la plantilla ‘Smart Device Project’. Luego elijan en platform ‘Windows Mobile 6 Professional SDK’, en .NET Compact Framework version elijan ‘.NET Compact Framework Version 3.5’, dejen seleccionada la plantilla ‘Device Application’ y denle clic a ‘OK’. Y así creamos una aplicación móvil.”. Es cierto, así habríamos creado una aplicación móvil pero, en el mejor de los casos, el más curioso empezaría con las preguntas de rigor:

  • ¿Y por qué seleccionamos Windows Mobile 6 Professional SDK como plataforma?
  • ¿Y cuál es la diferencia con Windows Mobile 6 Standard SDK? (Muchos asumen erradamente que, como en la nomenclatura de las ediciones de Visual Studio, la edición Professional contiene todo lo de la Standard con algunas herramientas o funcionalidades adicionales)
  • ¿Y qué es Windows CE y para qué tipo de aplicaciones sirve?
  • ¿Por qué seleccionamos la versión 3.5 y no la 2.0 del .NET Compact Framework?
  • ¿No había también versiones 1.0, 1.1 y 3.0 como en el .NET Framework completo?
  • etc…

En el peor de los casos nadie preguntaría nada, y todos estos conceptos quedarían “en el aire”, por decirlo de alguna manera. Y es que estos conceptos no son nada triviales, sino todo lo contrario. .NET es la realización de Microsoft de una plataforma de desarrollo unificada para los diferentes tipos de aplicaciones y lenguajes, orientado a sus sistemas operativos Windows. Y precisamente los desarrolladores .NET de aplicaciones para dispositivos móviles trabajan en un mundo con una amplia gama de dispositivos de diferentes formas y tamaños, con diferentes capacidades y características unos de otros. Y precisamente conforme han ido evolucionando en este caso los sistemas operativos de Windows para dispositivos móviles, esta evolución ha ido acompañada de diferentes versiones de la plataforma de desarrollo para dispositivos móviles (el .NET Compact Framework) y de diferentes herramientas de desarrollo (versiones de Visual Studio, kits de desarrollo o kits de herramientas) para aprovechar las características de las nuevas versiones de los sistemas operativos y del .NET Compact Framework. Es por estos motivos que al emprender un proyecto de desarrollo sobre plataforma móvil, hay que tener muy en cuenta las capacidades que requerimos del dispositivo, la versión del Sistema Operativo y del .NET Compact Framework sobre el que se ejecutará nuestra aplicación, y las herramientas que utilizaremos/requeriremos para poder llevar a cabo dicho desarrollo. Si tomamos una mala decisión en estos puntos al principio de nuestro proyecto, podríamos tener muchos problemas luego, así que empecemos.

De Sistemas Operativos y Ediciones

En esta primera entrega revisaremos rápidamente las diferentes alternativas de sistemas operativos móviles, sus ediciones y sus diferencias.

A continuación tenemos una lista resumida de los diferentes sistemas operativos Windows para dispositivos disponibles en la actualidad (extraída de Wikipedia):

  • Pocket PC 2003 (Windows Mobile 2003 for Pocket PC)
  • Smartphone 2003 (Windows Mobile 2003 for Smartphone)
  • Pocket PC 2003 Phone Edition (Windows Mobile 2003 for Pocket PC Phone Edition)
  • Windows Mobile 5.0 Pocket PC
  • Windows Mobile 5.0 Smartphone
  • Windows Mobile 5.0 Pocket PC Phone Edition
  • Windows Mobile 6.0 Professional
  • Windows Mobile 6.0 Standard
  • Windows Mobile 6.0 Classic
  • Windows Mobile 6.1 Professional
  • Windows Mobile 6.1 Standard
  • Windows Mobile 6.1 Classic
  • Windows Mobile 6.5 Professional
  • Windows Mobile 6.5 Standard
  • Windows Mobile 6.5 Classic

¿Lo notaron? Por cada versión del sistema operativo Windows Mobile (actualización: con excepción de Windows Mobile 6.5) tenemos 3 ediciones. Pongámoslo de la siguiente manera:

Windows Mobile 2003

Windows Mobile 5.0

Windows Mobile 6.0

Windows Mobile 6.1

Windows Mobile 6.5

Windows Mobile 2003 for Pocket PC Windows Mobile 5.0 Pocket PC Windows Mobile 6.0 Professional Windows Mobile 6.1 Professional Windows Mobile 6.5 Professional
Windows Mobile 2003 for Smartphone Windows Mobile 5.0 Smartphone Windows Mobile 6.0 Standard Windows Mobile 6.1 Standard Windows Mobile 6.5 Standard
Windows Mobile 2003 for Pocket PC Phone Edition Windows Mobile 5.0 Pocket PC Phone Edition Windows Mobile 6.0 Classic Windows Mobile 6.1 Classic Windows Mobile 6.5 Classic

Windows Mobile 6.1

Microsoft ha diseñado una edición especial de sus diferentes sistemas operativos Windows Mobile para cada tipo de dispositivo según las características de soporte de pantalla táctil y de capacidades de teléfono. Originalmente, y hasta Windows Mobile 5.0 las ediciones se llamaban Pocket PC, Smartphone y Pocket PC Phone Edition, y a partir de Windows Mobile fueron renombradas como Classic, Standard y Professional respectivamente. El siguiente cuadro simplifica las diferencias entre estas ediciones (arriba la nomenclatura anterior y abajo la nueva):

Con pantalla táctil

Sin pantalla táctil

Con capacidades de teléfono

Pocket PC Phone Edition
Professional

Smartphone
Standard

Sin capacidades de teléfono

Pocket PC
Classic

[no existe]

Consideremos también los siguientes sistemas operativos Windows para dispositivos móviles mencionados en el Microsoft Mobile Development Handbook (excelente libro de Andy Wigley, Daniel Moth y Peter Foot, tres experimentados desarrolladores en Windows Mobile):

  • Windows CE 4.2
  • Windows CE 5.0
  • Windows Embedded CE 6.0

Si recordamos, al elegir la plataforma para nuestro proyecto de dispositivos en Visual Studio aparecía, además de los Sistemas Operativos Windows Mobile, la plataforma Windows CE.

AddSmartDeviceProject

¿Y qué es Windows CE? ¿y en qué se diferencia de Windows Mobile? Bueno, veámoslo de la siguiente manera. Windows CE (o ahora conocido como Windows Embedded, a partir de la versión 6.0) es una línea diferente de sistemas operativos modulares para fabricantes de dispositivos. ¿Y qué rayos significa esto de sistema operativo modular? Pues simple, por ejemplo, comparemos una computadora y su sistema operativo Windows tradicional con un surtidor computarizado de combustible que tiene como sistema operativo Windows Embedded. En el caso de la computadora, el sistema operativo cuenta con todos los “módulos” para que los dispositivos y servicios actuales (y los que se agreguen posteriormente) puedan funcionar. Entre estos módulos podemos contar por ejemplo el de manejo de salida de video, de capacidades multimedia, de comunicación con periféricos de entrada (teclado, mouse, trackball…), entre otros módulos. En el caso del surtidor de combustible no tendría ningún sentido que el sistema integre por ejemplo capacidades multimedia o por ejemplo de lectura de dispositivos de almacenamiento removible como CDs, DVDs o unidades USB. Precisamente el fabricante, dependiendo del hardware que utilizará y soportará su dispositivo, crea una imagen del sistema operativo personalizada para ese dispositivo, solamente con los módulos requeridos para dicha implementación.

Y a todo esto, ¿que tiene que ver esto con Windows Mobile? Pues que las diferentes versiones de Windows Mobile son en realidad imágenes de estos sistemas operativos embebidos con ciertos módulos ya preestablecidos, por lo cual, en principio, cuando desarrolles para dispositivos por ejemplo que tengan Windows Mobile 5.0 PocketPC Phone Edition, las características y APIs que puedas utilizar del dispositivo serán estándares independientemente de la marca. Esto es una gran diferencia respecto al desarrollo móvil en Java por ejemplo, en el cual dependiendo del dispositivo hay que determinar cuáles APIs se pueden utilizar y cuáles no.

Por el momento dejo el tema desarrollado hasta este punto. Espero que hayan encontrado al menos interesante este artículo y que quienes desean subirse a la ola de desarrollo móvil, por lo menos tengan más clara la figura. En la siguiente entrega de esta pequeña serie de artículos abordaré el tema de las herramientas de desarrollo básicas a utilizar con estas diferentes plataformas. Nuevamente gracias por tomarse el tiempo de leer. Si desean aportar con comentarios sobre lo que les gusta y lo que no les gusta o si simplemente desean preguntar algo, estaré al tanto. Un saludo. Nos leemos!

Hola a todos

Bueno, siendo las 00:10 hrs. del martes 08 de Diciembre, daré inicio a mi actividad en este blog que he tenido “acumulando telarañas” por mucho tiempo.

Espero poder aportar lo poco que la experiencia me ha brindado y, por supuesto estaré atento a los comentarios para saber si qué voy haciendo mal y qué se puede mejorar.

Muchas gracias a Rodrigo por “resetear” mi cuenta, pues mi contraseña estaba amarrada a una cuenta de email de trabajo anterior.

A empezar… Nos leemos.

Concurso “Net Minds” de MSDN

Revisando los blogs a los que me encuentro suscrito encontré algunas referencias (de Rafael y de Marc) a un nuevo concurso lanzado por MSDN. Se trata de NET Minds, que a pesar del término NET (OJO no es .NET pero tiene los colores similares a los de la nueva versión de Visual Studio) no se trata de un concurso de desarrollo o de quién conoce más del .NET Framework o algo similar. Es decir, parece que no será nada técnico, sino más bien un concurso de lógica.

Marc Rubiño hace referencia a que se tratará de 3 retos en diferentes fechas y en la web del concurso sólo he visto mención del 14 de diciembre, por lo cual asumo que conoce más acerca de este concurso.

Lo que no me queda claro es el público objetivo del concurso, pues no hay página de “Términos y condiciones” como en concursos previos. En los comentarios de Marc menciona que “parece ser solo para España”. En fin, de todos modos participaré. Si no se gana, al menos parece que servirá como buen ejercicio mental. 😉

Saludos.