El Windows que nunca fue, “Longhorn”

[View:http://www.youtube.com/v/wP8b-BFoNuA:550:0]

La historia del sucesor de Windows XP, es una historia que Microsoft quisiera olvidar, pensándola bien, nunca la debería olvidar porque fue una dolorosa lección de lo que no debe hacerse al desarrollar un nuevo producto. Es una historia desastrosa y de la cual hasta hace poco pudieron recuperarse.

Esta historia comienza en el 2003, dos años después de haber liberado Windows XP el cual apenas empezaba a despegar, una versión que para muchos tenía una interfaz como infantil, le decían Windows “Ficher Price”. En ese año en una conferencia de desarrolladores, Bill Gates anuncia que pronto saldrá la nueva versión de Windows, llamada por su codename Longhorn.

La presentación fue impresionante, hubo gente de pie aplaudiendo como loca, estaban mostrando algo revolucionario (como se puede ver en el video). Además de los elementos visuales de Longhorn, Microsoft dijo que tendría un nuevo sistema de archivos llamado WinFS que sería una base de datos relacional, supuestamente iba a ser más seguro y rápido. Recuerdo también que se dijo que iba a estar escrito el sistema operativo enteramente de .Net, pero bueno, se dijeron muchas cosas en esos tiempos.

Parte importante de la experiencia de usuario iba a ser la barra lateral, donde además de mostrar los gadgets o widgets sería el repositorio de todos los mensajes que las aplicaciones desplagaran, un modelo único de notificación. Se introdujo Aero, que sí sobrevivió para estar en Windows Vista y es la forma de desplegar las ventanas con transparencia en las barras.

Pasaron dos cosas en el 2004. Los ataques a las vulnerabilidades Windows XP escalaron alarmantemente, al punto que Bill Gates anunció en una famosa carta interna, su iniciativa de Seguridad la cual obligaba a todo programa que saliera de Microsoft cumplir con principios de computación segura para cerrarle el paso a los hackers y los virus. Esto hizo que muchos recursos se invirtieran en los productos en el mercado y así surgió el Service Pack 2 de Windows XP, que fue casi como un nuevo sistema operativo.

Por otro lado el desarrollo de Longhorn no iba para ningún lado, tantas tecnologías nuevas no encajaban y trataban de meter cuanta característica podían, de hecho tenían pensado liberar a finales de 2003 y ya entrados en 2004 pararon el desarrollo de Longhorn y decidieron volver a empezar. Tomaron el código base de Windows 2003 Server que estaba muy estable e hicieron cambios de interfaz mínimos para no alargar más el tiempo de desarrollo, a la basura fue WinFS, que por cierto recuerdo haber instalado y vi que funcionaba tal como lo presentaron, lástima que todavía no puede ser implementado.

Así fue como resultó Windows Vista que en el 2005 se liberó como versión Beta y todavía pasó un año para corregir errores y sacarlo al mercado por fin en el 2006 con muchos problemas al principio, sobretodo con los controladores. Aunque Windows Vista se vendió muy bien, no tuvo el impacto esperado por Microsoft, se puede decir que fue un fracaso.

Las lecciones de Longhorn las aprendió bien Microsoft al cambiar de filosofía de desarrollo que Steven Sinofsky, Director de Windows ha mostrado exitosamente aplicar. Prometer poco y entregar mucho.

www.zoosharp.info

Libro gratis de programación para Windows 8

progwindow8

MSDN libero ahora un “Preview” del libro “Programming Windows 8 Apps with HTML, CSS and JavaScript”. Digo que es un preview porque contiene los primeros 4 capítulos de 18. En otoño estará disponible el resto, para saber cuando se libera sigue en Twitter a Microsoft Press. Estos son los capítulos (está en inglés el libro):

Chapter 1   The Life Story of a Metro Style App: Platform Characteristics of Windows 8

Chapter 2   Quickstart

Chapter 3   App Anatomy and Page Navigation

Chapter 4   Controls, Control Styling, and Basic Data Binding

 

Puedes bajar el libro digitalmente aquí así como el código de muestra.

 

Eduardo: zoosharp.info

 

 

La "appificación" de los programas

Sin duda el mercado de los smartphones ha crecido exponencialmente en los últimos años, primero con el iPhone y más recientemente con Android. El hacer llamadas con el teléfono no es lo más importante que hacemos con estos dispositivos. Gran parte de la popularidad de los smartphones son las aplicaciones o los “apps” que se distribuyen mediante sitios llamados “marketplace” o “app stores”, en éstos puedes buscar y descubrir aplicaciones de todo tipo, algunas muy sofisticadas y otras muy triviales, la mayoría son gratuitas pero las que tienen costo no llegan a costar mucho. Las apps se pueden bajar e inmediatamente funcionan, atrás quedaron los procedimientos engorrosos de instalación.

Lo mismo se puede decir de otra tendecia en la computación: las tabletas. Son dispositivos portátiles, táctiles con características muy similares a los smartphones pero con pantalla más grande, ideal para navegar, leer, ver películas, etc. También fue revolucionada por el iPad de Apple y otros fabricantes están queriendo competir incluso Microsoft con el Windows 8. Para Bill Gates debe ser frustrante que su visión de principios de la década anterior no fue instrumentada por su compañía, ahora están tratando de alcanzar a Apple.

Como desarrolladores y profesionales de TI no podemos darnos el lujo de ignorar estas tendencias de la computación y pensar que estas tecnología son solo para consumidores y nunca llegarán a las empresas. Hay un fenómeno que desde hace años lo que en ingles han denominado “consumerization of IT”, es decir las implantación de tecnologías diseñadas para consumidores adoptadas por los departamentos de TI de las empresas.

Esto se ha dado por el quiebre generacional y sera cada vez más relevante. Los nuevos “usuarios” viven en internet y viven en todos lados.

Pero ¿qué significa esto para los desarrolladores? Que tenemos que hacer el diseño y arquitectura de nuestros programas teniendo en cuenta como los usuarios de ahora consumen la tecnología. El término programa se sustituye por el de aplicación. Para los ISV (Independent Software Vendors) implica que el modelo de distribución del software debe cambiar, incluso competir en el costo y buscar la adopción masiva.

Hay una discusión entre los ISV si el modelo de la actualización es todavía vigente, es decir, el de vender las nuevas versiones. Las apps móviles constantemente se están actualizando, casi automáticamente y sin costo. Para un vendedor de software tradicional eso es regalar el producto. Los tiempos cambian.

Por supuesto que no se pueden comparar el software especializado como el Office o Photoshop con un juego de Angry Birds, pero para estar competitivos, las casas de software deberán repensar sus modelos de negocio para sobrevivir este nuevo mundo.

El Windows 8 incorpora todos estos conceptos, las aplicaciones “estilo metro” tienen todas las características de aplicaciones móviles o de tablet, incluso con App Store. Microsoft cambiará sus paradigmas para poder competir con Apple. Muchos usuarios y desarrolladores ya están protestando, pero si se analizara la edad de éstos veriamos que son los usuarios más viejos acostumbrados a una forma de trabajar, los jóvenes verán esto de forma natural como una progresión de los dispositivos que ahora usan para entretenerse.

Así que la tendencia llegó para quedarse, no sera fácil adaptarnos pero aquí aplica la frase de renovarse a morir. Ustedes me disculparan me voy a echar otro jueguito de Angry Birds.

 

Haciendo mis pininos con WPF

WPF interfaz

Para el proyecto que estoy desarrollando decidí utilizar WPF en vez de Windows Forms. Mi idea es tener una interfaz atractiva y aprovechar el motor de gráficos que provee Windows. Recuerdo haber visto demos de WPF (antes se llamaba Avalon) y se veía impresionante como se podían manejar interfaces en tercera dimensión, algo que es totalmente innecesario pero se ve cool. Pensé que todo el mundo iba a brincar a desarrollar en WPF, así lo impulsaba Microsoft, pero la realidad es que muy pocas aplicaciones se crearon con esta tecnología, quizás porque el enfoque se ha dado en la web.

Regresando a mi proyecto, la necesidad era de hacerlo para Windows, por lo que fue una fácil decisión utilizar WPF. Sin embargo, como he comentado en otros blog posts, llevaba algunos años sin programar y WPF es otro paradigma. Al igual que ASP.NET, la parte visual está contenida en una capa, en el lenguaje XAML se almacena la interfaz gráfica y en otro archivo el código (o code behind). Esto permite que se puedan utilizar otras herramientas aparte de Visual Studio para diseñar la interfaz separando las tareas del diseñador del desarrollador si así se requiere.

WPF ha ido madurando desde que apareció con el .Net Framework 3.0, inició con un puñado de controles y ahora está más completo. También los terceros ofrecen muchas herramientas para dar más capacidades a WPF. En mi caso compré el suite de DevExpress de controles de WPF para gráficas y reportes.

Me he dado cuenta también que tiene sus limitaciones y sus detalles que me han hecho meterme horas a foros de ayuda para resolver los problemas. Pero lo que más me ha ayudado es el libro de WPF 4 Unleashed, es una guía muy completa para la parte vistosa de WPF, aunque mucha funcionalidad se puede incluir dentro de los XAML. Para la otra parte hay que usar Visual Basic o C#.

Estaré publicando una serie de artículos con técnicas y tips para el desarrollo con WPF, estoy seguro que alguien le servirán. Si eres experto en esta tecnología házmelo saber para también consultar de vez en cuando.

 

Beginning ASP.NET 3.5 In C# and VB

ASPNet 3.5

Cuando fui a la universidad el Internet apenas estaba floreciendo, estoy hablando de 1995 cuando usaba una interfaz de texto con comandos de Unix y el Mosaic te permitía ver algunos sitios web. Estudié ciencias computacionales pero no me tocó el desarrollo web, estabamos engranados en el Pascal y el C++. Ya en mi trabajo me tocó desarrollo en Visual Basic por más de una década y lo más que aprendí en relación al web fue hacer un par de sitios con FrontPage. Como han pasado los años.

En la actualidad desarrollar significa desarrollar para la web, es la plataforma que cualquiera puede acceder desde cualquier parte y hasta con dispositivos móviles. Aún con sus desventajas (interfaz gráfica y seguridad) las aplicaciones web son el presente y futuro de la computación.

Así fue que me di un tiempo para ponerme al día y compré el libro de Beginning ASP.NET 3.5: In C# and VB. Aunque ya tenía algunas nociones de ASP.NET, no me había adentrado en el código y el funcionamiento interno. ASP.NET hace su mayor trabajo en el lado del servidor específiciamente en el IIS lo cual me recordó al modelo cliente-servidor que vi en la universidad.

Conocí nuevos términos como rendering, postback y ViewState, así como el HTML, ese lenguaje que muchas veces había visto con palabras entre < >. Uno de los aspectos que me gustaron mucho fue el CSS, aunque no soy diseñador, es muy importante tener un aspecto uniforme y ordenado a lo largo de un sitio web y las hojas de estilo te permiten hacer eso y más. También comprendí mejor el Ajax para dar mejor funcionalidad a la aplicación web así como los MasterPages para mantener áreas de la página constantes a lo largo del sitio.

Como desarrollador para Windows se me hizo curioso ver que como se separaba el código HTML (para presentación) del código funcional (codebehind). En programación Windows solo veía un archivo, pero este modelo tiene mucho sentido ya que un diseñador podría trabajar en lo visual y el programador en lo funcional sin ningún problema.

Me gustó el libro porque tiene un buen balance entre lo teórico y práctico como muchos ejercicio y un proyecto a lo largo de las lecciones donde estas aplicando los conocimientos. Además todo el código está tanto en C# como VB. Como les había mencionado en otro post, me gusta más el Visual Basic así que hice todos los ejercicios en ese lenguaje.

Muy recomendable para un novato en desarrollo web y ASP.NET como yo.

 

¿Va Visual Basic de salida?

Basic Gorilla

Visual Basic es mi lenguaje favorito. Cuando lo aprendí se me hizo el código tan sencillo y lógico, claro que las aplicaciones que hacía eran de negocio y no necesitaba acceder al registro con ensamblador. Cuando dejé de usar Visual Basic 6 y aprender .Net no la pensé mucho y adopté Visual Basic .Net.

Por años ha habido discusiones en el ambiente del .Net si usar C# o VB.Net, siempre se me hicieron ociosas porque ambos lenguajes usan el mismo framework y cada ves son más parecidos, por lo que pienso que se reduce a una elección puramente de gusto, así lo manifiesta Microsoft.

A muchos programadores Visual Basic siempre se les hizo un lenguaje de juguete, se dejan llevar por el nombre, como que no es poderoso y sigue arrastrando palabras reservadas como “Dim” y “GoTo” del viejo Basic. Fue el último lenguaje en ser orientado a objetos, pero tampoco C fue creado orriginalmente para ser un lenguaje OO.

VB no ha tenido respeto pero fue el lenguaje más popular porque hizo que muchas personas sin conocimiento en programación programaran. Esto tuvo su lado obscuro porque permitió barbaridades en código que un lenguaje más estricto nunca permitiría. En .Net esto se fue reduciendo pero eras de la compatibilidad algunas técnicas (si se le puede llamar así) sobrevivieron.

Recientemente leo este artículo Shoud I abandon VB.Net? donde autor se cuestiona si VB es relevante desde el punto de vista que ahora el lenguaje más popular es C# y es más dificil contratar programadores de VB.Net, también hace la alusión de que Microsoft está empujando al desarrollo en C# y poco a poco dejando de soportar VB. Hay evidencia de esto, por ejemplo XNA solo se puede programar en C#.

Otra noticia importante es que el sistema de administración de contenidos (CMS) DotNetNuke anunció que dejará de desarrollar en VB.Net para irse a C# argumentando que es una desición de negocio motivada por el mercado de programadores y no por cuestiones técnicas. Esto es un golpe al VB.Net.

Por supuesto que Microsoft negará que abandonará VB.Net, seguirá soportándolo (como soportar un dolor) por muchos años seguirá a la par que C# en próximas versiones, pero me pregunto por cuanto tiempo, la respuesta es mientras lo sigan usando. Hay que recordar que ya no se soporta J# porque no lo adoptaron los programadores de Java.

En lo personal no me preocupa mucho la suerte de VB.Net, lo seguiré usando y si desaparece pues me brinco a C# o a otro lenguaje, lo importante es tener buenas bases de programación. Por lo pronto mis proyectos son en VB.Net.

Por cierto, la imagen es del juego “Gorilla” hecho en QuickBasic y que venía integrado en DOS.

Declaración de variables

camello

En programación las variables son importantísimas para almacenar valores que estaremos usando en nuestros procedimientos o funciones. Recuerdo cuando aprendí a programar con Pascal, la declaración de variables era rígida, se tenía que hacer forzosamente al principio y se tenía que especificar el tipo de dato, lo cual son buenas prácticas pero C era más flexible y no se diga Basic que hasta podías declarar sin variables sin tipo.

Los  lenguajes han evolucionado, pero las buenas prácticas continúan. Cuando me dediqué al Visual Basic en los noventas la convención para declarar variables más usada era la notación húngara (llamada así por que se le atribuye a Charles Simonyi un ingeniero de software húngaro). Esta notación consiste en tomar el tipo de dato abreviado con minúsculas y concatenarle un nombre significativo a la variable iniciando con una mayúscula. Por ejemplo, un entero que va a almacenar días podría declararse iDias. Esto se extendió a declarar también los controles u objetos, por ejemplo una caja de texto de nombre sería: txtNombre.

Estas convenciones para declarar se hicieron famosas con Visual Basic y Delphi. Con el auge de lenguajes orientas a objetos como Java, C# y VB.NET ya no es recomendable esta notación, es más común el uso del CamelCase y PascalCase que consiste en declarar la variables concatenando dos palabras sin espacios inicializando con mayúscula. Se refiere al camello porque puede tener una o dos jorobas, donde la mayúscula es la joroba. Por ejemplo: NombreEmpleado es PascalCase (dos jorobas, una variación de CamelCase) y diasSemana es CamelCase (una joroba). Otra buena práctica en la declaración de variables es usar CamelCase para variables privadas y PascalCase para variables públicas.

La necesida de especificar el tipo de dato de la variable desaparece porque los editores de código moderno incluyen Intellisense y otras herramientas de depuración que ayuda al programador a conocer perfectamente de que tipo es la variable en cuestión. Antes también era importante cuidar el tamaño del código y exigía aprovechar cada caracter, por lo que era común declaraciones como v1, i, j, etc. que no dicen nada para que se van a usar. Ahora es común tener variables como: contadorEmpleadosNomina aunque es larga, es muy explícita e incluso disminuye la necesidad de poner comentarios en el código.

¿Qué convenciones para declarar variables usas?

 

Hablando de Blogs en Dev3Cast

dev3cast

Ayer me dio mucho gusto participar en el podcast de la Comunidad TJ.Net llamado Dev3Cast. Este podcast lo iniciamos Gabriel Flores y un servidor para ahondar más en los temas que a los desarrolladores de software más les preocupa, tanto en cuestiones técnicas como laborales y hasta algo de negocios.

En esta ocasión hablamos de los blogs. A raíz de un artículo de Coding Horror que nos compartió Gabriel donde el autor argumentaba que para los desarrolladores el hecho de tener un blog les ayuda profesionalmente en el sentido de que mejoras sus habilidades para comunicación afinando la forma de redactar y de enseñar los conocimientos a los demás. Comparto esta idea totalmente, creo que un blog es un excelente repositorio de ideas y creatividad, además, como discutimos en el podcast puede haber beneficios en cuanto a posicionamiento como profesional.

Compartí el micrófono con Mario Chávez que ya conocía desde la comunidad, Mario Cornejo y Samuel Arellano que no tengo el gusto de conocerlos en persona pero ya había escuchado de ellos en las redes. Los puntos que vimos en el podcast fueron los siguientes:

  • ¿Qué y cómo publicamos en los artículos en los blogs?
  • ¿Cómo un blog puede hacernos mejor desarrollador y profesionista?
  • Herramientas para escribir y hospedar los blogs
  • ¿Cómo administrar los comentarios de blogs?
  • ¿Cómo consumimos el contenido de los blogs?

Puedes oir el podcast aquí.

 

Distribuyendo y monetizando aplicaciones en Windows Phone 7

Marketplace WP7

El pasado 2 de Octubre (no lo olvido) Gabriel Flores me invitó a dar un tema en un taller de la Comunidad TJ.Net en la UTT sobre el Windows Phone 7, sobre como los desarrolladores pueden crear sus aplicaciones y ganar dinero. Microsoft a finales del 2010 liberó su propuesta para móvil creando una plataforma nueva que no tiene que ver con Windows Mobile, aunque conservó el nombre de Windows en el producto (por familiaridad supongo), es una interfaz completamente innovadora y un modelo de negocios parecido al ecosistema de Apple con el iPhone.

Comentaba en la plática que Microsoft optó por un modelo negocio intermedio entre el iPhone y Android, por un lado Apple tiene un proceso muy controlado para aprobar aplicaciones que se venden en su App Store y por el otro Google dejó libre la distribución de aplicaciones para consumo de clientes de Android, ambos tienen sus ventajas y desventajas, pero desde el punto de vista del programador, es bueno tener una tienda construida para distribuir el producto y no preoparte por ese aspecto, sino en lo que sabemos hacer mejor.

Microsoft sabe que es clave para el éxito del Windows Phone las aplicaciones que tenga disponible, por eso ha hecho muy sencillo el desarrollo de las mismas utilizando Visual Studio con las plataformas XNA y Silverlight, todo esto se puede hacer gratis incluso si eres estudiante. Para poder distribuir las aplicaciones te deberás registrar como desarrollador, enviar la aplicaciones para su validación y una vez aprobada se hará disponible en el Marketplace a 30 mercados del mundo y muchos otros por venir. Además para hacer más atractivo el asunto, Microsoft te regala un Windows Phone si desarrollas 3 aplicaciones y se publican en el Marketplace.

Hay muchos aspectos muy atractivos para desarrollar en esta nueva plataforma y que decir del teléfono, las personas que lo han usado le dan muy buenas referencias. Ha tenido buena recepción en el mercado vendiéndose 2 millones de unidades en el primer cuarto de año de lanzamiento, así que es muy probable que esté a nivel competitivo con los demás smartphones. Hago disponible la presentación para que conozcas las ventajas de Windows Phone 7.

 

Bizspark apoyo de Microsoft a los Emprendedores

MS_Bizspark

Comentaba en el post anterior sobre los recursos que tiene que buscar un emprendedor cuando va iniciando el negocio. Además de hacer realidad la idea millonaria, tiene que ver como obtener las herramientas para generar el producto. Muchas veces tiene que ver con equipo, otras veces con capacitación o contratación de personal. En el caso de los desarrolladores requerimos software y apoyo técnico. Ahí es donde entra el programa de Microsoft denominado BizSpark.

BizSpark está diseñado para dar ese empujón al desarrollador en generación y venta de proyectos de software en tres vertientes:

  • Software: obtienes licencia de MSDN gratis la cual contiene las herramientas como Visual Studio y los sistemas operativos para probar.
  • Soporte: acceso a redes de desarrolladores para auxilio en problemas técnicos así como capacitación.
  • Visibilidad: conexión con inversionistas, clientes, socios y la prensa, para mejorar las probabilidades de éxito de tu proyecto.

Esta iniciativa me pareció ideal para mí. Es muy fácil entrar al programa, solo debes de llenar un formulario donde indiques que vas comenzando en el negocio, tener una página con dominio propio y esperar a que aprueben tu solicitud. Después de unos días ya fui aprobado en el programa y gozaré de los beneficios del mismo. Definitivamente es una chispa para tu negocio.

Agradezco a Marco Antonio Macías encargado del programa en México por su apoyo.