Ayer estuve brevemente en el arranque de Google Developer Day en Buenos Aires, que continúa hoy (ya que a pesar del nombre son dos días). Fue bueno, como siempre, encontrar amigos y compartir alguna novedades.
La charla de apertura se transmitió en vivo a través de YouTube y afortunadamente ya está disponible para que disfruten aquí mismo quienes no llegaron a tiempo.
La agenda completa incluye temas como Google TV, Android, Chrome, App Engine, HTML5, oAuth, OpenID, Google+, App Script, YouTube Live Streaming, y otros temas.
Espero que pronto estén disponible el resto de las sesiones y pueda compartirlas.
Les dejo el video de la apertura, de aproximadamente una hora y cuarto de duración. Pueden saltear los primeros minutos de la cuenta regresiva, y queda sólo una hora.
Esta semana arrancó la conferencia //build/ (nuevo nombre del tradicional PDC de Microsoft) y el foco principal fue el lanzamiento (en versión preliminar para desarrolladores) de Windows 8 y su nuevo modelo de programación. Para quienes no las vieron, dejo debajo los videos de las charlas de apertura del día 1 (mayor foco en Windows 8) y el día 2 (mayor foco en desarrollo).
Uno de los anuncios más polémicos o complejos fue el nuevo modelo para desarrollar aplicaciones Windows que puedan ser distribuidas a través del próximo Market, siguiendo el modelo popularizado por Apple y al que ya se ha sumado toda la industria, incluyendo Windows Phone.
El siguiente es el diagrama más visto en los últimos días mostrando cómo queda el stack de Windows, y debe tenerse en cuenta que es un diagrama aproximado, porque obviamente simplifica muchas cosas para servir como modelo introductorio:
Básicamente, la mayor novedad está en la sección verde del diagrama (aplicaciones estilo Metro). Este tipo de aplicaciones serán las que puedan distribuirse a través del Market, y su particularidad es que no pueden acceder al API completa de Win32, sino que dialogan contra el API de WinRT, la nueva estrella del mundo Microsoft.
En principio, WinRT es una buena idea. Lo que hace es proveer un contexto de ejecución seguro (similar al de un navegador) para aplicaciones Metro (insisto en que el modelo anterior existe, pero NO se puede distribuir por el Market). Lo que se logra con esto es que todas esas aplicaciones tienen acceso mediado y controlado a los recursos físicos del sistema, y son muchísimo más seguras, aun cuando pueden escribirse básicamente bajo tres paradigmas:
En .NET (utilizando el mismo CLR pero con un perfil especial que restringe el API disponible, similar a lo que sucede al escribir aplicaciones en Silverlight), utilizando XAML para el diseño de las interfaces.
En código nativo (C/C++) utilizando XAML también, pero sin acceso a Win32, sino a WinRT.
En JavaScript, utilizando HTML/CSS para el diseño de interfaces.
Otra característica importante de WinRT es que todas sus API tienen interfaces asincrónicas, salvo las que tienen tiempo de respuesta asegurado inferior a 50 milisegundos. El objetivo de esa decisión es mejorar la respuesta de Windows sobre todo en la interacción con el usuario. Todos sabemos que es normal en Windows tener demoras en el explorador o dentro de las aplicaciones, y mirar por unos segundos la famosa ruedita girando. Con el advenimiento de las interfaces táctiles (uno de los temas más fuertes en Windows 8) esos tiempos de respuesta no son viables. Por eso es importante volver a un modelo más similar al de programación en la web (con JavaScript) basado en operaciones que devuelven callbacks, que liberan el hilo de ejecución hasta que la operación termina.
La contra de este modelo en general es que el nivel de complejidad para manejar callbacks anidados y el control de errores se eleva considerablemente. No es casualidad entonces que tanto en .NET 4.5 como en JavaScript veamos crecer el uso de patrones asincrónicos (en C# 5 a través de las nuevas cláusulas await y async, heredadas de F#) y en JS con la creciente adopción de promesas (utilizando las abstracciones .then() y .when() ) en bibliotecas como jQuery, Dojo y otras derivadas de CommonJS.
Entre otros temores surgidos a partir de las presentaciones del nuevo modelo, está la confusión sobre si .NET ha perdido importancia. Personalmente creo que no, pero Microsoft ha vuelto a las fuentes en algunos sentidos, volviendo a poner énfasis en el código nativo para aplicaciones de alto rendimiento. Los lenguajes manejados dan mayor productividad en general, pero sólo en C/C++ se pueden crear aplicaciones de muy alto rendimiento en velocidad, consumo de recursos e incluso consumo de energía. Estos tres factores no eran tan importantes hasta hace un par de años porque pensábamos nuestra aplicaciones para correr en computadoras de escritorio o servidores, pero el desarrollo de los dispositivos móviles (teléfonos, tabletas, y otros) ponen de nuevo foco en ellos. Y en el otro extremo, aplicaciones del lado del servidor que ahora tenemos que pensar para miles de usuarios concurrentes hacen que tengamos que el ahorro de recursos en alta escala financie con creces el tiempo extra de desarrollo.
En fin, quedan muchos temas disparados que espero seguir tratando más adelante. Cualquier comentario o pregunta son bienvenidos. Les dejo los videos para que se diviertan.
En esta nueva sesión de programación de a pares me sumo a Emilio Gutter para hacer un ejercicio utilizando Java.
Conocí a Emilio a fines del 2006 cuando fuimos compañeros de equipo durante el curso de Certified Scrum Master dado por Tobias Mayer. Nos divertimos mucho durante ese curso, y varios de los que pasamos por ahí nos mantuvimos en contacto después a través de una primer lista de distribución que fue uno de los puntos focales de donde surgió el grupo de organizadores de la primer conferencia de la serie Ágiles: Ágiles 2008.
Emilio lleva más de 10 años trabajando en desarrollo de software y es un desarrollador trotamundos que ha trabajado en proyectos en Argentina, Brasil, UK, USA, Francia, Rumania y Bulgaria, por lo menos. Actualmente es uno de los líderes de su consultora 10pines, que brinda servicios de desarrollo, entrenamiento y coaching, con fuerte foco métodos ágiles, incluyendo un alto compromiso con la calidad y la cultura organizacional.
En el video podrán ver cómo hacemos un ejercicio de diseño en Java, usando Eclipse con JUnit 4 y la biblioteca de mock objectsmockito y planeábamos utilizar también harmcrest,una biblioteca de matchers (o predicados) muy útil para realizar aserciones en las pruebas unitarias, pero no alcanzó el tiempo esta vez, así que quedará para más adelante.
Les dejo el video (de aproximadamente 25 minutos) y espero que lo disfruten:
El evento está aun en proceso de organización final, y hasta el 23 de septiembre está abierta la llamada a propuestas para disertantes en los siguientes formatos:
Charlas y Postmortems
Workshops (talleres participativos)
Debates on‐stage
Mesas redondas
Y ésta es la lista sugerida de áreas temáticas (aunque no son excluyentes):
Arte
Negocios y Producción
Game Design
Música y Sonido
Programación
Las propuestas se reciben en línea en esta página.
Según la definición de los organizadores:
EVA es un espacio de encuentro, diálogo y capacitación. Se trata del evento más importante de la industria local de videojuegos, que año tras año crece en público, invitados y sponsors. Este año, el foco estará puesto en analizar cómo llegar a nuestro primer blockbuster hasta simplemente tener un valor diferencial ofreciendo servicios de calidad superior.
Por lo que los principales ejes temáticos serán:
Creando Valor.
Generando marcas de entretenimiento.
Agregando valor en los servicios de desarrollo.
Futuro de los videojuegos.
Habrá workshops, mesas redondas, conferencias, talleres, business rounds, charlas y expofloor. Se tratarán temas que, de una manera amplia, expandan los horizontes de las empresas nacionales a partir de la participación de importantes Keynote Speakers internacionales, aportando conocimiento y experiencia.
Por ahora el primer invitado especial confirmado es Jonathan Blow, creador del premiado juego Braid.
Mi amigo y compañero de trabajo Charly Páez compartió el otro día este documento que me parece algo fundamental para todo desarrollador hoy día. Está en inglés, pero no podía dejar de compartirlo con ustedes.
Como se explica en el prefacio, gran parte de este documento surge de la cuidadosa investigación de la desarrolladora israelí Tali Garsiel sobre las características internas y análisis del código de WebKit (Safari y Chrome) y Gecko (Firefox) los motores de presentación de código abierto que hoy suman aproximadamente un 60% del uso de la web. Aunque Internet Explorer no puede ser analizado de la misma manera, los lineamientos generales de su arquitectura seguramente no difieren fundamentalmente de lo que este documento cubre.
El contenido completo cubre los siguientes procesos, basados en el flujo típico debajo (dejo muchos términos si traducir para evitar confusiones):
El motor de rendering
Parsing y construcción del DOM (HTML, CSS, Scripts)
Construcción del árbol de render
Layout (distribución de los elementos)
Painting (la aparición real de los elementos en pantalla)
Cambios dinámicos
Los hilos del motor de rendering
Modelo visual de CSS2
Todo comienza con la descripción de alto nivel de la estructura de los navegadores, resumida en el siguiente diagrama:
El trabajo es bastante extenso y detallado, pero nuevamente lo recomiendo muy especialmente. No importa aprender todo ese nivel de detalle, pero leerlo detenidamente nos permite retener al menos algunos conceptos generales que nos ayudarán a comprender más fácilmente situaciones comunes en el desarrollo web.
CodeCamp, el evento anual de desarrollo sobre tecnología Microsoft más grande del mercado local, llega este año el 15 de octubre, el sábado siguiente a la realización de Agiles 2011.
Aunque no está anunciado en el sitio la sede (aún) la sede será la UAI (Universidad Abierta Interamericana), en Av. San Juan 951, Capital Federal.
El evento, como siempre, será gratuito, pero requerirá inscripción previa, la que aún no está abierta, así que a estar atento al sitio web, o al twitter oficial.
Para que vayan teniendo una idea del contenido posible de la conferencia, les anticipo los títulos y presentadores de las propuestas presentadas. Obviamente, queda por delante el proceso de selección, así que no todas quedarán en el programa final, pero pueden darse una idea general de los temas que están dando vueltas, e ir preparándose para ver y preguntar.
Construyendo servicios web con WCF Web Apis - Por Pablo Mariano Cibraro
Introducción a Node.js - Por Pablo Mariano Cibraro
SQL Denali (El futuro aqui) - Por Maximiliano Accotto
Herramienta para desarrollo Juneau (el reemplazo de Visual Studio for Database) - Por Maximiliano Accotto
Tunning de base de datos - Por Maximiliano Accotto
Desarrollando Social Games en Azure - Por Angel J Lopez
Jugando con Kinect desde .NET - Por Nicolas Padula
Mangos y Ventanas - que hay de nuevo en WP7.1 - Por Jonas Stawski, Miguel Angel Saez
Windows 7+1 on the rocks - Por Miguel Angel Saez, Mariano Rempel
Clean Code - Por Eric Delahaye
Introducción a las Comunicaciones Unificadas - Por Pablo Vernocchi
Exchange 2010 - Hardware virtualizado vs Hardware físico - Por Pablo Vernocchi
Exchange 2010 High Availability y Site Resilience - Por Pablo Vernocchi
Además de tirar código - Por Martin Salías
Mono: .NET en todas partes - Por Martin Salías, Carlos Paez
Windows Phone 7 "Mango" y los sistemas empresariales - Por Carlos Alejandro Pérez
El regreso de SQL Server CE a los móviles - Por Carlos Alejandro Pérez
Introducción a SharePoint 2010 como Plataforma de Colaboración - Por Pablo Alejandro Fain
Implementación de SharePoint Server 2010 para humanos - Por Pablo Alejandro Fain
Entity Framework 4.1 - Code First desde las trincheras. - Por Mariano Sanchez
Knockout JS: simplificando el desarrollo de UIs dinámicas con javascript y ASP.NET MVC - Por Ruben Altman, Adrián Eidelman
Desarrollo y testeo modular de interfaces HTML5 / MVC - Por Santiago Bustelo
Automatizando el testing en .NET - Por Adrián Eidelman, Ruben Altman
Pasado, presente y futuro de C++ - Por Rodolfo Finochietti
Mobile Web Sites - Por Rodolfo Finochietti
Web Sites 100% en JavaScript - Por Rodolfo Finochietti
Una vuelta por la nueva plataforma de Desarrollo que se viene! - Por Johnny Halife
Juega con HTML5 - Por Matias Iacono, Patricio Santiago Marrone
Generación espontánea con T4 - Por Matias Iacono
Mirando el espejo - Por Matias Iacono, Boris Angonoa
Usando MongoDB desde C# - Por Ruben Altman, Román Gorojovsky Sánchez
Un entorno práctico de desarrollo ágil - Por Carlos Peix
Desarrollo de soluciones geo-espaciales con SQL - Por Andrés Aiello
Gestionando grandes volúmenes de datos con SQL 2011 - Por Pablo García
Creando aplicaciones a la velocidad de la luz: desarrollo con Visual Studio 2010 Lightswitch - Por Diego Fidel Ferreyra
Desarrollo de Videojuegos Movilizados - Por Sebastian Miserendino
El Escritorio del futuro - Por Augusto Alvarez, Alberto Ortega
FX para tu escritorio con Remote Desktop Services - Por Augusto Alvarez, German Lagomarsino
Estandarización de servidores Windows Server 2008 R2 + herramientas gratuitas - Por Augusto Alvarez, Alejandro Barrionuevo
¡A mover el cuerpo con Kinect! - Por Diego Sisto, Fernando Kahan
Tu primer webpart en Sharepoint 2010 - Por Alan Scheinkman
Que no te ataquén!!! Desarrollando código seguro en SQL - Por Jose Mariano Alvarez, Andrés Aiello
Gestión de la configuración con NuGet y Git - Por Dario Seminara, Nicolas Paez
Todo sobre FileStream y FileTable (SQL Denali) - Por Maximiliano Accotto
De 0 a 100 con Windows Phone 7 - Por Federico Lois, Daniel Rodolfo Iglesias
NoSQL, Map-Reduce y otras yerbas! Programando con RavenDB. - Por Daniel Rodolfo Iglesias, Federico Lois
Configuración y Escenarios de Client Access Server en Entornos de Migración - Por Rodrigo de los Santos
Microsoft e IPV6 - Por Rodrigo de los Santos
Mitos y Leyendas de Windows Phone 7: Sacale el jugo a tu Smartphone - Por Brian Litwak, Ignacio Raffa, Federico Boerr
Seguridad en aplicaciones Web - Por Carlos Peix
TDDeando Aplicaciones JavaScript - Por José Fernando Romaniello
REST: Cómo ordenar café utilizando las nuevas WCF Web API? - Por José Fernando Romaniello
Realidad Aumentada: De qué se trata y, ¡manos a la obra! - Por Boris Angonoa, Matias Iacono
Windows Azure AppFabric o cómo desarrollar aplicaciones para la nube y conservar el pelo - Por Leandro Boffi
Implementando soluciones Sharepoint 2010 en el mundo real - Por Soledad Pano
Enamorándose de Knockout.js - Por Leandro Boffi
Haciendo WCF simple - Por Mauricio Gentile
Desarrollando buenas prácticas con NuGet - Por Mauricio Gentile
Conoce las mejores prácticas en el uso de la API de SharePoint - Por Santiago Giovannini
Consejos para organizar el contenido en tu aplicación de SharePoint siguiendo las mejores practicas - Por Santiago Giovannini
Paseando por Denali, la nueva versión de SQL Server - Por Adrian Gabriel Lopez
Haciendo BI rápido y flexible - Por Adrian Gabriel Lopez
Aplicaciones ricas en datos sacándole el jugo a SQL Server Denali - Por Adrian Gabriel Lopez
Sharepoint 2010, manual para programadores - Por Hernán Veiras
Dirigiendo la Orquesta con WF 4.0 - Por Hernán Veiras
Compilando en la UI con S# - Por Hernán Veiras
Mi primer juego XNA para WP7 y XBOX 360 - Por Pablo García
Extendiendo las fronteras de SharePoint 2010: Cómo Windows Phone 7 puede ser un perfecto aliado de SharePoint. - Por Nicolas Ibarra Salazar
Creando aplicaciones móviles para la nube: Windows Phone 7 + Windows Azure - Por Nicolas Ibarra Salazar
Desarrollando aplicaciones asincrónicas en .Net. - Por Silvio Massari
Integrando SharePoint 2010 con Windows Azure: Un nuevo mundo de posibilidades para soluciones empresariales - Por Nicolas Ibarra Salazar
MongoDB a todo pulmón - Por Silvio Massari
Patrones de diseño NoSql - Por Silvio Massari
Agile Automation Testing con BDD: un poco de Cucumber, Specflow, Watin y estamos! - Por Patricia Coronel
SharePoint 2010 en la nube: Introducción a Office 365 y desarrollo sobre SharePoint Online - Por Nicolas Ibarra Salazar
Mejor MVC – Movilizándote con jQuery Mobile - Por Ignacio Baumann Fonay, Fernando Antivero
Microsoft Media Platform Content Manager (open source) - Por Ignacio Jonas, Ezequiel Aranda
El futuro de Parallel Programming en Microsoft .NET Framework - Por Christian Carnero
A developer overview of Windows Phone 7.1 - Por Christian Carnero
Soy un desarrollador .NET pero tengo un IPhone - Por Christian Carnero
Como conseguir pareja en una tarde de sábado con HTML5 - Por Pablo Zaidenvoren, Mauro Gandelli, Maximiliano Garcia Rozado
Wordpress en Windows Azure - Por Alejandro Banzas
Integrando redes sociales en proyectos corporativos - Por David Balogh
Reactive Extensions en el Mundo Real - Por Gustavo Javier Machado
Introduccion a Windows Azure AppFabric Service Bus - Por Gustavo Javier Machado
REST Services "a la carta" - Por Gustavo Javier Machado
Una vuelta por F#, Un lenguaje funcional en .NET - Por Gustavo Javier Machado
MVC3 Tips y buenas prácticas para el mundo real - Por David Balogh
RavenDB, No solo una base de documentos para .NET - Por David Balogh
Ya sé, es solo NHibernate compilado, pero me gusta - Por David Balogh
Full text search en 60 minutos - Por David Balogh
Testeo, luego existo - TDD desde cero - Por David Balogh
Creando sitios de internet con SharePoint 2010 - Por Mariano Escurra, Soledad Pano
Mejores prácticas utilizando Javascript y JQuery en SharePoint 2010 - Por Soledad Pano, Mariano Escurra
Escalabilidad para sitios de alta demanda en Cloud Computing - Por David Balogh
Datos en la nube: colas, caché, topics y otras yerbas - Por Leandro Adrián Díaz Guerra
Explotando el verdadero potencial de IIS con Windows Server AppFabric - Por Leandro Adrián Díaz Guerra
Haciendo inteligencia en tiempo real con StreamInsight - Por Leandro Adrián Díaz Guerra
Una Web en pocos minutos con Nuget y Scaffolding - Por Moisés Rivas, Sebastián Henzenn
Comunicaciones Unificadas - Por Matías Alfaro
TRANSPHONERS te llevamos al futuro! - Por Guillermo Bellmann, Ivana Tilca
La llamada a ponencias para el Track de Investigación cierra hoy mismo (lamento no haber publicado esto antes) pero aún se pueden proponer Sesiones Técnicas hasta el 3 de octubre (queda casi un mes).
Por ahora el único invitado especial confirmado es Ian Piumarta, pero seguramente la lista de celebridades se incrementará a medida que se acerque la fecha, como siempre sucede.
Como regalo, les dejo la sesión del Maestro Angel “Java” López (a la sazón, oriundo de Quilmes) durante Smalltalks 2010. Como la conferencia es internacional, las sesiones se presentan en inglés, aunque en este caso se presentó en “Anglish”, como el orador explica al comienzo, antes de sumergirse de lleno en AJTalk, su intérprete del lenguaje Smalltalk sobre el CRL de .NET. Altamente recomendable: