TDC Goiânia 2011

No dia 29 de Outubro, tive a oportunidade de participar do TDC Goiânia!
Não conhece o TDC? Veja este meu post anterior para mais detalhtes: TDC 2011 Florianópolis

Abaixo as apresentações

Abertura

image

HTML5

image

 

Muitas pessoas me pediram o projeto do Kinect e aqui está ele:

https://skydrive.live.com/embedicon.aspx/Palestras/2011-10-29%20TDC%20Goiania/KinectPowerPointControl.zip?cid=de5afe5b638592f4&sc=documents

Para mais detalhes do projeto original e um video de demonstração, veja este post do blog Controlando o PowerPoint com Kinect

Abraço,

Anúncios

TDC 2011 Florianópolis

No último final de semana, nos dias 21/08 e 22/08 tive a satisfação de poder participar do http://www.thedevelopersconference.com.br/ edição de Florianópolis.
O conceito do evento é muito interessante, o foco é em desenvolvedores, sejam eles de quais comunidades for, existe conteúdo para todos.

Este tipo de evento possibilita uma troca de experiência muito rica entre especialistas em diferentes tecnologias e no final do dia, todos crescem muito profissionalmente.

Participei representando a Microsoft nas sessões de abertura e em duas palestras sobre HTML5 e Windows Phone.

Além disso, pude acompanhar uma série de excelentes apresentações sobre diversas tecnologias, inclusive Arduino, que despertou uma paixão imediata para o mundo da eletrônica.

Confiram abaixo as apresentações. A demo de Kinect será adicionada em alguns dias, por enquanto, confiram este post https://coding4windows.wordpress.com/2011/08/03/controlando-o-powerpoint-com-kinect/

Todas as apresentações estão disponíveis para download e visualização no Skydrive https://skydrive.live.com/?cid=DE5AFE5B638592F4&id=DE5AFE5B638592F4%213404&sc=documents

image

O objetivo esta apresentação na sessão de abertura do primeiro dia, foi apresentar as opções de ferramentas, tecnologias e programas gratuito para desenvolvedores além de oferecer recursos de integração e desenvolvimento em tecnologias não Microsoft.

Visualizar
https://skydrive.live.com/view.aspx?cid=DE5AFE5B638592F4&resid=DE5AFE5B638592F4%213405

Aplicações modernas com HTML5

image

Esta apresentação é uma visão ampla sobre o que é o HTML5 e sua importância tanto para o mercado, quanto para a Microsoft e desenvolvedores. Além disso, um mergulho nos principais recurso deste novo pacote tecnológico que oferece muitas novas possiblidades para desenvolvedores em geral.

Visualizar
https://skydrive.live.com/view.aspx?cid=DE5AFE5B638592F4&resid=DE5AFE5B638592F4%213407

Tudo o que você precisa saber sobre o Windows Phone 7

image

Palestra que aborta os principais tópicos de desenvolvimento para Windows Phone 7. Estes tópicos vão desde capacidades da plataforma com Hardware, experiência de usuário até ferramentas e APIs importantes para criar aplicativos interessantes sempre pensando no consumo de bateria como prioridade.

Visualizar
https://skydrive.live.com/view.aspx?cid=DE5AFE5B638592F4&resid=DE5AFE5B638592F4%213406

O TDC é um evento que todos os desenvolvedores deveriam ir, a experiência.

Parabéns à organização e principalmente à Yara Senger e Vinicius Senger pela iniciativa e obrigado convite.
Vejam o blog post no blog da Globalcode http://blog.globalcode.com.br/2011/08/microsoft-no-tdc2011-diversidade-e.html

Obrigado pela participação de todos!

Até a próxima!


Controlando o PowerPoint com Kinect


Assista em: http://www.youtube.com/watch?v=5qHJ–oe8kw

Resolvi fazer uma pequena modificação em um projeto de controle de PowerPoint através do Kinect.

O projeto original pode ser encontrado no codeplex e é de autoria de Joshua Blake http://kinectpowerpoint.codeplex.com

Vocês podem ver mais detalhes da implementação neste post http://channel9.msdn.com/coding4fun/kinect/NUI-for-PowerPoint

As minhas alterações fazem com que seja possível movimentar o PowerPoint não apenas afastando os seus braços do corpo, mas sim através de um movimento que expressa mais naturalmente a intenção do usuário de deslizar a página atual.

Abaixo o meu algoritmo super simples:

private bool isTrackingRightHand = false;
private bool isTrackingLeftHand = false;

private void ProcessForwardBackGestureEx(Joint head, Joint rightHand, Joint leftHand)
{

    if (isTrackingRightHand && rightHand.Position.X < head.Position.X - 0.10)
    {
        System.Windows.Forms.SendKeys.SendWait("{Right}");
        isTrackingRightHand = false;
    }

    if (!isTrackingRightHand && rightHand.Position.X > head.Position.X + 0.50)
    {
        isTrackingRightHand = true;
    }

    isForwardGestureActive = isTrackingRightHand;

    if (isTrackingLeftHand && leftHand.Position.X > head.Position.X + 0.10)
    {
        System.Windows.Forms.SendKeys.SendWait("{Left}");
        isTrackingLeftHand = false;
    }

    if (!isTrackingLeftHand && leftHand.Position.X < head.Position.X - 0.50)
    {
        isTrackingLeftHand = true;
    }

    isBackGestureActive = isTrackingLeftHand;

            
}

O que este trecho de código faz é começar a identificar um movimento quando o usuário afasta a sua mão 50cm da linha da cabeça.
Se o usuário continuar o movimento até que sua mão cruze a linha da cabeça em 10cm ele dispara o evento de avançar (para a mão direita) e de voltar (para a mão esquerda) a apresentação.

Procurei respeitar todo o funcionamento do programa, a única modificação necessária é adicionar este método, declarar as variáveis e substituir a chamada do método ProcessForwardBackGesture por ProcessForwardBackGestureEx

Simples não? Vejam o video para sentir o efeito!

Divirtame-se!


Bubble Sort

Hoje resolvi brincar um pouco com este algortimo de ordenação tão famoso, o Bubble Sort.

A idéia deste algoritmo é fazer ir trocando os caracteres de modo que eles “flutuem” como bolhas. Os valores maiores, vão subindo à cada passagem do loop. De maneira metafórica, é como se fossem bolhas, dái o nome Bubble.

O algoritmo é bem simples e existem diversas implementações no wikipedia, para diversas linguagens http://pt.wikipedia.org/wiki/Bubble_sort

Eu resolvi brincar um pouco com C/C++ para ele. Vejam o caso mais simples, ordenação de inteiros:

#include <iostream>

using namespace std;

void print( int numbers[], int size )
{
    int i = 0;

    for( int i = 0; i < size; i++ )
    {
        cout << numbers[ i ] << " ";
    }

    cout << endl;
}

O algoritmo tradicionado do Bubble sort para uma lista de números:

void bubble()
{
    int numbers[] = { 0, 1, 4, 7, 2, 9, 3 };

    int size = sizeof( numbers ) / sizeof( int );
    int temp;
    int steps = 0;

    cout << "Unordered list: ";
    print( numbers, size );

    for( int i = 0; i < size; i++ )
    {
        for( int x = size - 1; x > i ; x-- )
        {
            steps++;

            if( numbers[ x ] < numbers[ x - 1 ])
            {
                temp = numbers[ x ];
                numbers[ x ] = numbers[ x – 1 ];
                numbers[ x - 1 ] = temp;
            }
        }
    }

    cout << "Ordered list: ";
    print( numbers, size );
    cout << "Steps: " << steps << endl;
}

O que temos aqui são dois loops que vão ao encontro um do outro para evitar passagens desnecessárias pelo array já que os menores valores já ficam posicionados ordenamente nas primeiras passagens.

O resultado é:

Unordered list: 0 1 4 7 2 9 3
Ordered list: 0 1 2 3 4 7 9
Steps: 21
Press any key to continue . . .

Agora vem um outro caso onde resolvi usar este algoritmo para ordenação: nomes.
Para deixar a brincadeira mais interessante, resolvi utilizar a minha própria implementação da strlen.

int strlen_x( char* word )
{
    int size = 0;

    if( word )
    {
        while( word[ size++ ] );
    }

    return size;
}
Uma maneira bem simples de obter o tamanho de uma string do C.
Agora uma função simples para imprimir a lista de nomes:
 
void printNames( char* names[], int size )
{
    for( int i = 0; i < size; i++ )
    {
        cout << names[ i ] << " ";
    }

    cout << endl;
}
A função de troca para reaproveitamento de código:
 
void swap( char* names[], int indexA, int indexB )
{
    char* temp = names[ indexA ];
    names[ indexA ] = names[ indexB ];
    names[ indexB ] = temp;
}
 
E a função do bubble adequado para palavras e não apenas inteiros ou caracteres:
 
void sortNames()
{
    char* names[] = { "bill", "steve", "paul", "aaron", "beth", 
"abner", "phil", "john", "mary", "felix", "carl", "tom",
"malcomn", "isabel" };

int steps = 0; int wordSize1, wordSize2; int size = 14; //número mágico cout << "Unodered names: "; printNames( names, size ); for( int i = 0; i < size; i++ ) { for( int x = size - 1; x > i ; x-- ) { if(names[ x ][ 0 ] != names[ x – 1 ][ 0 ] ) { steps++; if(names[ x ][ 0 ] < names[ x – 1 ][ 0 ] ) { steps++; swap( names, x, x - 1 ); } continue; } wordSize1 = strlen_x( names[ x - 1] ); wordSize2 = strlen_x( names[ x ] ); if( wordSize2 < wordSize1 ) { wordSize1 = wordSize2; } for( int w = 1; w < wordSize1 ; w++ ) { steps++; if(names[ x ][ w-1 ] == names[ x - 1][ w-1 ] ) { if(names[ x ][ w ] < names[ x – 1 ][ w ] ) { steps++; swap(names, x, x - 1 ); break; } } else { break; } } } } cout << "Ordered names: "; printNames( names, size ); cout << "Steps: " << steps << endl; }
O resultado é:

Unodered names: bill steve paul aaron beth abner phil john mary felix carl tom malcomn isabel
Ordered names: aaron abner beth bill carl felix isabel john malcomn mary paul phil steve tom
Steps: 146
Press any key to continue . . .

Qual é a diferença?
Ao invés de ter que se preocupar em ordenar N valores, é necessário se preocupar em ordenar N conjuntos de valores sequenciais. Essa sequência é importante para a ordenação final.

Neste caso consideramos a sequência de caracteres quando os nomes iniciam com a mesma letra, neste caso é necessária uma verificação caracter por caracter levando em consideração um caso especial de nomes que podem ter as duas primeiras letras iguais como Aaron.

Se as iniciais são diferentes, o processo é o bubble sort tradicional.

É isso aí pessoal! Divirtam-se Open-mouthed smile


HTML5 e IE9 Webcamps RJ

image

No último sábado, dia 28 de Maio, aconteceu o Webcamps no Rio de Janeiro.
http://www.webcamps.com.br

Minha participação no evento foi com esta apresentação sobre HTML5 e Internet Explorer 9. Concentrei os principais pontos para que os participantes entendessem o momento e a importância atual e futura do HTML5 no desenvolvimento de aplicativos.

Como desenvolver um aplicativo web que funcione em qualquer navegador, com recursos modernos? HTML5 e CSS3

Como integrar um aplicativo web com Windows 7 e obter o máximo de performance com aceleração por hardware? IE9

Como ter acesso à implementação das mais novas especificações vindas do W3C sem ter medo de quebra do seu código no navegador em produção? IE10 e HTML5 Labs.

Confiram mais detalhes na apresentação e links abaixo:

http://cid-de5afe5b638592f4.office.live.com/view.aspx/Palestras/2011-05-28%20Webcamps%20RJ/IE9%20HTML5%20WebCamps%20RJ.pptx

Muitos exemplos de código HTML5 e download do IE10 http://www.ietestdrive.com
Developer Guide http://msdn.microsoft.com/en-us/ie/gg192966.aspx

Microsoft Script Junkie
http://msdn.microsoft.com/en-us/scriptjunkie

Muitos exemplos de sitess HTML5
http://beautyoftheweb.com

Sites Fixados
http://msdn.microsoft.com/pt-br/ie/dd797411

Download do Internet Explorer 9
http://www.internetexplorer9.com.br

Aproveitem!


Semana de Webcasts do Internet Explorer 9

A terceira semana de março de 2011 está sendo a semana de lançamento do Internet Explorer 9! Para chegar com tudo, o MSDN preparou uma semana de Webcasts especial sobre desenvolvimento web com IE9.

Dos 5 webcasts, fiquei responsável por 3 deles:

image

O que há de novo no Internet Explorer 9

Uma visão geral de tudo que temos de novo no IE9 tanto para usuários finais quanto para desenvolvedores. Como ele funciona, como e porquê ele está mais rápido e com o foco nos sites e não no browser.

A gravação do webcast pode ser acessada no seguinte endereço:
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032481196&Culture=pt-BR

A apresentação em Power Point pode ser acessada no seguinte endereço:
http://cid-de5afe5b638592f4.office.live.com/view.aspx/Palestras/2011-03%20Semana%20Webcasts%20IE9/O%20que%20h%c3%a1%20de%20novo%20no%20IE9.pptx

image

O poder do HTML5

Entendendo de verdade o que é o HTML5, pra que serve e como usá-lo! Tudo bem prático, com exemplos de marcação e de utilização das APIs novas.

A gravação do webcast pode ser acessada no seguinte endereço:
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032481198&Culture=pt-BR

A apresentação em Power Point pode ser acessada no seguinte endereço:
http://cid-de5afe5b638592f4.office.live.com/view.aspx/Palestras/2011-03%20Semana%20Webcasts%20IE9/O%20Poder%20do%20HTML5.pptx

Adiciono ainda hoje mais informações sobre o terceiro webcast: Aumentando o engajamento com sua audiência através de Sites Fixados do IE9
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032481200&Culture=pt-BR

Boa web pra vocês!


Integrando Web Games com o Windows 7 via Internet Explorer 9

image

Nesta apresentação mostrei detalhes da nova experiência possibilitada pelo Windows 7 e a nova relação que o usuário tem com o Desktop que centraliza a comunicação com os programas na nova Taskbar.

O ponto principal é mostrar como o Internet Explorer 9 permite a integração de aplicações web, neste caso, web games, com o Windows 7, permitindo assim uma nova maneira de interação e comunicação com o jogo em questão.

Tudo isso com o novo recurso de Pinned Sites, notificações e thumbnail buttons.

Para demonstrar a codificação utilizei o novo editor Microsoft Webmatrix e a nova syntaxe Razor.

O Blend 4 para mostrar integração de jogos feitos em Silverlight com o Windows 7 via Ie9.

O Flash CS5 foi utilizado para demonstrar como integrar um Webgame feito em Flash com o Windows 7 via IE9.

Downloads

Apresentação

http://cid-de5afe5b638592f4.office.live.com/view.aspx/Palestras/2011-02-19%20Gamefest%20Brasil/Integrando%20Web%20Games%20Windows%207%20IE9.pptx

Código fonte das Demos
http://cid-de5afe5b638592f4.office.live.com/self.aspx/Palestras/2011-02-19%20Gamefest%20Brasil/WebGames%20Windows%207%20IE9.zip 

Download do IE9
http://www.beautyoftheweb.com

Mais informações e download do Webmatrix
http://www.microsoft.com/web/webmatrix/
http://www.asp.net/webmatrix

Aprendendo mais

Documentação do IE9 Pinned Sites
http://msdn.microsoft.com/en-us/library/gg491731(VS.85).aspx

Apresentações
Apresentação realizada no dia 19/02/2011 no Gamefest Brasil http://www.gamefestbrasil.com.br/ organizado pelo http://www.sharpgames.net

Até a próxima!