Desenvolvendo com estilo
Que a Vivo tem o melhor sinal e a internet mais rápida da concorrência, acredito que todos concordam com isso. Mas o hotsite do Vivo 4G Plus é uma tremenda lenda. Até então, não sei se foi proposital para mostrar que todo mundo tem uma internet horrível, ou se a equipe de front do site fez um trabalho péssimo, mas o que realmente importa é que site é ridiculamente pesado.
Fazendo uma análise bem rapidinha, vimos que a página inicial do site tem 817kb. Destes, 748kb pertencem a 3 imagens que tomam conta do site. Um background gigante (1440x1900, 109kb), o site todo em um arquivo .png (964x868, 572kb) e um GIF ANIMADO (isso mesmo, aquilo que usávamos na época do Furacão 2000, com 68kb).

Fazendo um comparativo bem rápido, a página inicial do G1 conta com 110 requisições (sendo 50 delas, imagens), 360kb de Javascript, e mesmo assim somam 810kb, ainda menos do que o hotsite de vocês.
Vivo, desculpem a sinceridade, mas se o propósito é mostrar diferencial, falem da qualidade de seu sinal/velocidade de vocês e não com um site com este nível.
Primeiramente, surgiu o livro Opa, Up and Running da O’Reilly para fazer o review. Rapidamente, acessei o site da linguagem e tive uma impressão bem legal de início.
O princípio da linguagem é escrever simultaneamente o código front-end e o back-end, na mesma linguagem e no mesmo módulo. E ainda melhor: o Opa Slicer automatiza as chamadas entre cliente e servidor, não necessitando da integração entre elas usando AJAX.
Opa gera um código completamente compatível com Javascript e permite utilizar qualquer biblioteca e framework, mas por padrão usa o jQuery. Sua camada server Javascript usa Node.JS e MongoDB. As consultas para banco também são criadas no mesmo módulo, além de suportar MVC, tendo um scaffold praticamente instantâneo, precisando apenas alguns minutos de teste com a linguagem.
De teoria, bem bacana, mas confesso que o código parecia ficar legal, de início, mas depois senti que com pouca coisa, tornaria bem bagunçado. Eu, particularmente, não desenvolveria nada muito sério usando a linguagem. Talvez para um protótipo rápido ou para algum teste em uma apresentação, mas não construiria uma aplicação grande com essa arquitetura.

Este é um bom livro para quem já tem um algum conhecimento de programação ou deseja experimentar uma forma de construir aplicações web que seja rápida e sem grandes dificuldades. Opa é uma linguagem ousada que possibilita uma rápida criação de protótipos ao possibilitar que com uma única linguagem o desenvolvedor consiga construir toda uma aplicação web. Ainda é cedo para saber se esse caminho que quebra paradigmas vai se tornar comum, mas vale a pena experimentar para ver os benefícios que ela traz.
Desenvolvedores mais experientes podem discordar de algumas das características da linguagem (como misturar lógica com marcação de texto), mas provavelmente vão se interessar ou achar interessante outras.
Depois de tão esperado, uma grande notícia para nós desenvolvedores. jQuery 2.0 foi lançado! :)
Como já divulgado, ele abandona o suporte para os Old-IE’s (6, 7 e 8), e com isso retira uma grande parte de código que era necessário para dar suporte a estes navegadores. Resultado? Bem menor (12%), mais rápido e o código ficou mais limpo para podermos analisar e entender como funciona cada coisa. :)
Ah, você precisa dar suporte a estes navegadores? Não tem o que se preocupar. A equipe do jQuery continua desenvolvendo em paralelo as versões 1.x (atual 1.9 e futura 1.10) para os sites que precisam suportar estes browsers.
Como encontrá-los?
http://code.jquery.com/jquery-2.0.0.min.js (minificado, para produção)
http://code.jquery.com/jquery-2.0.0.js (unminified, para testes)
Se você precisar atualizar a partir de uma versão anterior a 1.9, o ideal é usar o plugin jQuery Migrate e acessar o guia de upgrade do jQuery 1.9, pois houve uma série de mudanças. E é bem simples usar o plugin. Basta incluir no seu HTML e abrir o console para ver as mensagens que são geradas.
Se você não precisa se preocupar com os Old-IE’s, viva! Pode colocar o 2.0 para rodar e ser feliz para o resto da vida. Se você precisa suportá-los, também não tem problema. O carregamento do 1.9 pode ser feito apenas para os browsers antigos, e os novos ficam com a versão mais recente, mais enxuta e mais rápida :)
Como fazer isso? Bem simples :)
<!--[if lt IE 9]>
<script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script src="jquery-2.0.0.js"></script>
<!--[endif]-->
Algumas das mudanças mais importantes:
Não há mais suporte para IE 6/7 e 8: Vale ressaltar que isso também pode afetar os usuários do IE9/10, mesmo se forem usados em “modo de exibição de compatibilidade” que emulam as versões mais antigas. Para evitar isto, sugiro que use sempre a tag X-UA-Compatible.
Tamanho reduzido: O arquivo minificado da versão 2.0.0 é 12% menor que o 1.9.1 graças a eliminação do código de compatibilidade dos Old-IE’s. O elo mais fraco agora são os velhos navegadores Android 2.x / Webkit. Como o uso do Android 2.x já é bem reduzido, em breve este suporte também deve ser removido.
“Custom builds”: Esta funcionalidade tem sido bem refinada e ampliada desde que estreou no jQuery 1.8. Agora você pode escolher uma as combinações de 12 módulos diferentes para criar uma versão personalizada menor. Com a configuração mínima, é possível utilizar parte da biblioteca com apenas 10KB, minified e compactado.
Se sua aplicação já está funcionando com o jQuery 1.9, funcionará com o 2.0 :)
Para quem já acompanha o blog do jQuery já estava por dentro que esta novidade estava mais perto do que longe. Também mencionei sobre estas novidades na palestra de Zepto.JS apresentada no FrontInMaceió e no 1st Pernambuco.JS Open Meeting.
Algumas mudanças chamam mais atenção e podem dar problema para alguns desenvolvedores que já não estavam se preparando para isso. São elas:
O método .css() retorna um objeto com multi-propriedades. Ex.:
var size = $("#box").css([ "width", "height", "backgroundColor" ]);
// { width: "10px", height: "20px", backgroundColor: "#D00DAD" }
O jQuery 1.9 agora suporta alguns seletores em todos os browsers, todos com suporte desde o IE6: :nth-last-child, :nth-of-type, :nth-last-of-type, :first-of-type, :last-of-type, :only-of-type, :target, :root, and :lang.
Novo método .finish(), que pode ser usado para completar imediatamente todas as animações que estiverem na fila em um determinado elemento.
Várias e várias correções de bugs
Algumas outras mudanças menores, como podemos encontrar na lista completa com as mudanças da versão 1.9
Serve para ser uma das melhores notícias para os desenvolvedores começarem 2013. O 2.0 tem o código bastante semelhante ao da versão 1.9, só que com todos os fallbacks para os old-IEs (6.0, 7.0 e 8.0) removidos, deixando-o bem mais rápido e leve.
Para auxiliar os desenvolvedores, o plugin jQuery Migrate foi criado e pode ser usado tanto com 1.9 ou 2.0 para detectar funcionalidades obsoletas e removidas, ou para restaurar características antigas para as situações difíceis em que você precisa de código antigo para executar com jQuery novo. O plugin e as mensagens que ele gera são documentados no README do projeto.
A versão final do jQuery 1.9 está disponível no jQuery’s CDN, e em breve deve estar nos CDNs da Google e da Microsoft.
http://code.jquery.com/jquery-1.9.0.js
http://code.jquery.com/jquery-migrate-1.0.0.js
Ou para testar a versão beta do jQuery 2.0, use o jQuery CDN:
http://code.jquery.com/jquery-2.0.0b1.js
http://code.jquery.com/jquery-migrate-1.0.0.jsJá trabalhei pilhado por muito tempo mas também já perdi muito tempo com redes sociais, chats, cafezinhos (como todo programador), entre outras coisas (ninguém é de ferro). Mas essas pausas às vezes são tão boas e longas que não conseguimos nem notar. E nada melhor do que uma avaliação própria e real sobre o seu tempo gasto no trabalho ou até mesmo em casa.
E para tal tarefa, já tentei várias técnicas desde cronômetros, papéis escritos, ferramentas de time tracking e voltei a usar um aplicativo que havia usado há alguns anos: RescueTime (obrigado por me ajudar a encontrar, Ruan Carlos).

O App é incrível. Após instalação, ele monitora todo o seu dia ou um horário específico que você configurar, gerando relatórios que exibem os aplicativos em que você passa mais tempo (e quanto tempo em cada um), bem como o que você está fazendo nele. Ex.: Se você está em um browser, você pode acessar uma rede social (que pode ser também o seu trabalho), como você pode acessar uma ferramenta do trabalho ou até mesmo um produto web que você está desenvolvendo.
E você pode classificar a categoria de cada site que você acessa, ou aplicativo, bem como se é uma atividade que é neutra, produtiva ou improdutiva. Com o tempo e o ambiente bem configurado, o usuário pode ter relatórios simplesmente incríveis. Quanto melhor configurado estiver o ambiente, mais preciso serão os relatórios que você terá.
E tudo logicamente isso tem um preço. São 6$ por mês, caso você faça a assinatura anual, ou 9$ por mês avulso (se você ainda tiver dúvidas e quiser conhecer melhor a ferramenta, experimente os 14 dias gratuitos da ferramenta).
Existem algumas outras ferramentas que testei, mas não tive resultados tão precisos. Foram o TimeSink e o DeskTime.
O Time Sink é muito bom. Ele também é automatizado mas não exibe relatórios detalhados nos browsers (que para desenvolvedores é um ponto bem negativo). Por este motivo ele fica com alguns pontos atrás, mas o seu preço (apenas 5$ pela licença) é bem atrativo.
A indicação vem de Deyvison Rocha, desenvolvedor da MGR. Funciona para Windows, Mac, Linux, iPhone e Android. Existe um grande ponto positivo, onde você cadastra projetos para medir o tempo em que você trabalha em cada projeto, mas por ter este lado manual, acho um pouco falho, pois se o usuário esquecer de dar um start/stop em algum projeto, pode atrapalhar muito seu relatório diário.
Que ninguém é de ferro, todo mundo sabe. Além disso, é essencial uma pausa nas atividades (principalmente para quem trabalha com desenvolvimento) em alguns intervalos para esticar as pernas, fazer um alongamento e destrair um pouco.
Mas não existe coisa melhor do que você ter certeza de quanto tempo você perde com isto, algumas outras coisas supérfulas e quanto você pode produzir ainda mais se você mantiver o foco em suas atividades principais. Afinal, a desculpa “estou sem tempo” já não cola há muito tempo!
Configure seu ambiente e compartilhe seus relatórios com seus amigos. Primeiro dia em andamento, estou com 83% de produtividade, e você?
Ano novo, vida nova. Novas promessas, novos desafios, novas realizações. E não tem coisa melhor do que olhar um pouco para trás e analisar como foi 2012, e o que esperamos para 2013.
2012 foi um ano incrível para mim e tenho certeza que também foi para toda a comunidade Front-end. Eventos magníficos, projetos interessantíssimos, iniciativas fantásticas partindo das comunidades, além de muita novidade em nossa área para estudo e desenvolvimento. Mas alguns pontos não posso deixar de citar.
Um dos pontos que sempre tento pegar gancho nos eventos: mercado de trabalho. Acredito que este foi um dos anos em que a importância do profissional Front-end ficou ainda mais evidente nas empresas. E isto é fruto do trabalho que toda a comunidade está fazendo nos últimos anos. Iniciativas como a BrazilJS Foundation (que merece ser lembrada sempre) conseguem organizar cada vez mais as comunidades, além de criar materiais e projetos visando sempre ajudar os profissionais do ramo. E isto é importantíssimo para agregar valor ao profissional e consequentemente ao mercado. E precisamos melhorar isso ainda mais, hoje e sempre!
Não poderia deixar de falar do trabalho, e bem claramente da MGR. Este ano posso dizer que a empresa se tornou a minha primeira casa. Por que isso? Passei mais tempo na empresa ou em viagens à trabalho do que na minha própria casa. E realmente não acho isso ruim. Quem me conhece sabe a importância que o trabalho tem em minha vida.
As viagens em 2012 foram intensas, e na grande maioria à trabalho. Fazer um check-in no aeroporto e receber a mensagem “Parabéns, 16 semanas seguidas em aeroportos” é realmente assustador. Foram 32 viagens nacionais, para mais de 8 cidades diferentes (mas para quem realmente me acompanhou sabe que Fortaleza neste ano foi minha segunda casa, devido a um projeto gigantesco da empresa na cidade). E 2013 já começa com 16 vôos agendados. Loucura total!
Lembro que conversei uma vez com Zeno Rocha, falando da dificuldade que eu tinha em dormir em locais diferentes de casa (toda vez era uma lenda para dormir nos hotéis, sempre diferentes que nosso quarto, cama, clima, etc.). O cenário mudou, realmente. Hoje, diferente é quando durmo em casa. Juro, é uma situação muito louca!
Ahh os eventos. Sempre incríveis, mas com toda certeza, gostaria de ter participado ainda mais. Cada evento, por mais rápido que tenha participado, me fez vivenciar momentos únicos ao lado de pessoas incríveis. Conhecer pessoas pessoalmente em que conversamos, estudamos e discutimos sempre pela internet é muito bacana. Poder tomar uma cerveja e conversar sobre o mesmo assunto, só que de maneira bem mais descontraída é único.
E dois destes eventos não poderia esquecer de citar. Em Abril aconteceu o Pernambuco.JS, onde organizei ao lado de Davidson Fellipe e Thiago Azurém. Apesar de suspeito, o que posso dizer do evento? Simplesmente fantástico. Conseguimos provar para toda a comunidade o quanto Javascript está crescendo e como nosso estado tem valor e consegue reunir várias pessoas com o mesmo intuito: discutir JavaScript, de alto nível! :)
Em agosto foi a vez do Brazil.JS. Pegar um avião e viajar mais de 4.000km para passar os dois dias da conferência ao lado dos melhores profissionais do nosso país não teve preço! Desde um simples almoço no Outback com todo mundo reunido (falando de JavaScript, claro!), ou assistir a palestra dos grande amigos além de figuras importantíssimas no cenário mundial. Mil pessoas reunidas para discutir do que tanto amamos, foi simplesmente imperdível!
Além desses não poderia deixar de citar grandes eventos que também participei (como palestrante ou como participante), como o FrontInMaceió (organizado pelos amigos Juarez Filho e Davidson Fellipe), o FEEC (por Erick Albuquerque e outros amigos), EDTED (organizado pela Arteccom, onde já participei pela 4ª vez na edição Recife e pela 2ª vez na de Fortaleza), entre outros.
Não posso deixar de dar os parabéns à todos os amigos envolvidos nestes grandiosos eventos! Davidson Fellipe, Leo Balter, Zeno Rocha, Eduardo Lundgren, Jaydson Gomes, Felipe Moura, Djalma Araujo, Bruno Farache, Neto, Cirdes Henrique, Bernard Luna, Juarez Filho, Maujor, Giovanni Keppelen, Leo Beto Souza, Suissa além de todos os outros. Parabéns, sempre! :)
Por isso, falo e repito: não perca oportunidade de participar destes eventos. Garanto que cada encontro você terá vários momentos que serão inesquecíveis e de extrema importância para sua vida pessoal e profissional. Se na sua cidade não existem eventos como estamos tendo ultimamente, levante-se da cadeira agora e junte um grupo para organizar e aquecer esta ideia em sua terra. Mas não perca tempo, de verdade!
2013 para mim já começa como todo gás. Hoje, primeiro dia útil do ano (mas não para mim, ainda) estou viajando à lazer, de férias, após um reveillon incrível (acredite, em Fortaleza). Volto para Recife no sábado, dia 5 e no dia 7 já embarco para a primeira viagem à trabalho de 2013, após 20 dias de descanso. #tenso
Conhecimento, agregar conhecimento sempre. Quem trabalha com tecnologia sabe. Quem não se atualiza, a onda leva. E não queria ser levado. Estudem, sempre, sempre, sempre! Procure as novas tecnologias, bibliotecas. Testem, falem bem ou falem mal, mas falem delas. Forme sua opinião sobre cada coisa, mesmo que todos não concordem.
Eventos, nunca deixar de participar. Isto é importantíssimo. Pegue aquela reserva que você tem na poupança e participe daquele evento que você achou legal, mas que é em outra cidade. Pega um avião, ou mesmo um ônibus, ou vá de bicicleta, andando. Tenha disposição, participe. Sem dificuldades. Garanto que não se arrependerá! :)
E você, o que fez em 2012 e espera fazer em 2013?
Como várias pessoas já me procuraram com algumas perguntas semelhantes a esta, resolvi deixar algumas das minhas sugestões de maneira mais objetiva e pública :)
Quem me conhece sabe que eu gosto muito de ler. Costumo comprar muitos livros digitais, e mesmo após a leitura, compro a versão impressa para deixar na estante em casa para sempre que eu precisar ir lá apreciar aquela obra mais uma vez.
De antemão, meus livros favoritos são da O’Reilly. E para me ajudar nesta árdua missão”, ainda entrei no programa para reviewer deles. Ora bolas, ter alguns livros disponibilizados em formato digital mesmo antes de ser lançados, a custo-zero é ainda melhor! Qualquer tema que começa a ser discutido, em pouco tempo é transformado em livro, escrito sempre por excelentes autores. Para quem não tem costume de ler as versões em inglês, ainda podem contar com a tradução que algumas editoras brasileiras fazem (normalmente a Novatec e Alta Books).
Se o seu mundo é apenas desenvolver sites institucionais em que o menu aparece/desaparece e você quer fazer uma validação do formulário usando um plugin qualquer do jQuery, realmente você não sabe Javascript. A diferença vai estar entre o objetivo de querer aprender ou continuar no mundo em que você vive (como tanto fala o grande Zeno Rocha, a zona de conforto). Venha para onde a mágica acontece! :)
Dos livros de Javascript que eu mais admiro são quatro títulos que irei listar em ordem de importância para quem está começando:

Este é realmente um dos melhores livros que já li na minha vida, de verdade. Ele dá boas dicas para quem realmente quer aprender Javascript. Conhecer cada detalhe da linguagem, como sua tipagem, uso dos métodos/funções, objeto literais, etc. Realmente é um belo começo!

Depois de já conhecer alguns detalhes fundamentais do Javascript, chega a hora de escrever um código bonito, reutilizável e de fácil entendimento de todos. Já é uma ótima hora para investir em patterns, tendo seu código apreciado por todos após a leitura do livro do grandioso Stoyan Stefanov :)

Além das edições impressas e ebooks, este foi escrito pelo Addy Osmani (um dos Google Chrome-boys) e tem sua versão aberta e free encontrada neste link. É um livro complementar ao do Stoyan que tem algumas patterns mais recentes (como MV* e Design Patterns com jQuery).

Ah, agora você já conhece bem alguns detalhes do Javascript e já tem uma boa noção das patterns, vale à pena investir agora em Performance. E pode ter certeza que este ponto vai ser cada vez mais importante em sua vida, principalmente quando estiver escrevendo código de grandes aplicações (e não apenas sites institucionais).
Além dos livros, indico bastante participar dos grupos, comunidades e listas de discussão. Dentre elas, destaco as que mais participo e que admiro bastante o conteúdo que é gerado a partir deles.
Agora sem sombra de dúvidas, existe uma REGRA! Aprender Javascript vai depender única e exclusivamente de você e do seu esforço. Abrace a linguagem, invista todo o seu tempo em estudos/pesquisa, e o mais importante: compartilhe a sua experiência com todos! Seja ela uma coisa super-simples como algo super-avançado. Crie um repositório no Github, divulgue o que você fez e aguarde os feedbacks. Eles podem ser muito positivo, como muito negativo. Se for a segunda opção, utilize isto como motivação para fazer algo ainda melhor! :)

O que todos esperavam não foi diferente do que aconteceu. Um evento com nomes de peso, apoiado por algumas das maiores incentivadoras do país e tão bem planejado só poderia ter um resultado tão positivo.
Um evento de qualidade como estes acontecendo tão perto da gente realmente não tem preço! Mais uma vez parabéns ao Juarez Filho e ao Davidson Fellipe pela belíssima organização. O evento estava impecável! :)
Reencontrar amigos como Zeno Rocha, Giovanni Keppelen, Bernard de Luna, Suissa (como sempre cômico), Cirdes Henrique (um dos responsáveis pelo Eventick e todo o credenciamento) entre outros conhecidos de Recife, além de conhecer pessoalmente pessoas como o Almir Filho e Caio Gondim (ambos do LoopInfinito), o pequeno-grande Nicholas Fazio, entre diversas outras pessoas! Enfim, parabéns à todos os envolvidos, vocês fizeram o evento ser mais um grande marco: o primeiro evento FrontIn do Nordeste! E com quase 200 pessoas bem satisfeitas, realmente é para entrar na história! Amanhã subo o vídeo das entrevistas informais que fizemos por lá!
Aos interessados, os slides do meu lightning sobre Zepto.JS já está disponível em http://luiztiago.github.com/talks/2012/FrontInMaceio-ZeptoJS/
United we move </strong>
12 de setembro, dia do programador. Na verdade o dia do programador é dia 13 de setembro, mas devido ao ano corrente ser bissexto, a comemoração é dada no dia 12. Segue uma breve explicação encontrada na wikipedia:
O número 256 foi escolhido para esta data porque 256 é o número de valores distintos que podem ser representados com um byte de oito bits, um número bem conhecido entre os programadores. Além disso, ‘256’ em hexadecimal é ‘100’ (‘0x100’), e é a maior potência de 2 abaixo de 365 (o número de dias em um ano). Nos anos bissextos, a data comemorativa é 12 de setembro (13 de setembro em outros anos).
O vida de programador também deu sua bela contribuição pelo dia:

E, para não ficar de fora, também fiz minha pequena contribuição:
var Today = (function(){
var text = ‘Feliz ‘;
return function(){
text += ‘dia do programador!’;
return text;
});
});
alert(Today()());
Com o crescimento exponencial no uso do Javascript no mundo, organizar bem o código e desenvolver utilizando padrões se torna uma obrigação entre os devs. Neste livro, Addy Osmani (criador do TodoMVC, Aura, UI Bootstrap, entre outros projetos) utiliza uma bela didática, listando pontos positivos e negativos, além de algumas dicas na implementação de cada Pattern.
Sem contar que o conteúdo é super atualizado, visto que o livro foi lançado em Julho de 2012. Mais uma bela indicação para os interessados em aprender mais e ter um código mais organizado. Quem quiser, o livro está a venda na O’Reilly em formato ebook e impresso (em inglês), e por enquanto, não existe previsão para a tradução do livro em Português.

Também existe o Javascript Patterns, que também é muito bom, do Stoyan Stefanov, publicado também pela O’Reilly e já conta com tradução para português da Novatec.