1. Como Não Escrever o Projeto Lixo do Futuro
1.1. Conheça os pontos negativos
1.2. Domine a API
1.3. Use a melhor ferramenta para o problema
2. Micro Cloud Foundry (PaaS)
2.1. @pmenglund, [email protected]
2.2. Promotion code: RubyConfBrazil
2.3. Also works in VirtualBox
2.4. Bosh
2.4.1. More than chef or puppet
3. Uma Restrospectiva sobre Projetos Problemáticos
3.1. rails best practices gem
3.2. Dreyfus Model
3.3. Testar o necessário
3.4. Práticas sem contexto são dogmas
3.5. Presenters
3.6. @danielvlopes, @jeffrydegrande
4. Vamos falar sobre concorrência
4.1. @josevalim
4.2. Haskell
4.3. ruby: #curry
4.4. Técnicas de gerenciamento de estado
4.4.1. Locks
4.4.1.1. Ruby
4.4.2. Transactional memory
4.4.2.1. Clojure
4.4.3. Message passing
4.4.3.1. Go
4.4.3.2. Erlang
4.5. Referências
4.5.1. Celluloid
4.5.2. Elixir
4.5.3. Book: Seven languages in seven weeks
5. Por que nosso código cheira mal
5.1. @bkeepers, github.com/bkeepers
5.2. Referências
5.2.1. Book: Refactoring
5.2.2. Book: Grow OO Software, Using Tests
5.2.3. Video: Fast Test, Slow Test
5.2.4. Video: Fast Rails Test
5.3. #1 Unit Tests are Complex
5.3.1. When objects are tighly copled
5.3.2. When objects are doing too much
5.3.3. Too much setup needed
5.4. #2 Unit Tests are Slow
5.4.1. When interact with slow components
5.4.2. When don't test object by isolation
5.4.3. When bootstrap heavy frameworks
5.5. #3 Tests tightly coupled to a framework
6. Aplicações mais simples
6.1. Watch
7. Conheçendo as entranhas do Rails
7.1. @rafaelfranca, github.com/rafaelfranca
7.2. rails-api
7.3. Mailer assíncrono
7.4. Notificações
8. Escalabilidade com JRuby e TorqueBox
8.1. TorqueBox
8.1.1. Rack
8.1.2. Schecule Jobs
8.1.3. Background Processing
8.1.4. Long-running daemons
8.1.5. Caching
8.1.6. Messaging
8.1.7. Websockets
8.1.8. Clustering
8.2. Many services in one (easy to config and maintain)
8.3. Applications
8.3.1. immutant.org
8.3.2. dyn.js
8.3.3. escalante.io
9. Boas e Más Práticas de App Rails em Ambiente Corporativo
9.1. Explosão de código
9.1.1. Abuso de monkey-patch
9.1.2. Forks pessoais
9.1.3. Deixar upgrades para depois
9.1.4. Forçar o Rails além do seu limite
9.1.5. The Rails Way is the only way
9.2. Como evitar
9.2.1. Teste seus monkey-patches
9.2.2. Extraia gemas para facilitar a manutenção
9.2.3. Pense além do model/view/controller/helper
9.2.4. Limite o número de pontos de integração
9.2.5. Bom design OO
9.3. Estratégias de teste
9.3.1. Gerenciar testes funcionais por estória
9.3.2. Abuso no uso de mocks
9.3.2.1. Re-testar o framework
9.3.2.2. Mockar o objeto sendo testado
9.3.3. Ter um time separado cuidando dos testes
9.3.4. Investir em automação de teste de UI
9.3.5. Testes só rodam em determinado ambiente
9.4. Desejável
9.4.1. Testes funcionais de user journeys e não por estória
9.4.2. Muito mais testes unitários que testes funcionais
9.4.3. Todo mundo é dono dos testes
9.4.4. Código de testes também é código
9.4.5. Evite acoplar testes com determinado ambiente
9.5. Deployment e Problemas em ambiente de produção
9.6. O que não fazer ao lidar com dados
9.6.1. ActiveRecord num schema que vc não controla
9.6.2. Usar vários BDs na mesma aplicação
9.6.3. SqlServer
9.6.4. Usar NoSQL como RDBMS
9.7. Desejável
9.7.1. Divida em aplicação/serviços menores
9.7.2. Defina quem tem posse dos dados
9.7.3. Representantes do negócio em decisões arquiteturais
9.7.4. Considerre usar processos ETL
9.7.5. Teste!
9.8. Problemas com capistrano
9.8.1. Encoraja deployments fora da integração contínua e direto do controle de versão
9.8.2. Branches para ajustes de produção
9.8.3. Ciclo de vida complicado
9.8.4. Processos dif[iceis de auditar
9.9. Desejável
9.9.1. Não usar o ciclo de vida padrão
9.9.2. Empacotar aplicação usando rpm, deb, etc.
9.9.3. Use capistrano para instalar os pacotes nos ambientes
10. StartupDEV
10.1. startupdev.com.br
10.1.1. Foco: Startups que desejam um protótipo
10.1.2. Sistema inicial em 48h
10.2. Visão Lean
10.2.1. Menos linhas de código
10.2.2. Escopo limitado pela pontuação de features (timebox)
10.2.3. Não criar barreiras
10.2.4. Comunicação clara
10.3. Técnicas
10.3.1. Requisitos: mockup em papel
10.3.2. Delivery => Done (o que está entregue não precisa ser revisto)
10.3.3. TDD
10.3.3.1. 100% de cobertura
10.3.3.2. test/code ratio ~ 3,5
10.3.4. Integração contínua
10.3.5. Deploy contínuo
10.3.5.1. Heroku
10.3.6. Rails Template
10.3.7. Refactory
10.3.8. Gem integration
10.4. Ferramentas
10.4.1. Typus / ActiveAdmin*
10.4.2. Postgresql / MongoDB
10.4.3. DelayedJob / Sidekiq*
10.4.4. Devise / Omniauth*
11. Infiltrating Telecoms using Ruby
11.1. Speakers
11.1.1. Ben Klang @bklang
11.1.2. Ben Langfeld @benlangfeld
11.1.3. MojoLingo
11.2. Examples
11.2.1. Integration between text and voice
11.2.2. Verbalizeit (online translation)
11.3. Sample app: 3958 8592
11.4. Adhearsion
11.4.1. Check it!
12. Poderosas Interfaces Rails
12.1. Os três filtros das interfaces
12.1.1. #1 Os métodos devem implementar o que seus nomes dizem fazer
12.1.2. #2 Deve ser eficiente (unix like)
12.1.3. #3 Avisar o cliente caso haja algum erro
12.2. Idéia: não utilizar models AR nos controllers
12.2.1. Models AR devem se preocupar somente em se persistir.
12.2.2. Deveriam ser chamados por outros models não AR.
12.3. Design by Contract
12.4. Presenters
13. Travis CI
14. Quem precisa de WebSockets?
15. Reunindo Ruby, Java e uma Arquitetura Orientada a Serviços
15.1. Case: projeto grande em Rails 2 com uma equipe inchada
15.1.1. Testes lentos
15.1.2. Usava o banco como fila
15.1.3. Longos períodos de QA
15.2. Separação em aplicações diferentes
15.2.1. Compartilhamento de código via gems
15.2.2. Podem utilizar tecnologias diferentes
15.2.3. Integração através do resque
15.2.4. API REST com json para comunicação
15.2.5. Não existe banco compartilhado
15.3. As duas aplicações passaram e evoluir independentemente
15.4. Falhas
15.4.1. Problemas de comunicação entre equipes
15.4.2. Documentação
15.4.3. API pública e API privada deve estar separadas
15.5. foreman gem
15.6. Conclusões
15.6.1. Construa aplicações pequenas e focadas em algum trabalho
15.6.2. Só compartilhe dados pela API, não pelo banco de dados
15.6.3. API privada deve ser mínima
15.6.4. Não misture a representação de saída com seus models
15.6.5. Separe fontes/bancos de dados
15.6.6. Rails Engines não é solução para isso
16. Testes de interface com JRuby e Sikuli UI
16.1. Book: The Rails View
16.2. Bot baseado em reconhecimento de imagens e entradas através de emulação de teclado e mouse
16.3. Aplicação: Testes de aceitação em emuladores
17. Addicted to Stable
17.1. Automated tests
17.2. Automate backup and restore
17.2.1. Test it regularly