terça-feira, 29 de dezembro de 2015

2015 foi fantástico

Olá povo,

Criei esse blog para disseminar conhecimento, mas também como uma forma de registrar coisas importantes que aconteceram na minha vida profissional. E esse post é basicamente um resumo de mais um ano fantástico na minha vida, repleto de alegrias e realizações. Graças a Deus!
Conheci muita gente e reforcei os laços de amizade com outros, e tudo isso foi possível graças aos vários eventos que participei, das aulas que ministrei e as viagens que eu fiz.

No primeiro mês do ano aconteceu o lançamento do meu livro "Dominando o Android", e eu estava com um medo danado que o pessoal não gostasse... Mas felizmente o livro foi um sucesso (pelo menos para mim :) pois vendeu 2 mil exemplares em 7 meses. Eu não esperava vender nem os primeiros mil (sério!). Meu muito obrigado a todos que adquiriram!
Em março fui para Salvador participar do Linguágil onde falei de produtividade no Android por meio da utilização de bibliotecas. Palestra que explorei bastante durante o ano.
Nesse mesmo mês, começaram as aulas da primeira turma do curso de pós-graduação em mobile da Unibratec, onde ministrei a disciplina de Android.

Em maio, estava em João Pessoa no Androidos. Um evento muito bacana organizado pelos meus colegas Josias e Eduardo (entre outros). Parabéns e muito obrigado pelo convite!

Ainda em maio, tive o orgulho de participar mais uma vez do Google I/O (e eu não escrevi nenhum post!!! pqp) onde tivemos como grande novidade o lançamento do Android M. Sem dúvida o evento mais incrível do mundo. Mas antes, participei do GDG Dev Summit que reuniu o pessoal dos GDGs de todo o mundo!

Em junho, voltei a Salvador para participar do Intel Software Day e tive a honra de receber o convite para participar do programa de Innovators da Intel. Muito obrigado pela confiança Carrara e George! Espero reforçar essa parceria em 2016 falando das diversas ferramentas que a Intel possui para facilitar a vida dos desenvolvedores.

No mês de julho participei do The Developers Conference (ou simplesmente TDC) em São Paulo. Um dos maiores eventos do Brasil voltados para desenvolvedores. Na oportunidade ainda participei de um mini-curso muito legal de Intel Real Sense ministrado pelo meu amigo Felipe Pedroso.

Voltei a São Paulo em agosto para participar do Android Dev Conference. Organizado pela iMasters, foi maior evento sobre desenvolvimento Android da América Latina. Conteúdo de alto nível com uma organização impecável.
O evento seguinte foi o DevFest Nordeste em outubro aqui mesmo em Recife (ou Hellcife) :) Na oportunidade, falei sobre Google Play Services. Uma palestra que pretendo explorar um pouco mais ano que vem. Depois foi a vez do DevFest Sudeste em Belo Horizonte que foi show de bola!

Novembro foi a vez de visitar o Google em Mountain View pela terceira vez :) E continua sendo surreal para mim a cada visita. Quem sabe um dia não vou pra lá todo dia para trabalhar? \o/
No Google, participei do encontro mundial dos GDEs (Google Developer Experts) onde tive a fantástica surpresa de ser chamado ao palco para receber o reconhecimento do Google pelo meu trabalho no livro. Aconteceram alguns codelabs muito interessantes como: Beacons, Project Tango, Cast, Brilloe Weave.

Também participei do Android Dev Summit no Computer History Museum. Sem dúvida a melhor agenda de Android que eu vi na minha vida. Só os melhores caras do Google palestrando. Foi para fechar 2015 com chave de ouro.

Isso sem contar o lançamento da segunda edição do Dominando o Android. Revisado, ampliado e atualizado! ;)

Que venha 2016! E que ele seja tão bom (ou melhor) que 2015.
Feliz ano novo para todos!!!

4br4ç05,
nglauber

segunda-feira, 14 de dezembro de 2015

Android Support Annotations

Olá povo,

Vou tentar atualizar o blog com mais frequência com posts menores como este. É um assunto relativamente novo, mas pouco utilizado (e conhecido) pelos desenvolvedores (inclusive eu).

Por questões de performance, é recomendado que evitemos a estrutura "enum" em aplicações Android, substituindo-as por um inteiro (int).
Mas aí sempre vem a pergunta: e como restringir os valores? Por exemplo: digamos que a classe Encomenda possui um atributo chamado status que pode receber apenas os valores "aberto", "em trânsito", "cancelado" e "entregue".

Com as anotações do Android podemos definir uma constante do tipo int para cada status e depois informar no atributo que ele só poderá receber um desses valores.

Para utilizar as anotações do Android, adicione a seguinte dependência no build.gradle.
dependencies {
 ...
 compile 'com.android.support:support-annotations:23.+'
}

Agora vejamos o código a seguir:
class Encomenda {
    public static final int STATUS_ABERTO      = 0;
    public static final int STATUS_EM_TRANSITO = 1;
    public static final int STATUS_CANCELADO   = 2;
    public static final int STATUS_ENTREGUE    = 3;
    
    @Retention(RetentionPolicy.SOURCE)
    @IntDef({
            STATUS_ABERTO, 
            STATUS_EM_TRANSITO, 
            STATUS_CANCELADO,
            STATUS_ENTREGUE
    })
    public @interface Status {
    }

    @Status
    public int status;
}
A anotação @Retention indica onde a anotação atuará. No nosso caso, indicamos que ela é usada apenas no processo de compilação. Mas poderíamos utiliza-la em runtime. E com a anotação @IntDef estabelecemos os valores que podem ser utilizados pelo elemento que utilizar essa anotação. Por fim, anotamos o atributo "status" o @Status para restringir os valores que podem ser atribuídos a ele.
Desta forma, o código a seguir, daria erro pois 10 não é um valor de status válido:
Encomenda encomenda = new Encomenda();
encomenda.status = 10;
Com essa abordagem, você deixa de utilizar as enums e ainda deixa o seu código robusto evitando valores inválidos.

Mas isso é só o começo! A biblioteca de Android Suppport Annotations permite:
  • Validar se um parâmetro de método pode ser nulo ou não com @Nullable ou @NonNull;
  • Informar com @StringRes que um atributo do tipo int receberá o id de um texto do values/strings.xml;
  • Determinar se um método deve executar na main thread (com @UiThread ou @MainThread) ou em uma thread separada @WorkerThread;
  • Determinar que uma variável/atributo/método receberá o RGB de uma cor utilizando @ColorInt.
  • Informar que uma chamada necessita de uma permissão no AndroidManifest.xml utilizando @RequiresPermission.
E ainda tem muito mais! Mais informações vocês podem encontrar nos links abaixo:

4br4ç05,
nglauber

domingo, 25 de outubro de 2015

DevFest Sudeste 2015


Olá povo,

No dia 24 de outubro de 2015 participei do GDG DevFest Sudeste. Eu participei do evento apresentando uma palestra sobre desenvolvimento para Android Wear.
Mas sem sobra de dúvida, a melhor parte do evento é rever os amigos e conhecer gente nova e falar de tecnologia com o pessoal :)
Gostaria de agradecer o convite parabenizar todos os organizadores e participantes do evento.



4br4ç05,
nglauber

sexta-feira, 25 de setembro de 2015

DevFest Nordeste 2015



Olá povo,

O GDG DevFest é uma iniciativa do Google em parceira com os GDGs (Google Developer Groups) de todo o mundo para oferecer grandes eventos para a comunidade de desenvolvedores. Esse ano, a temporada de DevFests acontecerá entre 1 de setembro e 30 de novembro.
Aqui no Brasil, teremos pelo menos um DevFest em cada região do país. E o DevFest Nordeste 2015 será realizado em Recife, no dia 17 de outubro no Recife Antigo e contará com grandes palestrantes de várias partes do Brasil. Serão três trilhas onde serão discutidas tecnologias web, mobile e muito mais.
Eu participarei do evento com a palestra "Google Play Services Rocks!!!" onde vamos ver como adicionar funcionalidades fantásticas ao seu aplicativo utilizando as APIs do Google.

Para mais informações, consulte o site do evento.
Você não vai perder essa oportunidade de aprender novas tecnologias e fazer parte dessa grande comunidade de desenvolvedores?

Nos vemos lá! ;)

[EDITADO 17/10/2015]


4br4ç05,
nglauber

segunda-feira, 27 de julho de 2015

Android Conference 2015

Olá pessoal,

No dia 29 de agosto acontecerá em São Paulo o Android Dev Conference 2015 organizado pelo iMasters em parceria com o GDG São Paulo. Este é um dos principais eventos do Brasil sobre desenvolvimento Android e reunirá cerca de 800 desenvolvedores. O objetivo é abordar temas avançados sobre Android de modo a disseminar esse conhecimento com comunidade de desenvolvedores de modo a aumentar a produtividade e melhorar a qualidade das aplicações desenvolvidas.

Eu participarei do evento juntamente com grandes palestrantes do Brasil que trabalham nas maiores empresas do país. As inscrições estão abertas! Não perca mais essa oportunidade de aprender e aumentar o networking ;)

Nos vemos lá!

[EDITADO 31/08/2015]
Slides da apresentação.


[EDITADO 29/12/2015]


4br4ç05,
nglauber

segunda-feira, 13 de julho de 2015

FreeTec 2015

Olá povo,

A Unibratec está promovendo o FREETEC 2015 com palestras e mini-cursos gratuitos. Eu vou estar lá no próximo dia 30/07 para ministrar um codelab de Android (4 horas). Infelizmente as vagas já esgotaram para esse mini-curso :( Mas tem um monte de coisa boa lá! Dá uma conferida na programação completa e inscreva-se já ;)

[Editado 31/07/2015]
O código fonte que fizemos em sala pode ser baixado aqui!


4br4ç05,
nglauber

The Developers Conference

Olá pessoal,

A movimentação aqui no blog esse ano está um pouco devagar, principalmente por conta de trabalho, estudos e por uma mudança de endereço que me deixou num corre-corre danado. Então só está dando tempo pra avisar por onde vou estar falando de Android Brasil à fora.

Entre os dias 21 e 25 de julho participarei do TDC (The Developer's Conference) na Universidade Anhembi Morumbi em São Paulo. Um dos maiores eventos do Brasil voltado para desenvolvedores. São mais de 40 trilhas, com 9 horas de conteúdo em cada uma.
No primeiro dia falarei sobre como acelerar a produtividade no desenvolvimento de aplicações Android utilizando bibliotecas que não estão no Android SDK. E nos dias 23 e 24 participarei do Hands-on Lab de Real Sense ministrado pelo meu amigo Felipe Pedroso.

4br4ç05,
nglauber