Resumo do primeiro dia do BrazilJS 2015
Daí pessoal, tudo certo? Resolvi fazer este post com um pequeno resumo das palestras do primeiro dia do BrazilJS 2015. É importante destacar que tudo aqui escrito vem da minha experiência do evento e de tudo aquilo que pude absorver e/ou achei interessante o bastante para comentar.
Espero que atenda as tuas expectativas!
Palestra 1 - Christian Heilmann - ES6 - Baseline para a web moderna?
O Chris procurou falar sobre dois pilares bastante discutidos entre desenvolvedores JavaScript: a nova versão do ECMAScript, o ES6 e sobre comos precisamos depositar todos os nossos esforços em trazer a maior quantidade de boas funcionalidades para o browser ao invés de ficar “apenas” criando frameworks, bibliotecas e trabalhando com JavaScript em ambientes fechados como no NodeJS. Alguns pontos interessantes que ele levantou:
- Utilize novos frameworks com uma visão crítica e não se torne simplesmente um fanboy de uma determinada tecnologia
- “This is not a fight against innovation”, se referindo aos grandes browsers do mercado (Firefox, Chrome, Edge e Safari)
- “Deliver code to user above everything” e a “Priority of Constituencies” (preferência máxima pelo usuário definido no draft dos princípios de design do HTML da W3C). Aqui ele basicamente diz que por mais que o ES6 deva ser utilizado “in the wild” os browsers antigos precisam continuar suportando e para isso a única saída é a transpilação, o que ele também considera ruim. É UM GRANDE DILEMA!
- Ser contra empresas que exploram o open source para fazer as suas próprias soluções fechadas para aplicativos que já conhecemos. O principal exemplo disso são as grandes fabricantes de smartphones que criam as suas próprias versões de browsers.
- “There are people missing the great things in the web”. Aqui ele comenta um pouco sobre os desenvolvedores que não exploram tudo de novo que está surgindo e continuam outdated.
- O comentário mais importante dele: “quando as coisas deixaram de ser desenvolvidas para produção?”, se referindo a bibliotecas e frameworks em JS que não eram consideradas production-ready
- No final das contas ele basicamente “detona” a ideia de transpilar código ES6 para ES5, frameworks como Angular e React e ambientes fechados como o que temos em NodeJS. O que ele defende é utilizar o ES6 diretamente e principalmente no browser. Por mais que se diga que essas funcionalidades são muito novas e estariam lentas ou com problemas a ideia do Chris seria utilizá-las o quanto antes com dados reais numa aplicação real para que os problemas possam ser encontrados e corrigidos e os bottlenecks de performance possam ser elimininados.
Alguns links:
- A boa e velha tabela de compatibilidade do ES6
- Testes para “conformance” das funcionalidades do ES
- Testes de performance para do ES6 (várias funcionalidades estão lentas mas vão melhorar com o tempo, naturalmente)
Palestra 2 - Douglas Campos - Use lowlevel
Bottom-line do talk: conheca e trabalhe com o baixo nível, isso vai te tornar um desenvolvedor melhor. Alguns pontos legais levantados durante a palestra:
- “Those who don’t know history are doomed to repeat it.”, se referindo a pessoas que não se deparam com problemas de baixo nível e acabam cometendo os mesmos erros que já foram cometidos há 20 anos atrás (ou mais)
- Saiba mais sobre compiladores, browsers, frameworks.
- “Don’t be afraid of lowlevel”
Palestra 3 - Felipe Ribeiro - JavaScript @ Spotify
Palestra bastante esperada, o Felipe nos conta em detalhes toda a história do aplicativo do Spotify para o desktop e como ocorreu a última migração para um codebase 100% web com JS.
Alguns pontos:
- A primeira versão da aplicação ficou sem utilização por 1 ano até que as gravadoras começassem a gradativamente aceitar o Spotify
- O Chromium Embedded Framework (CEF) utilizado na aplicação é o mesmo que deu a base para o node-webkit e também é utilizado em aplicações como o Steam e o Slack.
- O Spotify ainda usa iframes!! Sim, mas há um motivo: a remoção dos iframes causaria um risco e um esforço muito maior no projeto de migração da tecnologia, então eles optaram por deixar assim por enquanto e removê-los com mais calma futuramente
- O codebase da aplicação está num único repositório e não separado em vários. No começo tentou-se criar um repositório para cada feature (playlist, radio, search) mas a fragmentação causou um esforço muito maior do desenvolvimento e eles optaram por unificar tudo. Basicamente esta foi uma situação dentre muitas outras onde o monolito imperou sobre o novo conceito de microserviços. É a vida!
Palestra 4 - Damian Schenkelman - Getting over Moore’s Law: Parallelization using JavaScript in the browser
O Damian fala aqui basicamente sobre Web Workers, Paralelização e Concorrência em JavaScript. Sou um completo ignorante nestes tópicos e portanto não tecerei muitos comentários. Quem sabe, sabe. Quem não sabe (como eu) que estude!
- Web Workers
- função postMessage()
- Typed Arrays
- Links:
Palestra 5 - Reinaldo Ferraz - A saga dos 12 tópicos de acessibilidade
Palestra bem técnica com relação a elementos de acessibilidade de um cara especialista no assunto.
Palestra 6 - Tania Gonzalez - The Javascript Toolkit
A Tania da TW falou sobre o JavaScript Toolkit, um compilado de diversos frameworks, bibliotecas e ferramentas para se trabalhar com o JavaScript. Para visualizar este compilado clique aqui.
Palestra 7 - Raphael Amorim - 500 days of open source
Aqui o Raphael basicamente faz uma palestra motivacional com o intuito de tirar nós, os desenvolvedores, de suas zonas-de-conforto e aprender mais e mais da forma que acharmos melhor. A ideia central é ter foco e manter um padrão ritmado de estudos para alcançar os nossos objetivos, seja ele o que for: aprender uma nova linguagem, técnica, pattern, framework, biblioteca, o que for!
No final ele comentou de um projeto criado por ele e mais alguns amigos que busca ajudar nesse objetivo, o Write Code Everyday. Para saber mais, clique aqui.
Palestra 8 - Nicolas Bevacqua - High Performance in the Critical Rendering Path
Seria praticamente uma ofensa tentar resumir essa talk nesse post. A quantidade de conteúdo foi enorme, mas o resumo é o seguinte: o Nicolas explicou várias técnicas e divulgou vários plugins que buscam tornar a performance de um site melhor. Essas técnicas vão desde minificar os nossos arquivos CSS e JS (coisinha básica!) até otimizar o TCP (eita! que isso meu deus?).
Aqui a talk dele. Fortemente recomendada para quem quiser ver algo que perdeu ou não foi no evento.
Palestra 9 - Nick Desaulniers - Improving game performance on the Web: WASM, SharedArrayBuffer, SIMD, WebGL2
O Nick falou sobre o Web VR, a API para gerar realidades virtuais na Web. Ele comentou sobre alguns pontos que o Damian já havia discutido na talk dele como Web Workers, SIDM, postMessage, SharedArrayBuffer e todas essas coisas que eu não conheco e estou pensando em estudar assim que digito isso. Ele até nos desafiou a criar alguma coisa usando o Web VR para ganharmos uma camiseta hoje (22/08), no segundo dia do evento. (sim, estou fazendo isso depois da meia-noite). Toma aí o link.
Palestra 10 - David Bryant - Keynote
Keynote sensacional com o “leader of the platform engineering team for Mozilla”, ou como ele se auto-intitula “Web Platform guy”.
Assim como o talk do Nicolas acho injusto tentar resumir a talk dele aqui pois ele comentou sobre bastante coisa, incluindo o Web VR, Web Assembly, WebRTC, Service Workers (offline capability, traffic interception) e coisas mais baixo nível como o JIT Coach.
Bom, é isso!
Após o segundo dia de evento pretendo complementar um pouco as informações postadas para deixar tudo mais completo, portanto continue acompanhando este link.
Qualquer coisa é só comentar aqui embaixo e compartilhar o conteúdo caso quiser.
Abraços!