• WarNov Developer Evangelist

    Windows 8 te hace la vida más fácil

    • 48 Comments

    Veamos en esta cortísima demo de 5 minutos, las características más importantes de Windows 8, que a nosotros como desarrolladores nos han de importar, para poderlas aprovechar a la hora de generar nuestras apps.

    image
  • WarNov Developer Evangelist

    Git para .NET

    • 0 Comments

    Git es un administrador de código fuente muy famoso en el mundo del Open Source, que ha venido desplazando al hijo de Apache, Subversion. Git  ha tenido una altísima difusión, dadas sus principales características de poder funcionar totalmente offline y de ser supremamente ágil y veloz en los branches gracias a su acercamiento a través de Snapshots de versiones en vez de deltas. Es completamente descentralizado. Solo se requiere conexión para hacer merge de los cambios en un servidor externo (en el lenguaje Git esto se conoce como push), o para obtener una última versión externa (pull).

    Creado en 2005 por Linus Torvalds para satisfacer la necesidad del control de versiones que tenía el propio Linux, tan popular se ha vuelto este administrador escrito mayormente en C y de código abierto, que en el mundo .net también ha comenzado a incursionar y de manera similar, herramientas y servicios .net ya han comenzado a darle soporte. Por ejemplo los WebSites de Windows Azure ahora soportan que desde Git se pueda hacer push directamente, de manera que sitios por ejemplo escritos en PHP se pueden publicar a la nube de inmediato, sin salirse de Git. De hecho, los SDKs que tiene Windows Azure para Linux y MAC, son de código abierto y están hospedados en el servidor de Git,  GitHub. De la misma manera, cualquier solución .net y en general cualquier archivo puede ponerse en Git para hacer su control de versiones.

    Existe una versión de Git para Windows que por defecto soporta manejo a través de la consola tradicional de Windows o de un bash que instala específicamente para que todo sea más a la usanza Unix. Sobre esta versión también se han desarrollado varios clientes Windows como tal.

    Explorando varios de esos clientes, el oficial de Git visual para Windows es muy lindo y nos recuerda el metro style de Zune y que por si fuera poco se instala con Click Once (o algo supremamente parecido).

    image

    Con estas herramientas podemos controlar nuestros repositorios de Git que para nosotros usuarios de Windows, no son más que folders con los proyectos que manejamos.

    Sin embargo, si ustedes son como yo que cuando estamos desarrollando en .net, no nos queremos salir de allí, existen numerosos plugins que nos permiten conectar VS directamente a Git. Pero si son aún más obstinados (como yo también) y no les gusta tener un montón de botones por todo lado y quieren usar Git en modo consola desde VS (realmente pienso que una de las grandes ventajas de Git y de SVN es la gran versatilidad que adquieren cuando se están trabajando desde consola) , en ese caso hay un conjunto de operaciones que nos permitirá integrar Git a PowerShell y obviamente, esto nos habilita de inmediato tenerlo en la consola de NuGet que es un sistema administrador de paquetes .net Open Source basado en consola, que además brinda otras muchas ventajas dado que como deberían saber está altamente integrado a PowerShell.

    De manera que aprovechando un encapsulamiento de Git que hizo dahlbyk para PowerShell llamado posh-git, podemos desde dentro de Visual Studio operar con NuGet sin necesidad de tener que salirnos a la consola o a otro cliente.

    Así que ya tenemos instalado Git en nuestra máquina Windows (sí, aún Windows 8). Lo que sigue entonces es hacer un clone de posh-git. Esto se puede hacer desde la consola de Windows, desde el Bash o desde la aplicación visual. Con ese clone, se estarán descargando una copia de la versión actual de ese proyecto con todas sus fuentes, a la carpeta en la que se encuentren ubicados en el momento de ejecutar el comando.

    image

    En este ejemplo observamos como habiendo creado una carpeta para proyectos en Git en la ruta c:\git (o donde ustedes quieran) nos ubicamos allí con el bash y creamos una nueva carpeta para descargar la copia y ubicándonos dentro de ella ejecutamos el clone del proyecto en la dirección https://github.com/dahlbyk/posh-git.git y luego observando el contenido vemos que existe el script install.ps1 que es el que nos proveerá la integración completa con PowerShell para mostrar el estado de los branches, y tab completition para mayor agilidad.

    Para poder ejecutar este script es necesario configurar PowerShell para que pueda ejecutar scripts.

    image

    Por ejemplo al consultar aquí en mi PowerShell veo que puedo ejecutar scripts remotos firmados. Pero podría ser que estuvieran restringidos. En este caso, hemos de darle permisos de RemoteSigned o Unrestricted. Para hacerlo, se debe abrir PowerShell con permisos de administrador y ejecutar:

    Set-ExecutionPolicy RemoteSigned –Confirm

    Luego ejecutamos install.ps1 y listo!

    De esta manera, ya podemos ir a nuestra consola de NuGet en Visual Studio (2010 o 2012) y proceder a trabajar con Git sin salirnos de allí:

    image

    Este pantallazo es sacado de VS2012RC con la Consola de Administración de Paquetes abiertas y trabajando con Git. Obsérvese cómo me ubico en el nuevo proyecto que quiero incluir en el controlador de versiones. Allí uso todo el poder de PowerShell para escribir el archivo de exclusiones de Git (no todos los archivos van al control de versiones. Por ejemplo los ejecutables y obj). Esta función podría parametrizarse para poder ejecutarla con las rutas correctas para cada proyecto. Luego de haber escrito el archivo de exclusiones y de haberlo revisado, agrego mi proyecto a Git con un sencillo git init que operará sobre la carpeta actual. Ya con el repositorio listo, le agrego la carpeta con todos los fuentes WNexter  y después de esto para chequear reviso con git status y vemos como lista todos los archivos puestos en stage (listos para ser confirmados).

  • WarNov Developer Evangelist

    Modificando los Settings de una aplicación Windows desde el código

    • 0 Comments

    En ocasiones es necesario ajustar la configuración de una app. por ejemplo, configurar cuál va a ser el directorio de trabajo, o qué colores quiere el usuario para la interfaz, etc.

    Las aplicaciones .net tienen un archivo llamado app.config (o web.config en el caso de las aplicaciones web), que puede contener estas configuraciones.

    Por lo general esas configuraciones se hacen a mano en el caso de las aplicaciones web. Pero en ocasiones es necesario que estas configuraciones se modifiquen desde el mismo código.

    System.Configuration contiene todas las herramientas para lograrlo, pero es una API que tiene muchísimas funcionalidades para manejar la configuración de las aplicaciones. Por eso puede resultar fácil perderse tratando solo de hacer unas sencillas manipulaciones en el archivo de settings.

    Aquí muestro de una forma sencilla cómo buscar un valor de llave de configuración de una aplicación Windows. Si no existe, cómo agregarlo y luego cómo modificarlo.

        //Objeto de configuración
        var config=ConfigurationManager
    .OpenExeConfiguration(ConfigurationUserLevel.None); //Búsqueda de un setting en particular var pathSettings = config.AppSettings.Settings["MusicPath"]; //Si está en nulo, es porque no se encuentra.
    //Entonces lo agregamos
    if (pathSettings == null) config.AppSettings.Settings
    .Add("MusicPath",ci.MusicPath); //Si no, ya está agregado, entonces lo modificamos else pathSettings.Value = newValue; //Grabamos la configuración en disco de nuevo. config.Save();

     

    Es necesario operar de esta manera, dado que intentar por ejemplo config.AppSettings.Settings["MusicPath"]=newValue; no es legal de acuerdo a la accesibilidad que se le ha dado a este indexador.

  • WarNov Developer Evangelist

    SQL Azure Internals

    • 0 Comments
    SQL Azure, la propuesta de base de datos relacional como servicio que ofrece Microsoft desde Windows Azure tiene varias diferencias con las implementaciones convencionales de SQL Server, a pesar de que para los usuarios finales el uso es prácticamente el mismo.

    Veremos en este video post, realmente cómo está compuesto SQL Azure. En dónde realmente se almacenan nuestras bases de datos. Cuál es el respaldo que ofrece SQL Azure a nuestra información. Cómo se logra un 99.9% de disponibilidad en bases de datos en la nube. Por qué Microsoft no nos cobra los logs, por qué el máximo tamaño de una DB por el momento es de 150GB, cuáles son las configuraciones de hardware de un servidor SQL Azure y muchas otras dudas que seguro hemos tenido alrededor de este tema.

  • WarNov Developer Evangelist

    SQL Azure BACPAC - DB BACKUP en la nube

    • 1 Comments
    UPDATE: Estas instrucciones son para el antiguo portal de administración de Windows Azure en Silverlight. Para las últimas instrucciones sobre el Nuevo portal de Administración Windows Azure, visite este post
     

    El formato de archivo BACPAC, se refiere a un nuevo tipo de archivo que contiene tanto el esquema, como los datos de una base de datos.

    En el portal de Windows Azure, en la sección de Import and Export, existe una opción para generar un archivo BACPAC o para consumirlo, a través de Export e Import respectivamente:


    image


    Para crear un copia instantánea de la DB, escogemos dicha DB y le decimos exportar. Esta operación requiere una cuenta de almacenamiento de Windows Azure para guardar esa copia BACPAC en el blob storage. En este caso, la ruta del blob ha de ser suministrada por ejemplo http://micuenta.blob.core.windows.net/bacpacs/backupjunio En este caso, la cuenta de almacenamiento se llama micuenta, el container se llama bacpacs y el archivo o blob como tal se llama backupkjunio.

    Luego de especificar la cuenta, comienza a generarse la copia. Este es un proceso asíncrono, cuyo estado se puede consultar entrando a la opción de Status:

    image

    Si la DB no es tan grande, esta operación se siente casi que inmediata.image

    Una vez creada la copia, podemos importar. En este caso, ubicándonos sobre el servidor al que queremos agregarle la DB a importar; damos el nuevo nombre para la DB, el tamaño (mayor o igual al anterior), citamos la url en la que quedó el BACPAC, lo seleccionamos y comenzamos la recreación de la DB. Este proceso también es asícrono y su estado se puede confirmar de la manera ya descrita.

    image

    Lo mejor: Estas operaciones son susceptibles a ser automatizadas gracias al API de REST para acceder a los servicios de BACPAC; de esta forma, podemos programar los backups de nuestras DBs, y estos quedarán almacenados en el blob storage de Azure, que vale un centavo de dólar la giga al mes.

  • WarNov Developer Evangelist

    Moviendo Servidores de SQL Azure entre suscripciones

    • 0 Comments

    Liberando una de mis apps de Windows Azure a producción, me encontré con la necesidad de mover todos los datos que tenía en un servidor de SQL Azure de una de mis suscripciones de prueba, a una de producción.

    Venía poco animado, porque me implicaría generar los scripts de recreación de las dbs que allí tenía y luego además, mover los datos.

    Cuál sería mi grata sorpresa, cuando encontré que desde el panel de administración de bases de datos del portal de Windows Azure, se puede mover todo un server desde una suscripción a otra solo oprimiendo un botón!!

    image


    Como se puede apreciar en la imagen, solo es necesario hacer click en "Move Server"y luego escoger la suscripción a la que deseamos hacer el movimiento.

    Esto nos mueve de inmediato el servidor a la nueva cuenta, sin que quede offline ni un segundo y sin cambiarle el nombre! Esto es genial, porque si habían clientes conectados, estos no percibirán el cambio. Además, esos clientes no deberán ser actualizados, pues la cadena de conexión sigue idéntica.

    El único cambio, es que ahora el servidor es responsabilidad de la nueva suscripción y por ende, los costos generados ya no aplican a la anterior, sino a ésta.

  • WarNov Developer Evangelist

    Debugging de Windows Phone Apps con Fiddler

    • 0 Comments

    Para quienes no lo conocen, Fiddler es un impresionante aplicativo gratuito creado por un colega de Microsoft: Eric Lawrence. Es usado básicamente para capturar tráfico HTTP y si lo deseas, modificarlo. Sin embargo, posee decenas de utilidades más relacionadas con el tráfico HTTP; esto es útil para hacer depuración de aplicaciones que se conectan a servicios web, o aplicaciones web como tal.

    He encontrado supremamente útil por ejemplo, usar Fiddler para hacer depuración de un par de Apps que estaba construyendo y que consumían servicios de Windows Azure, pues Fiddler se puede configurar también para que escuche las transmisiones HTTP originadas por el emulador de Windows Phone. De esta manera, puedo ver claramente cuáles son los requests que está haciendo mi app, y qué es lo que se está retornando desde la Web. Por ejemplo aquí pude ver que el servicio de Windows Azure al que estaba accediendo la app ya no existía:

    image


    Para configurar Fiddler para el emulador de Windows Phone, has de tener la última versión y luego configurarle de esta manera:


    1. Tools->Fiddler Options
    2. Connections tab -> Allow remote computers to connect -> OK
    3. Escribir este comando en la caja de QuickExec (Cuadro de texto en la esquina inferior izquierda de Fiddler):
    prefs set fiddler.network.proxy.registrationhostname NOMBREDETUMAQUINA
    4. Cerrar y reiniciar Fiddler
    5. Reinicia el emulador y ya podrás hacer análisis de las comunicaciones HTTP que se originan desde el mismo Smile

  • WarNov Developer Evangelist

    Durabilidad de nombres de servicio en Windows Azure

    • 0 Comments

    Cuando creamos servicios en Windows Azure que usan WebRoles o WorkerRoles, hemos de especificar un nombre para estos servicios.

    Este nombre debe cumplir con las reglas para nombres de dominio, pues esta será la forma en que accedamos a ellos.

    A estos nombres de servicios podemos asignarle el dominio que queramos del cual seamos propietarios después de haberlo comprado por ejemplo en GoDaddy. Esto se logra a través de un sencillo cambio en la configuración del registro del dominio en la herramienta del proveedor del mismo.

    A veces sucede que tenemos un servicio establecido con un nombre dado y luego creamos otro servicio y queremos que este otro servicio reemplace al primero con nombre y todo. Obviamente esto nos lleva a pensar que tenemos que eliminar el servicio original y desplegar el nuevo y asignarle el nombre que ya habíamos definido.

    Cuando arrancó Windows Azure, cuando eliminábamos un servicio, el nombre quedaba "ocupado" hasta por varios días. De esta manera el reemplazo no se podía hacer de inmediato.

    Hoy en día si borras un servicio, el nombre del mismo queda INMEDIATAMENTE disponible para que puedas poner un servicio en su reemplazo si así lo deseas. De esta manera, se ofrece una gran ventaja al desarrollador que puede reemplazar sus servicios sin demora, manteniendo los nombres que están esperando los clientes que se han construido basados en dicho servicio.

  • WarNov Developer Evangelist

    The All New Windows Phone 8!

    • 6 Comments

    image

    Windows Phone 7 ya ha abierto un gran camino para lo que hoy conocemos como Windows Phone 8. Ya tenemos 100.000 apps (y contando) en el Marketplace y desde Microsoft agradecemos a todos los desarrolladores en el mundo que han colaborado para lograrlo (en Colombia hemos puesto nuestro granito de arena con cerca de 400 apps hasta ahora. Por otro lado, observando los ratings de Smart Phones en Amazon, de los 9 primeros puestos, mejor calificados por los consumidores en el mundo, 7 obedecen a Windows Phone 7 y hago énfasis en que los tres primeros puestos son ocupados por teléfonos con nuestro sistema operativo.

    Este, ha sido el mes en el que yo como Developer Evangelist, he recibido más información de novedades, que en todo el tiempo que llevo disfrutando en Microsoft. Primero, las novedades sin precedentes de Windows Azure que ahora también es IaaS. Luego la formidable Surface y ahora,  Windows Phone 8 (WP8).

    Nuevo Kernel Unificado

    El cambio que determina la mayor parte de novedades en nuestra plataforma, es la unificación del kernel de WP8, dentro de la familia NT. Esa unificación permite por ejemplo que drivers creados para PCs, slates y tablets, sean compatibles también con el teléfono.

    Multicore

    También como novedad trae el soporte a IPV6 y otra gran consecuencia nos trae que podemos soportar teóricamente hasta 64 núcleos de procesamiento. De hecho, los primeros aparatos WP8, vendrán con dual core, para ofrecer una experiencia de usuario más rápida y fluida que la que se tiene hoy en día. .

    Más resolución

    Esto nos lleva automáticamente a otra gran novedad. La inclusión de otras dos resoluciones adicionales a la tradicional 800x480. Tendremos aparatos con resoluciones HD y WHD, para ofrecer imágenes de una realidad sin precedentes. Lo mejor de todo, es que los desarrolladores no tendrán que lidiar con estos cambios, pues sus apps se renderizarán correctamente en estas resoluciones sin cambios adicionales.

    Soporte Nativo

    La unificación de kernel (que es el mismo usado por ejemplo en WindowsRT) obviamente nos trae también la oportunidad de desarrollar natívamente para WP8. I mean, usando C y C++. Unan esto por ejemplo a Direct3D y entonces podrán esperar en el corto plazo, juegos como Halo y Assassins Creed para WP8. En realidad tendremos un poder de renderización y animación propio de cualquier consola de juegos de alto nivel.

    Multitasking – VoIP

    image

    Estas mejoras nos permiten tener más poder con los procesos de multitarea. Especialmente con tecnologías como VoIP y Video Chat (Skype). Por ejemplo, ahora podremos observar como cuando tenemos una llamada de este tipo activa, podemos seguir ejecutando otras tareas en nuestro aparato sin ninguna interrupción. Y por ejemplo si estamos usando manos libres, el flujo de sonido de la llamada VoIP será redireccionado a esos dispositivos.

    Games - Direct3D

    El soporte nativo además, abre las puertas a que entornos como Unity3D (game engine en el que programamos usando C# o Boo y producimos juegos para múltiples plataformas como Windows, MAC, Android, IPad, IPhone, etc) puedan evolucionar para poder ofrecer la experiencia unificada de creación de juegos también para WP8 y que por ejemplo apps nativas creadas para IOS sean fácilmente portadas también a nuestra plataforma. Obviamente la portabilidad de código entre WinRT y WP8 será total y sólo tendremos que fijarnos en cambios relativos al form factor de los dispositivos.

    Y ya que mencioné a C y C++ como una alternativa para desarrollar sobre WP8, les cuento que tenemos otras dos alternativas: el ya muy conocido XAML + (C# o VB) y HTML5 a través del WebControl o de entornos como PhoneGap.

    IE10 + HTML 5

    Hablando de HTML5, en Windows Phone 8, ya vendrá la última versión de nuestro browser: Internet Explorer 10. Con exactamente el mismo motor de renderización de la versión de PC y la capacidad de ejecutar el HTML5 de manera nativa obteniendo unos resultados inigualables en cuanto a velocidad y fluidez en la renderización, sin dejar de lado los estándares ni la seguridad: En esta versión, el Explorter de WP8 nos informará cuándo estamos accediendo a sitios sospechosos, igual a como ocurre en el desktop.

    De hecho apps creadas para la web en HTML5, se pueden correr perfectamente en el browser del WP8, dado que ya viene optimizado para el touch en browsers. Y por si fuera poco, solo haciendo ligeras modificaciones (aquellas que tienen que ver con las características del tamaño de la pantalla), podríamos tener estas apps corriendo de manera nativa como una app propia del teléfono.

    Storage

    En cuanto a hardware, se ha agregado soporte a memorias MicroSD extraíbles, para agregar más almacenamiento y versatilidad en el teléfono.

    NFC

    NFC entre otras cosas ahora nos ha permitido generar toda una nueva experiencia llamada "Wallet Experience" consistente en  convertir al WP8 en la billetera que usamos todos los días. Tarjetas débito, crédito, cupones, membresías, etc., van a estar disponibles dentro del teléfono para que las podamos usar para pagar compras, recibir ofertas, ganar puntos, entrar a sitios, consultar saldos, etc. Obviamente el Wallet de #WP8 se puede asegurar con un pin, de la misma manera que aseguramos nuestras tarjetas.

    El servicio de Wallet, dependerá de que los operadores lo implementen. Orange en Francia ya está listo para el Wallet Hub y ofrecerá sus servicios en ese país, en bien aparezca WP8.

    image

    El NFC también permite por ejemplo, que acerquemos nuestros teléfonos a carteles o avisos que tengan chips NFC y de allí capturar información de la misma manera en que usamos los tag o QR codes. De manera similar sucede con información que queramos transferir desde una tablet al teléfono por ejemplo! Esto abre la posibilidad a nuevos escenarios como apps o juegos que se activan en la tablet al acercarle el teléfono que está ejecutando esa misma app o juego, para iniciar una partida multi-jugador en multi-dispositivos.

    AMBIENTE CORPORATIVO

    Un punto muy importante también dentro de estos anuncios, es que el ambiente corporativo ahora toma más relevancia. Por ejemplo, ahora vamos a tener la posibilidad de encriptar toda la información del dispositivo a través de la tecnología de BitLocker y también hacer secure Boot.   

    Existirá también un Hub corporativo, a través del cual se podrán instalar las apps corporativas sin que tengan que aparecer en el marketplace.

    INCLUSIONES DE SOFTWARE

    Mapas Nativos! Con tecnología Nokia / Navteq y la gran app Nokia Drive que nos da guías para movilizarnos bien sea a pie o en vehículos. Todos los teléfonos WP8 la incluirán, aún en modo offline. Es decir, los mapas vienen preinstalados, de manera que no necesitamos conexión de datos para poder utilizarlos!!!

    El speech se ha mejorado significativamente, ahora con el trabajo en conjunto con Audible que ha creado una plataforma (disponible también para WP7) para que las apps no solo puedan ser lanzadas con comandos de voz, sino que una vez abiertas, también sean operadas con la voz. Si eres desarrollador, ten en cuenta esta característica para adicionarla a tus apps, en caso de que aplique.

    La pantalla de inicio también fue trabajada para ser aún mejor; ahora es más personalizable y con tiles a los que se le pueden cambiar los tamaños, de manera que podemos tener muchas más apps ancladas al inicio, sin tener que desplazarnos verticalmente. Al final, lo que se ofrece es una manera única, no igualada por ningún otro teléfono en el mercado, para personalizar y hacer nuestro el teléfono. Con el color que queremos, el tipo de apps que queremos y la organización que queremos.

    Observemos un video de cómo funciona:

    La cámara tendrá nuevas funcionalidades como un Timer, un creador de Panoramas, y Smart Groove Shots que  permite tomar fotos de un grupo y luego detectar las mejores caras que hizo cada quien y finalmente armar la foto óptima.

    CUESTIONAMIENTOS

    Para finalizar, algunas de las dudas que nos quedan serían:
    Se podrá actualizar Windows Phone 7.5  a WP8? La respuesta corta es no. Sin embargo tendremos una última actualización para esta serie, que entre otras mejoras incluirá todo lo que tiene que ver con la nueva Start Screen que ya mencionamos. Esta, será la versión 7.8. Debemos tener en cuenta que WP8 incluye un kernel totalmente diferente al de WP7 que además da soporte a varios core y a otras resoluciones, por lo que es imposible lograr que un WP7 adquiera estas características meramente a través de una actualización de software.

    Esto nos lleva a otra pregunta: Las apps de WP7 correrán en WP8? Por supuesto! Pero eso sí, como es de lógica costumbre, una app compilada para WP8 no podrá correr en WP7.

    Cuándo puedo comenzar a desarrollar par WP8? Antes de terminar este verano estará disponible el nuevo SDK para escribir apps orientadas a WP8.

    Un solo mes; 3 espectaculares lanzamientos y todavía queda mucho por venir. Estén pendientes del este blog en donde encontrarán lo último de nuestras tecnologías.

  • WarNov Developer Evangelist

    Windows Phone Summit 2012

    • 0 Comments

    Aquí el cubrimiento en vivo, de este evento que develará las novedades que esperamos en nuestro Sistema Operativo para teléfonos!!

     

  • WarNov Developer Evangelist

    Windows 8 Surface Tablet/PC

    • 13 Comments

    UPDATE: Ya tenemos disponible el video del Keynote del lanzamiento de la Surface ayer en los Ángeles. Aquí esta:

     

    Ahora, un video de la tablet, porque vale mucho más que miles de palabras!!!

    Ahora imágenes! Muchas imágenes!

    Microsoft Surface

    La Surface, no viene con un docking. Viene con un forro que incluye teclado y pad multitouch (Touch Cover)! Además tiene un soporte en la parte trasera, que permite ajustar el ángulo de visualización.

    Microsoft Surface

     

    Microsoft Surface

    Microsoft Surface

    Microsoft Surface

    Microsoft Surface

    Forros con colores para todas las personalidades

    Un diseño sin precedentes!!!

    También se puede incluir un Type Cover que trae un teclado más físico que el del Touch Cover.

    El mejor tamaño que puede haber para una tablet de este estilo!

    No les  inspira rediseñar su espacio en torno a este aparato?

     

     

    El VaporMg Case es una total innovación que brinda elegancia, comodidad y ligereza gracias al magnesio con el que está construido.

    Todo el poder para una conectividad real!

     

    Que más hay que decir, que toda esta maravilla fue develada hoy a las 6.45pm hora Colombiana en Los Angeles, en un sitio que no fue develado sino hasta el día de hoy, a un grupo de selectos periodistas y bloggers quienes fueron avisados del evento solo hasta el viernes pasado.

    La Microsoft Surface Tablet, vendrá en dos versiones. Aquella para Windows RT,  y aquella para Windows 8 Pro. Se diferencian básicamente en la cantidad de espacio en disco (SSD): 64Gb máx y 128Gb max, la pro vendrá con un Stylus especial, el tipo de pantalla y sobretodo el procesador. la primera vendrá con ARM y la segunda con el Ivy Bridge de GBIntel, l que presumiblemente nos permitirá seguir teniendo el desktop tradicional.

    Otras especificaciones:

    Surface for Windows RT

    • OS: Windows RT

    • Light: 676 g

    • Thin: 9.3 mm

    • Clear: 10.6” ClearType HD Display

    • Energized: 31.5 W-h

    • Connected: microSD, USB 2.0, Micro HD Video, 2x2 MIMO antennae

    • Productive: Office ‘15’ Apps, Touch Cover, Type Cover

    • Practical: VaporMg Case & Stand

    • Configurable: 32 GB, 64 GB

    Surface for Windows 8 Pro

    • OS: Windows 8 Pro

    • Light: 903 g

    • Thin: 13.5 mm

    • Clear: 10.6” ClearType Full HD Display

    • Energized: 42 W-h

    • Connected: microSDXC, USB 3.0, Mini DisplayPort Video, 2x2 MIMO antennae

    • Productive: Touch Cover, Type Cover, Pen with Palm Block

    • Practical: VaporMg Case & Stand

    • Configurable: 64 GB, 128 GB

     

           

    Se espera la llegada de la Surface Windows RT en el RTM de Windows 8 y la Windows 8 Pro, aparecerá tres meses después.

    Mañana mismo podremos ver el video del lanzamiento aquí.

    Para terminar, solo me resta citar unas palabras:

    “I love this company.

    I love that we have brilliant engineers with brilliant ideas. I love that we aren’t afraid to make big bold bets. I love that we are persistent – after all it’s our passion and tenacity that bring our dreams to life. And right now, I love how so much of our hard work, passion and tenacity are coming together in the products we are bringing to market…

    … I’m incredibly proud of the work this company is doing and incredibly optimistic for what’s ahead. “

    Steve Ballmer,  al equipo de Microsoft.

  • WarNov Developer Evangelist

    WP7: Agentes en Background

    • 0 Comments

    Como su nombre lo indica, nos van a permitir ejecutar trabajos en Segundo plano, aún cuando la aplicación no esté activa.

    OJO: No están disponibles para los aparatos que solo tienen 256Mb de memoria.

    Tipos de Tareas:

    Periódicas

    Corren en un pequeño intervalo y recurrentemente. Por ejemplo para informar la locación del dispositivo y ejecutar sincronizaciones de poco tamaño.

    Intensivas

    (En Recursos) Largos períodos de ejecución cuando el teléfono cumple ciertas características de uso (actividad de cpu, fuente de poder, tipo de red. Útil para sincronizar grandes cantidades de datos al teléfono cuando no está siendo usado.

    Una app solo puede tener un agente de estos, que puede ejecutar ambos tipos de tareas.

    Restricciones:

    Existen unas apis que no se pueden usar dentro de las tareas que ejecutan los agentes: Cámara, vibración, radio, sensores, notificaciones, XNA, y otras que encuentran aquí.

    La geolocalización está disponible de manera restringida, ya que no reporta la ubicación real, sino que hace un cache cada 15 minutos, sin embargo, acciones como las que usan los HttpWebRequests desde los agentes sí se pueden hacer sin problema.

    Los agentes no pueden usar más de 6MB, excepto cuando manejan audio, en cuyo caso tienen hasta 15Mb. Cuando se exceden estos límites, la tarea se apaga de inmediato. Cuando cualquier tarea es apagada dos veces debido a un alto empleo de la memoria, dicha tarea es removida del agendamiento de tareas del teléfono. Es útil recordar que estos límites no aplican en modo debug, por lo que es necesario emplear el API ApplicationMemoryUsageLimit para verificar cuánto está empleando la tarea en tiempo de depuración.

    Los agendamientos de las tareas no se pueden hacer por un tiempo mayor a dos semanas. Para poder reagendar, la app tienen que ejecutarse en primer plano.

    Cuando se tienen agentes periódicos, lo normal es que corran mínimo cada 30 minutos. Este tiempo puede desfasarse hasta en 10 minutos, debido a otras tareas que están en segundo plano. La ejecución no debe ser mayor a 25 segundos.

    WP7 tiene un modo de operación llamado Battery Saver: Este modo que solo se puede habilitar por el usuario, podría impedir que los agentes periódicos se ejecuten.

    WP7 tiene una restricción acerca de la cantidad de agentes que pueden estar corriendo en un dispositivo dado y esta puede ser tan pequeña como 6. Antes de este límite, WP7 puede lanzar mensajes al usuario que indiquen que la cantidad de agentes está subiendo mucho y puede que la batería se agote más rápido. Si el límite ya se ha cumplido, cuando la app trata de agregar una nueva tarea, habrá una excepción de tipo InvalidOperationException que debería ser manejada para que la app no se estrelle por este motivo.

    Hay documentación de buenas prácticas que pueden encontrar aquí. En el caso de los agentes intensivos, estos pueden durar ejecutándose hasta 10 minutos. No pueden correr a menos que el dispositivo tenga más de 90% de batería, la pantalla esté bloqueada, no exista una llamada activa, esté conectado a una fuente de poder externa y a datos en una red distinta a la red celular. Si una tarea intensiva comienza a ejecutarse y por algún motivo alguna de las condiciones anteriores deja de cumplirse, de inmediato la tarea es terminada.

    Es bueno tener en cuenta que estas tareas intensivas pueden llegar a no ejecutarse nunca, debido a la gran cantidad de condiciones impuestas. Por ejemplo si el usuario no tiene WiFi en ningún lado, la tarea nunca se ejecutará.

    En mi sitio de preguntas y respuestas he respondido algunas preguntas acerca de los agentes en background:

    1. Hay alguna forma de manejar con código en wp7 que un agente sea suspendido porque hay bajos recursos de memoria o de batería?

    2. En wp7, se pueden concatenar varios agentes periódicos para lograr tener reportes cada 2 minutos en vez de cada 30?

    3. Es posible evitar a través de código que un usuario de WP7 apague los agentes de ejecución en background?


    Bien; ya que vimos las generalidades, si quieres incluir Background Agents en tu app, sigue este link, donde nos enseñan cómo implementarlos.

  • WarNov Developer Evangelist

    La “Asincronía” y su evolución en pro de la UX

    • 2 Comments

    Hace ya varios años, los primeros servicios Web que usábamos eran síncronos. Hacíamos un llamado a la web y nos quedábamos esperando muy pacientemente a que el servidor nos respondiera y la respuesta bajara.

    Para nosotros era suficiente con obtener la respuesta!

    Nos nos importaba cuánto se demorara... el hecho que después de un tiempo llegara esa información que necesitábamos ya era suficiente para sentir la magia de la web!!! El resto era irrelevante! Aún el hecho de que la interfaz de usuario se congelara no nos importaba. Finalmente, teníamos nuestro mensaje... valía la pena esperar.

    Pero humanos somos y cada vez queremos más. Cada vez queremos mejores opciones y mejores comportamientos. Más comodidad!!!
    Nos comenzó a parecer un fastidio que la interfaz se congelara y que ni siquiera pudiéramos mover la ventana de la aplicación... De ahí en adelante comenzó la evolución que hoy en .net se conoce como: async.

    En este video daremos un recorrido por las soluciones que se le han dado a este problema a través del tiempo. Desde los simples llamados síncronos a WebServices por ejemplo, pasando por el manejo de threads distintos para la comunicación junto con el uso de Invoke para evitar desactivar el CheckForIllegalCrossThreadCalls de los forms, siguiendo con el versátil BackgroundWorker y luego explorando los clientes web asíncronos obtenidos con WebClient en Silverlight y Windows Phone 7 y HttpClient en Windows 8, que al implementar el Framework 4.5 nos ofrece el maravilloso async que nos abstrae de todas esas operaciones que algún día fueron un dolor de cabeza para nosotros:

    Puntos Clave:

    1. async ha sido creado solo para manejar operaciones que al tardar, podrían bloquear la interfaz de usuario. En ningún momento ha de ser usado para ejecutar tareas en paralelo o procesos en Background.
    2. En WP7 aún no hay soporte para async. Así que hay que usar un WebClient y ejecutar sus métodos asíncronos asociando un manejador al evento de completitud del request. Esto es similar a las llamadas asíncronas a proxies de servicios WSDL o WCF tradicionales.
    3. La forma de manejar async difiere levemente desde WindowsRT (metro style) al resto del framework. Cuando no estamos en WindowsRT se usa el método que referencia a TaskAsync. Por ejemplo en vez de DownloadStringAsync, en un WebClient, llamamos el método DownloadStringTaskAsync
    1. WarNov Developer Evangelist

      Windows Azure SDK Junio 2012 Habilita a Visual Studio 2012RC !

      • 0 Comments

      imageCon la liberación del SDK de Windows Azure versión Junio 2012 (1.7) y las tools de la misma versión, el proceso nuevamente es automatizado y ahora además tiene completo soporte para Visual Studio 2012 RC!!! De esta manera lo único que tenemos que hacer es ir a este link, descargarlo e instalarlo.

      Problemas con la descarga: El sitio en español aún no se actualiza con los últimos bits. Así que si al seguir el link tu navegador identifica tu localización, no te llevará al sitio en inglés sino al de español y te presentará la versión del sdk anterior que no es compatible con el RC de Visual Studio 2012. En ese caso, asegúrate de ir al final de la página y cambiar el idioma a inglés, para que te aparezca el último SDK que dice: “Last updated June 2012”

      image 

      • Como se aprecia, todo el SDK más las tools ahora solo ocupan 34.26MB. Esto es debido a que Visual Studio 2012 RC ya viene con muchos de los elementos requeridos para el desarrollo en Azure, tales como un IIS Express y la base de datos compacta para desarrolladores llamada SQL LocalDB (Correcto, ya no necesitamos ni siquiera SQL Express!!! –más espacio y memoria para nuestros juegos!)

      Tengan en cuenta que este SDK soporta hasta la versión 4.0 del Framework .Net. Así que si en VS2012RC seleccionan como Target Framework el 4.5, no les aparecerá disponible el Windows Azure Cloud Service

      image

      La forma adecuada sería:

      image

      Este SDK funciona correctamente en Windows 7, Windows Server 2008R2, Windows Server 2012 RP y por supuesto en Windows 8 RP! Descárguenlo ahora mismo y disfruten del mayor cambio y evolución que ha tenido nuestra plataforma de Cloud Computing desde su creación hace dos años!

      image

       

       

    2. WarNov Developer Evangelist

      Apps de Windows Phone no disponibles en tu región cuando las vas a bajar?

      • 2 Comments

       

      El Marketplace de Windows Phone está segmentado por países, porque en cada país las normas son distintas y por ende no se puede generalizar la distribución de Apps.

      Así que los desarrolladores de apps, ya sea por este motivo u otros distintos, en ocasiones no ponen sus apps disponibles a ciertos países (esto no tiene que ver con el costo de publicación que siempre es el mismo).

      Es así que si al momento de configurar tu cuenta por ejemplo estableciste que ibas a trabajar con el Marketplace Colombiano, solo las apps disponibles para Colombia te aparecerán.

      Las apps más populares del mundo ya están disponibles para Colombia. Pero otras puede que no. El mercado por defecto es Estados Unidos. Por ende, casi todas las apps se encuentran allí. Así que podemos configurar nuestro teléfono con el marketplace de Estados Unidos y tener acceso a más apps.

      Desventaja frente a escoger el mercado del país en el que vivimos? Que a la hora de comprar apps, vas a tener que usar una tarjeta de crédito oriunda de ese país. Así que si no tienes una tarjeta de crédito internacional, tendrás algunas dificultades. Afortunadamente la gran mayoría de apps más usadas son free.

      Suponiendo que ya arreglaste este problema de la tarjeta de crédito y te inscribiste al marketplace estadounidense, puede pasar que aun así no veas ciertas apps como el mismísimo Adobe PDF Reader!!! A mí me pasó y formateé el teléfono varias veces sin éxito. No la podía bajar.

      Por qué sucedía esto? Sencillamente, porque configuraba el teléfono para una amiga que no es muy buena con el Inglés, así que le puse como idioma por defecto Español.

      Cuando los desarrolladores de Apps suben sus apps al mercado, también eligen el idioma en el que la ponen disponible. Adobe no puso su app en idioma Español. Así que si se detecta que el teléfono está en un idioma no disponible, la app no se dejará descargar.

      Solución: Poner el teléfono en inglés (requerirá reiniciarlo). Descargar todas las apps necesarias y luego si lo deseas, volver al español. Las apps seguirán allí listas para usarse; pero obviamente aparecerán solo en inglés.

      Si eres desarrollador de apps en español, ten esto muy en cuenta a la hora de publicarla; si quisieras por ejemplo alcanzar el gran mercado estadounidense, mejor que le pongas tu versión en inglés a la app, porque de lo contrario ellos no podrán descargarla por más que tu la hayas distribuido en ese país, si no tienen su aparato configurado en español.

    3. WarNov Developer Evangelist

      Estrategias para prevenir rechazos de tu app en el Marketplace de Windows Phone 7

      • 0 Comments

      Abstract:

      Con el pasar del tiempo y las consultas que me han hecho, he recopilado los motivos más frecuentes por los cuales una app de WP7 es rechazada para acceder al Markeplace (mp) después de subirla a través del AppHub. Este post recopila estos motivos y su solución.

      1. Marcas y logos registrados:

      Cuando se usan dentro de la aplicación marcas y logos reconocidos, nos pueden devolver la app para que indiquemos si tenemos permiso para usarlos. Esto se puede indicar en el último paso del proceso de subida de la app, en el espacio que dice Test Notes:

      image

      Estas notas deben ir en inglés y tal como lo recomiendo en el ejemplo, se debe indicar que la empresa dio los permisos adecuados, así como los datos de la persona de contacto que se podría requerir para certificar este permiso.

      2. Uso de GPS

      El uso de GPS como es bien sabido, interviene con la privacidad del usuario, pues se podría comenzar a reportar la ubicación de un usuario sin que este lo haya permitido. Es por esto que si empleamos el api de localización en nuestras apps, debemos proveer claramente un mecanismo para desactivar estas funcionalidades. Además cuando lo hagamos, la aplicación debe seguir funcionando correctamente. Además de esto, se debe proveer una política de empleo de la información de la localización que explique perfectamente al usuario para qué serán usados los datos, de manera que él pueda comprender las implicaciones de autorizar el empleo del GPS en la app. Esta política puede estar incluida en la app, o ser un link a algún recurso externo. Acá les escribo un ejemplo de política:

      La aplicación xxxxx ofrece servicios avanzados de búsqueda, basados en la ubicación del usuario. Los datos de ubicación del usuario son usados exclusivamente para este fin y nunca son compartidos. Sin embargo, si el interés del usuario es que esta aplicación no haga uso de los servicios de localización del teléfono, éstos se pueden deshabilitar en el menú de ajustes de la aplicación; en este caso la utilidad de búsqueda por cercanía quedará deshabilitada y la aplicación continuará funcionando correctamente.

      En este caso deberá de existir un menú de ajustes, donde se puedan deshabilitar estas características:

      image

      3. Screenshots

      Los Screenshots preferiblemente (obligación por ser la mejor opción) se han de capturar desde el emulador que tiene una utilidad para tomar estos screenshots.

      Pero con el emulador sucede que a veces puede estar mostrando el framerate de las imágenes que está mostrando. Si capturamos con esta opción habilitada, nuestra app será rechazada, porque estos elementos no pueden aparecer en los screenshots:

      image

      Esta opción por defecto viene habilitada, así que a la hora de hacer la captura la deshabilitamos desde el archivo: App.xaml.cs:

      image

      Basta solo con poner EnableFrameRateCounter en false.

      4. Lenguaje por defecto de la app

      Cuando creamos una app de WP7, el lenguaje por defecto de la misma está establecido en Inglés. Es por esto que cuando la subimos, el App Hub, allí esperan que pongamos una descripción de la App en inglés:

      image

      Es un error frecuente, porque si efectivamente nuestra app está en español, querremos ponerle descripción en español; pero el App Hub solo nos da la opción de inglés. Así que si ponemos la descripción en un idioma distinto al solicitado, nos rechazarán la app. Como lo mencioné es porque no hemos cambiado la opción de idioma neutral. Para lograrlo, vamos a las propiedades del proyecto y escogemos Assembly Information y allí podremos seleccionar el lenguaje neutral personalizado:

      image

      De esta manera cuando subamos la app al AppHub, nos aparecerá en este caso el idioma español, para poner la descripción.

      En situaciones más avanzadas queremos ofrecer nuestra app en varios idiomas. En otro post estaré mostrando cómo se logra tener localización de múltiples lenguajes. Por ahora veamos que si hacemos esto bien, cuando carguemos el xap al AppHub, observaremos que habrá una versión de toda la información que tenemos que suministrar, por cada lenguaje que hayamos incluido:

      image

      Como observamos en este caso, está seleccionado el idioma inglés y en este ponemos la información requerida. Luego seleccionamos español y procedemos escribiendo la información en el lenguaje adecuado. Recordemos que esto solo aplica cuando intencionalmente escogemos tener dos o más lenguajes para nuestras apps.

      Sabiendo que pueden surgir nuevos motivos de rechazo frecuentes, stay tunned, que aquí estaré citándolos y ofreciendo las posibles soluciones.

    4. WarNov Developer Evangelist

      FTP en Azure?

      • 0 Comments

      Este post surge como respuesta a una pregunta que recibí recientemente. Puedo tener un FTP en Windows Azure?

      Sí es posible, pero hay que tener en cuenta las implicaciones:

      1. Para lograrlo, es necesario establecer ciertas configuraciones especiales que por defecto no vienen establecidas en los Roles de Windows Azure. Así que tendrías que por ejemplo entrar por RDP a hacer cosas como configurar el Role de FTP en el servidor virtual, configurar puertos, etc. etc.


      2. Sucede que los servidores de Azure cuando se reinician (por fallas, actualizaciones, etc) pierden todos los cambios que tuvieron en su ultima operación y vuelven a su estado original, así que todas esas tareas administrativas para configurar el FTP, deberían mejor ser ejecutadas a través de un script que se ejecute como un startup task, de manera que siempre que se inicie un Role, se autoconfigure para funcionar con FTP.


      3. Quizá el problema más grave, es que los archivos que se hayan subido y/o actualizado, también se perderían cada vez que se reinicie el servidor virtual. En este caso, habría que hacer un respaldo de los archivos por ejemplo en el blob storage. Cosa que complicaría mucho la situación.


      4. Afortunadamente, en poco tiempo estaremos liberando el CTP del Persistent VM Role. Un nuevo tipo de Role para Windows Azure que prepararemos offline en un vhd (aquí haríamos todas las configuraciones de FTP) y luego subimos a la nube para que trabaje como queramos. Afortunadamente, al ser persistente, mantendrá todos los archivos nuevos aún después de operaciones de reinicio. Se espera para mitad de año, aunque no es oficial aún.


      Si quisieras experimentar un poco, te recomiendo este post donde dan un paso a paso de como convertir un role actual a FTP:
      http://mayur.gondaliya.com/microsoft/creating-ftp-server-on-windows-azure-493.html

    5. WarNov Developer Evangelist

      Windows 8 en las ediciones que deberían ser

      • 14 Comments

      Ya en este punto sabemos mucho del mundo de nuevas cosas que se vienen con Windows 8.

      Comencemos citando entonces que tendremos dos grandes divisiones en las que tendremos Windows 8. La x86/64 y la WOA (Windows on ARM –los procesadores de bajo consumo energético). En ambas se podrán usar touchscreens, así como mouse y teclado cuando se desee.

      Así que para x86/64 el nombre del OS será Windows 8. Y para estos sistemas, tendremos sólo 2 versiones: Windows 8 y Windows 8 Pro. La primera para uso de hogares y pequeñas empresas y la segunda para usos más profesionales con integración a dominios y demás (Ver al final la tabla de características)

      Para el mundo de WOA llega Windows RT como el nuevo miembro de nuestra familia Windows. Y sólo estará disponible pre-instalada en PCs y tablets que tengan procesadores ARM. Vendrá con versiones optimizadas para touch de Microsoft Word, Excel, PowerPoint y OneNote.

      Aquí les muestros las características especiales que podremos encontrar en cada edición.

      Característica

      Windows 8

      Windows 8 Pro

      Windows RT

      Upgrades from Windows 7 Starter, Home Basic, Home Premium

      x

      x

       

      Upgrades from Windows 7 Professional, Ultimate

       

      x

       

      Start screen, Semantic Zoom, Live Tiles

      x

      x

      x

      Windows Store

      x

      x

      x

      Apps (Mail, Calendar, People, Messaging, Photos, SkyDrive, Reader, Music, Video)

      x

      x

      x

      Microsoft Office (Word, Excel, PowerPoint, OneNote)

         

      x

      Internet Explorer 10

      x

      x

      x

      Device encryption

         

      x

      Connected standby

      x

      x

      x

      Microsoft account

      x

      x

      x

      Desktop

      x

      x

      x

      Installation of x86/64 and desktop software

      x

      x

       

      Updated Windows Explorer

      x

      x

      x

      Windows Defender

      x

      x

      x

      SmartScreen

      x

      x

      x

      Windows Update

      x

      x

      x

      Enhanced Task Manager

      x

      x

      x

      Switch languages on the fly (Language Packs)

      x

      x

      x

      Better multiple monitor support

      x

      x

      x

      Storage Spaces

      x

      x

       

      Windows Media Player

      x

      x

       

      Exchange ActiveSync

      x

      x

      x

      File history

      x

      x

      x

      ISO / VHD mount

      x

      x

      x

      Mobile broadband features

      x

      x

      x

      Picture password

      x

      x

      x

      Play To

      x

      x

      x

      Remote Desktop (client)

      x

      x

      x

      Reset and refresh your PC

      x

      x

      x

      Snap

      x

      x

      x

      Touch and Thumb keyboard

      x

      x

      x

      Trusted boot

      x

      x

      x

      VPN client

      x

      x

      x

      BitLocker and BitLocker To Go

       

      x

       

      Boot from VHD

       

      x

       

      Client Hyper-V

       

      x

       

      Domain Join

       

      x

       

      Encrypting File System

       

      x

       

      Group Policy

       

      x

       

      Remote Desktop (host)

       

      x

       

      Si no lo has visto en acción, dascarga una version de prueba de aquí!

      Nota: Para las empresas con SOftware Assurance,  como siempre tendremos la versión Windows 8 Enterprise, con aún más features para el manejo corporativo.

    6. WarNov Developer Evangelist

      Windows 8 Dev Machine

      • 1 Comments

      Hasta hace unos días, lo único que me impedía desarrollar completamente basado en Windows 8, era el tema de Windows Azure y sobretodo el de Windows Phone, dado que al usar emuladores, aún no estaban plenamente soportados.

      Afortunadamente, al interior de Microsoft estamos siendo muy veloces y a hoy, ya tenemos un gran conjunto de tools que nos permiten desarrollar para todas las tecnologías que teníamos disponibles en VS2010 sobre Windows 7 por ejemplo.

      Primero aclaremos algunos hechos básicos:

      1. Visual Studio 2010 (VS10) y Visual Studio 11 (VS11) coexisten sin problemas en el mismo sistema operativo ya sea Windows 7 o Windows 8.

      2. VS11 en Windows 7 aunque permite desarrollar varios tipos de proyectos convencionales, no permite desarrollar apps Metro Style, obviamente porque el OS no tiene todo el soporte requerido

      3. A pesar de que “parece” que VS11 soportara proyectos Windows Azure, esto aún no es posible, así que es requerido VS10 y unas configuraciones especiales que describiré en este post para que funcionen en Windows 8.

      clip_image002

      4. VS11 aún no soporta WP7. Así que también es necesario trabajarlo con VS10 y en Windows 8 se requieren ciertas configuraciones especiales que describiré en este post.

      Entonces, antes de entrar en materia, quiero que quedemos claros en que vamos a requerir Visual Studio 2010 instalado en Windows 8. Esto como les mencioné no tiene ninguna contraindicación ni aún con VS11 instalado, y puede ser cualquier versión. Yo estoy usando la Ultimate. Pero se puede Visual Studio Express for Windows Phone y Visual Studio Web Developer para Azure y gratuitamente tendremos operatividad total.

      WINDOWS 8 + WINDOWS PHONE

      Esto se hace posible gracias a la publicación del patch 7.1.1 del SDK de Windows Phone, cuyo principal objetivo es el permitir el desarrollo de apps de WP7 enfocadas a dispositivos económicos de solo 256MB de ram, al incluir una nueva imagen de emulador que tiene esta memoria. Sin embargo, aunque este fue el fin principal, se aprovechó la publicación para entre otras cosas, solucionar unos inconvenientes que impedían al emulador de Windows Phone 7 funcionar correctamente en Windows 8, por lo que ahora esto ya es posible, aunque no oficialmente soportado, sino hasta que salga el RTM de Windows 8.

      clip_image003

      Procedimiento:

      1. Instalar Win8CP

      2. Instalar la última versión de Games for Windows – LIVE. Esto es requerido para poder desarrollar juegos con XNA para WP7, dado que Windows 8 requiere archivos más nuevos que los que vienen con el SDK 7.1

      3. Instalar VS2010 Pro o superior si es posible; si no, proceder a 3

      4. Instalar Windows Phone SDK 7.1 (Incluye gratuitamente Visual Studio Express for Windows Phone 7)

      5. Instalar el patch 7.1.1

      6. Instalar Zune

      7. Desarrollar en WP7!!!


      WINDOWS 8 + WINDOWS AZURE

      UPDATE:  Las instrucciones siguientes SOLO aplican para la instalación del SDK y Tool de Windows Azure v. 1.6 sobre Visual Studio 2010 en Windows 8 CP y RP. Con la liberación del SDK de Windows Azure versión Junio 2012 (1.7) y las tools de la misma versión, el proceso nuevamente es automatizado y ahora además tiene completo soporte para Visual Studio 2012 RC!!! Chequea este post, para instrucciones de cómo instalarlo.

      SDK 1.6 en VS2010 sobre Windows 8:

      Aquí solo es necesario activar algunas características adicionales del sistema operativo y luego descargar los bits requeridos.  

      1. Activación de Características:

      a. Presione TeclaWindows+F para abrir el cuadro de búsqueda y escriba Windows Features. Luego haga click en settings y escoja en los resultados Turn Windows Features on or Off.

      b. Una vez allí, asegúrese de tener todas estas características activadas:

      clip_image004

      2. IDE: Instalar VS2010 Pro o superior o Visual Web Developer 2010 Express como alternativa free

      a. Instalar el Service Pack de VS2010

      b. Descargar e Instalar MVC3

      3. DB: Windows Azure usa una base de datos SQL para emular el storage. La DB que debe instalarse es SQL Express 2008 R2 with SP1

      4. Descargar e instalar los componentes individuales de Windows Azure bien sea para x86 o para x64.
      Hasta aquí ya estamos listos para desarrollar aplicaciones de Windows Azure convencionales. Pero a hoy, tenemos unas nuevas herramientas especialmente creadas para desarrollar aplicaciones para Windows 8 basadas en Windows Azure sobretodo para los servicios de notificaciones y almacenamiento. Aquí les muestro cómo habilitarlas:

      5. Apps de Windows 8 sobre Azure:
      Descargar e instalar el Toolkit de Windows Azure para Windows 8

      a. Instalar la última versión del Nuget Package Manager (si existe ya instalada una versión distinta a la antigua, abrir Visual Studio en modo administrador y desinstalarlo desde el extensión manager el menú de tools)

      b. Ejecutar el script Setup.cmd que queda en el root de la instalación del anterior Toolkit

      Obtendremos:
      clip_image006

      c. Después al abrir nuestro VS2010, nos encontraremos con que ya podemos crear Windows 8 Cloud Applications

      clip_image008


      y en VS11 podremos crear aplicaciones basadas en Notificaciones más control de Acceso:


      clip_image010

      Conclusión:

      Windows 8 Consumer Preview por ser aún una versión de evaluación requiere ciertas configuraciones especiales para poder servir como máquina de desarrollo de aplicaciones basadas en Windows Azure y para Windows Phone. En este post, vimos las acciones a tomar para poder lograrlo.

    7. WarNov Developer Evangelist

      Pimp my rIDE

      • 4 Comments

      Visual Pimp-My-Ride-XE

      Recuerdan ese reality de MTV con XZibit donde tomaban un auto y le ponían cientos de mejoras para que su conducción fuera mucho más agradable?

      Pues lo mismo pasa con Visual Studio!

      Usé la alegoría de rIDE con r de rapid :P Esto obviamente, dado que nuestro IDE (Visual Studio) nos permite ir de cero a una aplicación completamente funcional, in no time!

      Para muchos, Visual Studio es nuestra segunda casa.

      No para tantos lo era hace unos años (me incluyo en los que sí), cuando a pesar de que era bueno, no era tan completo como hoy en día, de manera que de vez en cuando teníamos que salir de casa para ir a hacer ciertas tareas de desarrollo en otras tools independientes.

      -Uy! Ojalá tuviera algo que me alineara automáticamente todas las asignaciones por el igual.

      O por ejemplo: -Ufff! De lujo si pudiera implementar un tema basado en Matrix para desarrollar.

      O tal vez: -Súper si pudiera enviar por correo automáticamente un segmento de código que hice para que mi jefe vea que soy bueno programando lo que él no pudo

      Yo siempre solía soñar con eso y tenía mi propia biblioteca de macros para ejecutar tareas dentro de VS.

      Pero las macros es lo más sencillo que se puede hacer.

      Luego cuando entré al equipo de desarrollo de un lenguaje de programación sobre .NET llamado VisualAPL basado en el viejo APL (un lenguaje de programación basado en símbolos muy poderoso para cálculos financieros avanzados) conocí todo lo que se podía hacer con el modelo de extensibilidad de Visual Studio y fue glorioso, la verdad.

      Este post sin embargo, no trata de cómo crear estos addons y extensiones sino más bien de cómo usar los existentes y a mi modo de ver, cuáles son los más útiles.

      Sucede que como yo, había miles de desarrolladores con sus ideas para mejorar Visual Studio y por ende se abrió la gran Visual Studio Gallery. Allí aquellos desarrolladores hard core que lo que no encuentran lo construyen pueden exponer sus creaciones para que estén disponibles al resto de la comunidad. De manera que podemos encontrar un sinnúmero de aditamentos que nos van a permitir personalizar nuestro IDE para ser aún más productivos y realmente hacer un Pimping a nuestro rIDE.

      En el video he usado Visual Studio 2010 Ultimate, pero en general con las extensiones de VS ocurre que siempre se ponen disponibles para las nuevas versiones de Visual Studio que van saliendo. En este caso, la versión 11. De hecho, hay extensiones que han sido tan buenas y usadas, que en Visual Studio 11 ya vienen nativas y disponibles sin instalaciones adicionales, como lo veremos en el video. Entonces pasemos a la acción, donde enseño las extensiones que siempre aplico a mi Visual Studio:

      Addons Usados:

      Aquí el listado de las extensiones mostradas:

      Nombre

      URL

      Productivity Power Tools

      http://bit.ly/g4fUGG

      Background Customizer

      http://bit.ly/fXhJOF

      Color Theme Editor

      http://bit.ly/fPKKEV

      Dark Expression Blend Color Theme

      http://bit.ly/aYDWOG

      WarMatrix Theme

      http://wnov.it/WarNovTheme

      Hide Main Menu

      http://bit.ly/hQoFYI

      CSharpIntellisensePresenter

      http://bit.ly/GLp8ht

      Numbered Bookmarks

      http://bit.ly/hSbRdy

      Presentation Zoom

      http://bit.ly/hAMtDI

      MoveToRegionVSX

      http://bit.ly/GJZ5M1

      Y tú? Ya usas alguna extensión no citada aquí y quieres recomendarla? Súper si la adjuntas a este post en los comentarios!

    8. WarNov Developer Evangelist

      Shortcuts de teclado para aplicaciones Windows

      • 0 Comments

      En Windows, y aún en la experiencia Desktop de Windows 8, podemos asignar shortcuts de teclado a las aplicaciones que más usamos o que más nos convienen, para poderlas activar desde el teclado sin necesidad de buscarlas o hacer click en su ícono.

      En este corto video, muestro como.

       

    9. WarNov Developer Evangelist

      Divide y Vencerás (Windows Azure)

      • 0 Comments

      Suponga que Ud. ha creado el siguiente Facebook… o twitter

      Millones de usuarios acudirán a sus servicios.

      Sé que a estas alturas la respuesta a la siguiente pregunta es sencilla para muchos, pero para los que están empezando hasta ahora, es mejor clarificarla y ese es el motivo de este post:

      Es mejor tener un servidor gigante, poderoso y costoso? O un montón de unidades de cómputo baratas?

      La respuesta la copio de un twitt que puse (ligeramente extendido)
      La instancia cara pero poderosa, llegará a un límite en el que no puede aceptar más ram o cpus; en este momento, el mega servicio que nos inventamos, ya no podrá soportar más usuarios; además qué pasa si se cae? No tendríamos cómo respaldarla y el servicio dejaría de funcionar.

      Aunque esto hoy día parece muy evidente, back in 1995, ni siquiera grandes empresas tecnológicas como Amazon lo tenían muy en cuenta. Ellos comenzaron con su sistema como un gran silo de software/hardware para su gigantesco sitio de ventas online. Pero ya en 2002, viendo todas las posibilidades que se venían en el futuro y sabiendo que un acercamiento monolítico haría muy difícil a sus sistemas crecer, implementar más funcionalidades y sobretodo soportar más usuarios, el CEO de Amazon, el señor Bezos, toma la decisión de reorientar todo el sistema a un modelo en el que se pudieran tener muchos componentes de software independientes que también pudieran funcionar en unidades o instancias de hardware independiente. Básicamente, a todos los desarrolladores se les dieron estas estrictas normas para trabajar:

      1. Todos los equipos deberán exponer los datos y las funcionalidades a través de interfaces de servicios.

      2. Los equipos se deben comunicar entre sí a través de estas interfaces.

      3. No habrá otra forma de comunicación aceptada.

      4. Sin importar qué tecnología usen, estas reglas se deben cumplir. A Bezos no le interesa.

      5. Todas las interfaces sin excepción, deben ser diseñadas pensando en ser expuestas al resto del mundo... Sin excepción!

      6. Cualquiera que no haga esto, será despedido

      7. Gracias, y tengan un buen día


      Algo parecido sucedió con Facebook, en 2007, tres años después de ser fundada. En contraste, curiosamente Google+ que es de 2011, salió al aire sin una sola API. Tres meses después lanzaron solo una gran MEGA API que muestra todo lo que un usuario ve. Lo que la sigue mostrando como un Silo.

      En fin… esos componentes de los que nos habla el señor Bezos, son los que hoy conocemos como servicios, y esa arquitectura es la que conocemos como SOA y es la que ha dado origen a conceptos como Infraestructura como Servicio (IaaS), Plataforma como Servicio (PaaS), Software as a Service (SaaS) y Cloud Computing.

      Una vez logramos que nuestras aplicaciones no sean silos complicados de administrar y extender, tanto para tener más funcionalidades como para soportar más usuarios, empezamos a observar que necesitamos hardware adecuado para soportar estas instancias. Un hardware monolítico de ninguna manera podría aprovechar un software diseñado para poder crecer y ser cada vez mejor.

      Así nace el concepto de IaaS que permite a los usuarios tener disponibles un montón de máquinas en internet para que en ellas pongamos los OS que necesitemos y encima de ellos nuestras aplicaciones. Esto se comenzó a conocer como la nube. Lo bueno, es que son máquinas arrendadas y solo nos cobran lo que consumimos. Además podemos instalar lo que queramos. Lo malo, es que como hay que poner sistemas operativos y demás, son difíciles y costosas de administrar. Amazon es uno de los pioneros y grandes proveedores de IaaS.

      Uno como desarrollador soñaría mejor en tener cientos de miles de máquinas en la nube listas para nuestra mega aplicación, sin necesidad de preocuparnos del sistema operativo ni mantenimiento ni nada de eso. Y es allí donde nace PaaS. Windows Azure de Microsoft, es uno de los pioneros y grandes proveedores de PaaS. Obviamente el software que ponemos sobre Plataforma como servicio, en general se presenta como Software como Servicio (SaaS) dado que los costos de arrendamiento se trasladan a los usuarios finales quienes por ejemplo comienzan a pagar una mensualidad por los servicios del software que se prestan. Como se ve, el viejo esquema de licenciamiento se ve modificado, erradicando problemas de distribución, empaquetado, solución de errores, mantenimiento, etc. Además garantizando la posibilidad de atender a tantos usuarios como vayan llegando, siendo un servicio escalable y robusto.

      Esto lo notó Amazon y hoy también está implementando su propuesta de PaaS junto a muchos otros proveedores. Pero también resulta cierto que a veces, de acuerdo a la complejidad de la aplicación generada, se hace necesario poder administrar el sistema operativo sobre el cual corre, así sea esto más costoso. Es por esto, que Azure ya está implementando también alternativas de IaaS.

      Todo lo anterior responde a que hemos notado que son mejores instancias baratas que se puedan activar a discreción, de acuerdo a las exigencias que las aplicaciones van teniendo. Pero esto requiere un diseño de aplicación pensado en el patrón shared-nothing, donde cada instancia dentro de un tier no comparte nada con otras instancias del mismo tier. Esto es básico para PaaS y SaaS.

      En síntesis, los mayores proveedores están pensando en varias alternativas para tener hardware como servicio en el que nos sea muy barato poner nuestros servicios con una cantidad de instancias de cómputo “ilimitada” que pueda crecer de acuerdo a nuestros requerimientos y que nos permita ofrecer un servicio robusto en el cual si una instancia cae, las otras siguen respondiendo, mientras la caída es reemplazada. Los silos, están OUT.

      Windows Azure nos ofrece muchas ventajas sobretodo a nosotros desarrolladores de .NET, porque hacer aplicaciones para la nube es muy natural y familiar; no hay que aprender un montón de técnicas o lenguajes nuevos y tenemos el soporte y la seguridad que nos ha dado siempre Microsoft.

      Por ejemplo, en Windows Azure tenemos diversos tamaños para las instancias de cómputo sobre las cuales queremos poner nuestro software. Hay desde instancias Extra Grandes de 8 cores de 1.67GHz cada uno y 14GB de RAM hasta pequeñas con 1 sola CPUs y 1.75GB de RAM.

      El hecho de que se diga que es mejor unidades baratas de cómputo que un solo silo poderoso y costoso no quiere decir entonces que lo mejor sea escoger siempre instancias pequeñas. O sea, ya definimos que no vamos a poner el software en una sola instancia… así que nos falta determinar cuál es el tamaño que deberán tener las instancias que compondrán el sistema. Y esto se hace de acuerdo a las características de nuestra aplicación. Por ejemplo si es una aplicación que necesita responder a muchos usuarios peticiones poco complicadas, es mejor tener muchas instancias pequeñas. Pero si por el contario son más bien pocos los requests pero con una demanda de cómputo alta, es mejor escoger instancias más grandes. Experiencia, intuición y sobretodo muchas pruebas, nos mostrarán cuál es la mejor alternativa.

      Una de las inclusiones de Windows Azure en los últimos tiempos, fueron las instancias extra small. Estas instancias son muy baratas. Solo valen a 4 centavos la hora que estén encendidas. Tienen 768MD de ram y la CPU es compartida. Esto no quiere decir que sean como los servidores compartidos típicos de internet. Esto, en virtud a que no están compartiendo el disco duro asignado, ni las unidades de memoria, ni el OS, ni el App Server ni el Web Server. Lo único que se comparte, son los cores de cómputo. Las instancias extra small son recomendadas sobretodo para pruebas de concepto o funcionalidades muy básicas, teniendo en cuenta sus características. En general para aplicaciones de línea de negocio, es mejor comenzar a analizar desde las pequeñas hacia arriba.

      Post Complementarios:

      Stairway to Azure

      Windows Azure: Compilado de Recursos

      Agradecimientos a: @afwilliams y @julitogtu por provocar el post Smile

    10. WarNov Developer Evangelist

      Microsoft Techday Cali

      • 0 Comments

      Microsoft llega Cali el próximo jueves 23 de Febrero, con el Microsoft TechDay, la conferencia de tecnología más importante para Desarrolladores y Profesionales de TI, en donde podrán ver en vivo las mejores tecnologías, productos y soluciones.
      Si estás desarrollando, implementando o administrando soluciones de Tecnología, este evento es la mejor oportunidad para enfocarse en las tecnologías clave y los escenarios de negocio que les ayudarán a enfrentar los retos del mundo real de TI y prepararse para las innovaciones de mañana.

      En este evento, personalmente les estaré contando todo lo que necesitan saber para comenzar a desarrollar aplicaciones de Windows 8.

      Windows 8 Logo

      También tendremos a dos de nuestros Microsoft Community Specialists caleños:

      El investigador y empresario Leonardo Bernal y el MSP Henry Ruiz, mostrándonos la integración de aplicaciones móviles de Windows Phone 7 con la nube de Windows Azure.

       

      cloudphone

       

      En un track paralelo, para los IT Pro, nuestro nuevo Evangelist, Alfredo Barba, nos estará contando de la Nube Privada de Microsoft y luego, tendremos a nuestro MCS Gold, Guillermo Taylor, mostrándonos lo que nos espera de SQL Server 2012.


      Pueden inscribirse para el evento en http://aka.ms/TechDayCol

      image

    11. WarNov Developer Evangelist

      Azure: Computación en la nube, con precios bajo tierra

      • 0 Comments

      Tal cual… Antes, tener un servidor web en Windows Azure (Web Role) más una base de datos de una giga, nos costaba no menos de USD$100 mensuales.

      Pero que pasa con los emprendedores que tienen su aplicación para móviles o para pequeños clientes que no necesitan todavía tanto poder?

      No hay una forma más económica para acceder?

      A partir de hoy, sí!

      Ya tenemos base de datos de 100MB!! Y el costo por mes es de apenas USD$5 por mes! Y esto incluye todo el poder de SQL Azure: Alta Disponibilidad, Tolerancia a Fallos, Auto Administración, Escalamiento Elástico, Conectividad On-premises y full SLA.

      Súmenle esto al costo de una instancia Extra-Small completamente dedicada a ustedes donde podrán desplegar su sitio/servicio que accede a la DB. Esto vale USD$28.8. Redondeando, esto nos llevaría a USD$35 como precio de arranque en Azure para una APP con un servidor web y base de datos.

      Otros costos, en las tablas que les dejo a continuación.

      Tamaño de MV

      CPU Cores

      Memoria

      Costo por Hora

      Extra Small

      Shared

      768 MB

      $0.04

      Small

      1

      1.75 GB

      $0.12

      Medium

      2

      3.5 GB

      $0.24

      Large

      4

      7 GB

      $0.48

      Extra Large

      8

      14 GB

      $0.96

      Tamaño de la BD

      Precio por mes (USD)

      0 a 100 MB

      $5.00

      de 100 MB a 1 GB

      $9.99

      de 1 GB a 10 GB

      $9.99 por la primera GB, $4.00 por cada GB adicional

      de 10 GB a 50 GB

      $45.99 por las primeras 10 GB, $2.00 por cada GB adicional

      de 50 GB a 150 GB

      $125.99 por las primeras 50 GB, $1.00 por cada GB adicional

      Tangamos en cuenta sin embargo, que 100MB no es un tipo de DB que escojamos al crearla. Solo sucede que si por ejemplo escogemos una DB de 1GB pero el consumo siempre se mantiene por debajo de 100MB, entonces el cobro siempre será solo de USD$5.

      Como se observa, entre más grande el servicio, más barato!

      Recordemos que cuando salió Azure, 50GB de SQL Azure nos costaban USD$500! Hoy valen $125.99.

      Seguimos aterrizando los precios…

    12. WarNov Developer Evangelist

      Me sirve en Development Environment, pero no en Azure!

      • 0 Comments

      Este post estará dedicado a recopilar las posibles causas por las cuales una aplicación Windows Azure corre bien en desarrollo, pero no puesta en el cloud.

      1. Aplicaciones basadas en la hora: Recuerden muy bien que la hora de los servidores en Windows Azure, no es la misma que aquella que uds. tienen en sus máquinas de desarrollo. Bueno, a menos que vivan sobre el meridiano de Greenwich. Para ser más explícitos, la hora de estos servidores es UTC. Mientras que por ejemplo Colombia es UTC-5. Así que tengan esto en sus cuentas.

      2. La cultura por defecto en los servidores de Azure, puede variar con respecto a la de sus máquinas. En Azure es por defecto en-US, con todo lo que esto conlleva con respecto a determinación del punto decimal y demás. Si ustedes por ejemplo tienen una rutina que convierte strings en números decimales, tengan muy en cuenta que los símbolos de separación de decimales por ejemplo pueden cambiar y la aplicación se comportará distinto. Esto puede pasar con fechas, etc.

      3. Por defecto Windows Azure no maneja variables de sesión ni aplicación distribuidas. Así que si observan que los valores de estas variables desaparecen cuando tienen más de una instancia en la nube, piensen que es hora de adquirir los servicios de AppFabric para poder tener este caché distribuido y que sus aplicaciones se comporten igual en la nube. Por qué pasa esto? Cuando hacemos un request, nos contesta por ejemplo el WebRole A. Allí iniciamos la variable de sesión MiIngenuaVariable. Luego volvemos a hacer un request, pero esta vez el LoadBalancer lo envía al WebRole B. Estos WebRoles, no comparten la memoria y solo fueron iguales al principio de la ejecución del servicio. Luego cada uno comenzó a tener una historia distinta. Entonces cuando consultamos la variable MiIngenuaVariable, claro, estará en NULL.

      4. Creé un pdf, lo grabe en el disco duro del servidor y luego cuando lo llamé ya no estaba? Juas! Muchos me han llegado con ese problema y es muy parecido al anterior. Recuerden que no se comparte el estado cuando tenemos varias instancias. Entonces una instancia no tiene ni idea de lo que hemos grabado en el disco duro de otra. Así pues, la solución es que los archivos que requieran ser consultados luego, los graben en el Blob Storage, donde quedarán con una dirección única accesible desde cualquier instancia o desde cualquier parte del universo que posea internet.

      5. Los cambios que hago en mi despliegue se revierten! Despliego mi servicio, luego ejecuto una rutina para modificar unos archivos de configuración (bien sea incluida en el servicio, o a través de RDP). Luego al otro día, esos archivos de configuración ya no están como los dejé y el servicio me falla!!! Eso pasa, porque en Windows Azure las máquinas ocasionalmente se reinician y vuelven a su estado original; esto es producto de patchs que se aplican, o reinicios determinados por el AppFabric al ver que una instancia se está comportando necia, o no quiere responder educadamente. En esots casos, la instalación vuelve a quedar idénticamente a como estaba la primera vez. No esperes encontrar tus modificaciones en caliente! Se espera que a futuro cercano los VM Role de Windows Azure tengan estas capacidades. Se llamarán VM Role Persistentes. Por ahora, lo recomendado obviamente es que estos valores de configuración sean almacenados en el archivo ServiceConfiguration, que es una archivo separado del paquete de despliegue, por lo que sus valores permanecerán una vez sean modificados, aun cuando se reinicien las instancias. Lo mejor de todo, es que estos valores se pueden cambiar “en caliente” de una manera muy sencilla desde el portal de Windows Azure.

      6. La aplicación me trae los datos más rápido de mi SQL Server local que de SQL Azure! Por caridad, espero que no hayan puesto en Azure la DB de SQL Azure en North US y luego la aplicación en South Central! Imagínense la cantidad de espacio que han de recorrer sus datos antes de llegar al destino! Usen siempre el mismo grupo de afinidad! Para Colombia y Sur América en general, es mejor siempre poner todo en South Central US.

      Otros ejemplos que vaya encontrando los iré anexando a esta guía. Keep on coding!

    Page 4 of 13 (317 items) «23456»