Javascript 
ao infinito e além 
Rafael Specht da Silva 
@rafael_sps
Quem? 
- Formado em Telecomunicações no IFSul 
- “Contribuidor” na Hack Thursday 
- Ex Eckert-Caine 
- Ex / Atual RBS
Javascript é uma linguagem bem legal, mas... 
0.3 === 0.1 + 0.2 // false 
// porque... 
0.2 + 0.1 === 0.30000000000000004 // true 
// exemplo by Douglas Crockford
Isso é quase engraçado...
Javascript é útil para …
… fazer relógios
… validar formulários
… AWESOMENESS
“Existem mais APIs entre o 
céu e a terra do que sonha 
vossa vã filosofia” 
(talvez pra fazer o que já se fazia no desktop e/ou devices...)
WebSockets 
Uma maneira de trocar informação em “tempo 
real” 
SSE resolve(rá) o problema de “só receber”
LocalStorage 
Armazena strings localmente sem incluí-las no 
cabeçalho HTTP como o Cookie
WebSockets + LocalStorage 
- LocalStorage é comum para um domínio 
- Então, permite trocar informações entre janelas/abas 
- Logo, LocalStorage permite compartilhar informações 
recebidas pelo Socket entre janelas/abas
Talk is cheap… 
(exemplo)
Network Information API 
Porque nem sempre sabemos a situação da 
conexão do usuário…
Network Information API 
var connection = navigator.connection || navigator. 
mozConnection || 
navigator.webkitConnection; 
bandwidth - estimativa da banda atual 
metered - a banda do usuário pode sofrer limitações
Page Visibility API 
Permite obter o status de visibilidade de um 
documento 
(talk is cheap…)
Battery API
Battery API 
Provê informações sobre a bateria do 
dispositivo do usuário 
window.navigator.battery
Push State
Push State 
Acesso ao histórico do browser 
window.history 
(talk is cheap...)
Web Audio API
Web Audio API 
Acesso e manipulação de um contexto de 
áudio
Qual a diferença para a tag <audio>? 
- Manipular propriedades do sinal de áudio 
- Possibilidade de adicionar ganho, filtros, etc 
- Manipular espacialização 
- etc
Oscillators 
Podemos criar ondas: 
- sinusoidais 
- dentes-de-serra 
- triangulares 
- quadradas 
(demo)
Exemplos em produção 
Muito útil para jogos e apps onde podemos 
melhorar a experiência e imersão 
- Jogo “mano-a-mano” (link, github) 
- Guitarra HTML5 (link, github)
Release the Unicorns
Processamento de Áudio 
Métodos como ‘createMediaStreamSource’ e 
‘createScriptProcessor’ permitem manipular o 
áudio em tempo real. 
Por que não fazer um pedal de guitarra? 
(altamente inspirado pelas palestras do @almirfilho (link) e do @eshiota (link)
Obrigado!! 
@rafael_sps 
github.com/rssilva 
rafaelspdasilva@gmail.com 
fb.com/rafaelspdasilva

Javascript ao Infinito e Além