Bilbao Mobile Open Space 2011

Presentación

El auge que los dispositivos móviles están teniendo en los últimos tiempos invita a pensar que va a ser uno de los mercados predominantes en el futuro próximo. La clara apuesta que están haciendo grandes compañías, como Google o Microsoft no hacen más que reafirmarlo.

Conocer como monetizar nuestras aplicaciones, que tecnologías se están usando o están por venir, que alternativas tenemos a la hora de desarrollar para móviles, que alternativas de negocios existen… son preguntas comunes en el desarrollo móvil.

Para ello, el Sábado 7 de Mayo de 2011, el grupo de la zona norte de Agile-Spain en colaboración con PlainConcepts, organizamos un Open Space sobre desarrollo para dispositivos móviles en la Facultad de Ingeniería de la Universidad de Deusto en Bilbao. Con el objetivo de compartir experiencias en el desarrollo de aplicaciones en dispositivos móviles y fomentar la colaboración entre comunidades.

Ingeniería Deusto

¿Qué es un Open Space?

Un Open Space es un formato de conferencia abierta, donde no existe una agenda fija, si no que esta se genera y se define entre todos los asistentes al evento. Cualquier persona puede proponer una sesión, tanto si es un tema que domina como un tema del que le gustaría aprender más, e independiente del formato que tenga la misma (una sesión técnica, de debate, magistral…)

Si quieres conocer más detalles sobre el formato visita este enlace

¿Por qué me interesa asistir?

Asistir al Open Space puede ser una buena oportunidad para:

  • Aprender sobre desarrollo móvil
  • Conocer las tendencias del mercado
  • Intercambiar experiencias y conocer otras personas con tus mismos intereses
  • Aprender sobre metodologías ágiles de desarrollo de software y gestión de proyectos
  • Hacer networking

¿Donde se celebra?

El evento tendrá lugar en las instalaciones de la Facultad de Ingeniería de la Universidad de Deusto, a la que queremos agradecer encarecidamente que nos cedan sus aulas.

¿Cuanto cuesta?

¡Absolutamente nada! El Bilbao Mobile Open Space es un evento sin ánimo de lucro, totalmente gratuito, así que no hay excusa para no venir!

Lo único que se necesitan son ganas de aprender, compartir experiencias y pasarlo bien!!

¿Que horario tendrá?

El evento durará durante todo el día del sábado. Empezaremos a las 9 de la mañana y acabaremos sobre las 19.

¿Dónde puedo seguir informado?

Actualizaremos esta web con las novedades a medida que se produzcan. También nos podéis seguir en la cuenta de twitter @agileNorte.

Atención: Inscripciones abiertas

Inscríbete a través de nuestro Eventbis: http://www.eventbis.com/bmos

Microsoft Community Contributor Award 2011

mcc_email_banner

Hola a todos!

Esta mañana me he despertado con este correo en mi bandeja de entrada:

Dear Josue Yeray,

Congratulations! We’re pleased to inform you that your contributions to Microsoft online technical communities have been recognized with the Microsoft Community Contributor Award. 

The Microsoft Community Contributor Award is reserved for participants who have made notable contributions in Microsoft online community forums such as TechNet, MSDN and Answers.  The value of these resources is greatly enhanced by participants like you, who voluntarily contribute your time and energy to improve the online community experience for others.

 Es muy reconfortante que Microsoft reconozca el esfuerzo y dedicación que yo y tantos otros le damos a las comunidades técnicas para hacerlas cada día mejores y más útiles a todo el mundo.

Muchas gracias a todos, por que sin vosotros esto no tiene sentido.

Un saludo y Happy Coding!

[WP7] Libro por capítulos: Programar en Silverlight para Windows Phone 7, segundo capítulo

Hola a todos!

Como lo prometido es deuda, aquí está el segundo capítulo del libro sobre desarrollo de aplicaciones Silverlight para Windows Phone 7 que estoy escribiendo.

En este capítulo nos centramos en los conceptos de Silverlight, Visual Studio 2010 y Expression Blend 4 que debéis conocer para realizar una aplicación Windows Phone 7, he intentado que sea lo más practico posible y que junto a cada parte de teoría tengáis un ejemplo de uso, en total he creado 23 ejemplos detallados de cada cosa que se explica en el capítulo, este es el índice (os dejo también el enlace al primer capítulo por si os lo habéis perdido):

ACTUALIZACIÓN:

En Azul están resaltadas las nuevas secciones dedicadas a Windows Phone Mango:

1º Capítulo: Conociendo Windows Phone 7

2º Capítulo: Introducción a Silverlight para Windows Phone 7

1.- Introducción.

2.- Todo es XAML.

3.- Marcos, páginas y elementos.

3.1.- Marcos.

3.2.- Páginas.

3.3.- Elementos.

3.3.1.- UIElement.

3.3.2.- FrameworkElement.

3.3.3.- Control.

4.- Poniendo orden en nuestra pantalla.

4.1.- Propiedades adjuntas.

4.2.- Canvas.

4.3.- StackPanel.

4.4.- Grid.

4.4.1.- Tamaño en Columnas y Filas.

5.- Recursos, estilos y plantillas.

5.1.- Recursos.

5.2.- Estilos.

5.2.1.- Estilos en Expression Blend para Windows Phone.

5.2.2.- Estilos Implícitos en Windows Phone Mango

5.3.- Plantillas.

5.3.1.- Estados Visuales.

5.3.2.- Plantillas en Expression Blend para Windows Phone.

5.3.3.- Plantillas implícitas en Windows Phone Mango

5.4.- Jerarquía de cercanía en estilos y plantillas

6.- Conclusión del capítulo.

 

Espero que disfrutéis tanto leyéndolo como he disfrutado yo escribiéndolo, a continuación os dejo un enlace para descargar el libro y otro para descargar una carpeta comprimida con los 23 ejemplos, nos vemos el mes que viene con un nuevo capítulo:

ACTUALIZACIÓN:

Ya podéis descargar este capítulo en versión MobiPocket compatible con ebooks (iRiver, Kindle, Papyre…) aquí Espero que lo disfrutéis!!

ACTUALIZACIÓN WINDOWS PHONE “MANGO” :

Ya está disponible la versión actualizada al nuevo SDK de Mango del capítulo cubriendo las nuevas características de Mango, en el zip podéis encontrar el capítulo en pdf y en .mobi para eBooks y todos los ejemplos:

Un saludo, espero que os guste y Happy Coding!

[Silverlight 5] Novedades: Plantillas de Datos implícitas.

Hola a todos!

Esta semana se ha presentado en el MIX de Las Vegas la primera Beta de la nueva versión de Silverlight: Silverlight 5.0.

Esta nueva versión nos trae muchas novedades y por algún sitio hay que comenzar a revisarlas, así que he decidido empezar por el nuevo soporte para plantillas de datos implícitas, que hasta ahora solo existía en WPF.

Para ponernos en contexto, todos los que hemos trabajado con Silverlight o WPF conocemos las plantillas de controles y que existen dos formas de aplicarlas a nuestros elementos: de forma explicita, indicando en la propiedad Template de nuestro control la Key del ControlTemplate que hemos creado o de forma implícita, esto es, indicando en el momento de la plantilla de control el tipo de elemento al que va dirigido.

La ventaja de usar el método implícito a la hora de crear nuestras plantillas de controles es que podemos asegurarnos de que todos los elementos de un mismo tipo tendrán la misma apariencia y que no tenemos que ir elemento por elemento aplicando la plantilla que deseamos que usen.

Hasta ahora, en Silverlight, con las plantillas de datos solo teníamos la opción de asignación explícita, es decir, debíamos crear la plantilla de datos, asignarle un key y luego en el control que quisiésemos que la usase aplicar la plantilla.

En esta nueva versión de Silverlight vamos a tener la posibilidad de aplicar plantillas de datos de forma implícita, simplemente definiendo a qué tipo de dato se aplica sin tener que indicar nada más en los elementos que muestren nuestros datos.

Vamos a ver un sencillo ejemplo.

He creado una aplicación Silverlight 5 con un Listbox que va a mostrar información de clientes y al seleccionar uno las ordenes de compra que tiene ese cliente asociadas, he empezado por crear el layout de la pantalla, lo más sencillo posible:

    <Grid x:Name="LayoutRoot">
        <Grid.Background>
            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <GradientStop Offset="0" Color="white"></GradientStop>
                <GradientStop Offset="1" Color="LightBlue"></GradientStop>
            </LinearGradientBrush>
        </Grid.Background>
        <Grid.RowDefinitions>
            <RowDefinition Height="45"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        
        <StackPanel Orientation="Horizontal">
            <TextBlock VerticalAlignment="Center" Text="Mostrar datos de tipo:" Margin="10"></TextBlock>
            <Button Name="CustomerData" Content="Customer" Width="80" Margin="10" Click="CustomerData_Click"></Button>
        </StackPanel>
        
        <ListBox Name="lstData" Grid.Row="1" Margin="10" Width="{Binding}" SelectionChanged="lstData_SelectionChanged">
            <ListBox.Effect>
                <DropShadowEffect Opacity=".4"></DropShadowEffect>
            </ListBox.Effect>
        </ListBox>
        
    </Grid>

 Y el resultado es:

image

 

 

 

 

 

 

 

 

 

 

 (Nota: por motivos de simplificar al máximo el código y centrarnos en el tema del artículo, no he usado MVVM para la capa de presentación, no hagas esto en una aplicación real o Dios matará un gatito por cada página con code behind que generes!!)

He creado dos clases que servirán como fuente de nuestros datos:

Customer:

public class Customer
{
    public int CustomerId { get; set; }

    public string CustomerName { get; set; }

    public string CustomerPhone { get; set; }

    public string CustomerPhoto { get; set; }

    public List<Order> CustomerOrders { get; set; }
}

 

Order:

public class Order
{
    public int CustomerId { get; set; }

    public int OrderId { get; set; }

    public DateTime OrderDate { get; set; }

    public Double OrderAmount { get; set; }
}

 Una vez que tenemos creada nuestra infraestructura, ahora vamos a definir una plantilla de datos que nos muestre los clientes, algo así:

image

Y otra plantilla que muestre las ordenes de un cliente seleccionado:

image

 

Estas plantillas se definen como cualquier otra, normal y corriente, simplemente en vez de especificar una Key, especificamos un nuevo atributo de Silverlight 5 llamado DataType, indicando en este atributo el tipo de datos que queremos que muestre, en mi caso la plantilla del tipo de dato customer está definida así:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:SL5DataTemplates">

    <DataTemplate DataType="local:Customer">
        <StackPanel>
            <Border BorderBrush="Blue" BorderThickness="2" CornerRadius="5">
                <Border.Background>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                        <GradientStop Offset="0" Color="Azure"></GradientStop>
                        <GradientStop Offset="1" Color="LightBlue"></GradientStop>
                    </LinearGradientBrush>
                </Border.Background>

                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="96"></ColumnDefinition>
                        <ColumnDefinition Width="130"></ColumnDefinition>
                        <ColumnDefinition Width="*"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height=".3*"></RowDefinition>
                        <RowDefinition Height=".3*"></RowDefinition>
                        <RowDefinition Height=".3*"></RowDefinition>
                    </Grid.RowDefinitions>
                
                    <Image Margin="10" Grid.Column="0" Grid.RowSpan="3" Width="96" Height="96" Source="{Binding CustomerPhoto}" Stretch="Fill"></Image>
                
                    <TextBlock Grid.Column="1" Grid.Row="0" Text="Customer ID:" FontWeight="Bold"></TextBlock>
                    <TextBlock Grid.Column="2" Grid.Row="0" Text="{Binding CustomerId}"></TextBlock>

                    <TextBlock Grid.Column="1" Grid.Row="1" Text="Customer Name:" FontWeight="Bold"></TextBlock>
                    <TextBlock Grid.Column="2" Grid.Row="1" Text="{Binding CustomerName}"></TextBlock>

                    <TextBlock Grid.Column="1" Grid.Row="2" Text="Customer Phone:" FontWeight="Bold"></TextBlock>
                    <TextBlock Grid.Column="2" Grid.Row="2" Text="{Binding CustomerPhone}"></TextBlock>
                </Grid>
            </Border>
        </StackPanel>
    </DataTemplate>

 

Como podéis ver es una plantilla de datos normal y corriente salvo por la declaración, en la que he establecido el tipo de dato al que va dirigida (en negrita), he realizado lo mismo con la plantilla de pedidos, indicandole el tipo de datos Order en vez de customer.

Si ejecutamos la aplicación de ejemplo veréis que al pulsar el botón Customers se carga una lista de clientes y al seleccionar uno cambiamos a ver sus pedidos, lo cual cambia automáticamente la plantillas de datos que se está usando, si volvemos a pulsar el botón customers volveremos a usar la plantilla correspondiente y todo esto sin tener que preocuparnos de gestionar la plantilla activa en cada momento.

 Las plantillas de datos implicitas es una nueva característica que, aunque no tan espectacular como el soporte 3D, mejorará nuestra vida como desarrolladores, nos ahorrará líneas de código y dolores de cabeza y dejará que nuestro código XAML sea todavía si cabe más limpio, ya no establecemos o creamos plantillas de datos para mostrar en un control en concreto, ahora vamos a crear plantillas de verdad de “Datos” pues se aplicarán a un tipo de datos en concreto, independientemente del elemento que muestre este tipo de datos.

Os dejo como siempre una aplicación de ejemplo totalmente funcional, necesitáis la beta de Silverlight 5 para ejecutarla (podéis descargarla aquí):

Un saludo a todos y Happy Coding!

[GUIA DE ESTUDIO] 71-599 Pro: Designing and Developing Windows Phone 7 Applications

Hola a todos!

El 19 de este mes podemos empezar a examinarnos del examen 71-599 beta, el cual una vez aprobado nos dará la certificación MCPD de Windows Phone 7, yo tengo el examen el mismo día 19 a las 9 de la mañana, así que ya os contaré (sin desvelar preguntas que eso no se puede jeje) que tal me fue y como lo vi.

Pero mientras tanto como es mucho material el que hay que preparar en poco tiempo y no existe un libro para estudiar oficialmente, os voy a dejar enlaces que creo que os pueden ayudar a cada parte de la certificación, ordenados según Microsoft Training, algunos enlaces están en ingles, pero como el examen es en ese idioma supongo que no tendréis problemas con el:

Designing Data Access Strategies (19%)

Designing and Implementing Notification Strategies (17%)

Working with Platform APIs, Tasks, and Choosers (21%)

Designing the Application Architecture (21%)

Designing the User Interface and User Experience (23%)

A parte de estos recursos, podéis ver los materiales de mi charla en Artalde sobre Windows Phone 7 que contienen demos y explicaciones de algunas cosas como Tombstoning, isolated storage, launchers & choosers, sensors:

Y por supuesto, para tener un poco de Background podéis leeros el primer capítulo de mi libro sobre Silverlight & Windows Phone 7:

Espero que todo esto os sea de ayuda, y ya sabéis que cualquier duda que tengáis podéis contactar conmigo en twitter: @JosueYeray, en los foros de wp7: http://social.msdn.microsoft.com/Forums/es-ES/windowsphone7/threads o directamente desde la página de contacto de este blog. No tengo todas las respuestas ni el conocimiento absoluto, pero intentaré ayudaros sin duda.

Un saludo, mucha suerte y Happy Coding!

[WP7] Geeks.ms en tu bolsillo

ApplicationIcon

Hola a todos!

Si tenéis Windows Phone 7 y os gusta Geeks.ms ya tenéis disponible la aplicación en el marketplace con la que podréis manteneros al día de los últimos artículos y novedades de Geeks!!

SplashScreenImagescreenshot001screenshot002

Podéis descargarla en el siguiente enlace:

download from marketplace

Espero que os guste, cualquier sugerencia será bien recibida!!

Un saludo y Happy Coding!