If you're a seasoned Ruby web developer you're probably familiar and comfortable using the usual suspects to deploy your applications. You're either deploying something simple through good old Thin, or you're orchestrating several Ruby processes through Unicorn workers, or you're trying out JRuby and want better concurrency and thread management, and therefore you're using either Puma or Torquebox.

And even though it feels like we are already at the peak of what's possible with Ruby, we do want more. Ruby 2.1.3 was just released, 3.0 is in development. But until then it should be possible to squeeze some more performance out of your boxes.

In fact, a new contender, with some new approaches just showed up. I have little details so far, but it's a brand new product - not derived from the others - from an unknown team. This product is named "Raptor" and they claim that it can squeeze the extra juice out of our boxes.

And this is their claim:

Raptor Chart

Este ano, além da discussão sobre TDD (que não está morto!), ninguém menos que o próprio signatário do Manifesto Ágil, Dave Thomas, declarou a morte de "Ágil" como conhecemos hoje.

Alguns artigos que podem dar base ao resto da discussão:

Na minha empresa, desde sua concepção, não usamos a palavra "Ágil", "Scrum" nem nenhum buzzword. Temos sim, "sprints", mas coisas como grooming, planning poker (brincadeira!), e outros "rituais" não são de jeito nenhum "impostos", mas as práticas são usadas (com ou sem os nomes), sempre que necessárias. Não gosto de usar a palavra "Scrum", "Kanban" ou qualquer outro, me dá uma leve vergonha de mencionar esses nomes.

Hoje eu li uma série de tweets de Marc Andressen onde ele começa dizendo o seguinte:

"Faça o que ama"/"Siga sua paixão" é um conselho perigoso e pode destruir sua carreira.

Outra celebridade reconhecida nos EUA é Mark Cuban, dono do Dallas Mavericks que, em 2012, disse a mesma coisa:

"Não siga sua paixão, siga seu esforço."

Ao que indica, o famoso Confucious disse pela primeira vez a frase que se tornaria um dos maiores clichês para jovens, saindo da adolescência e tendo que encarar a vida adulta de responsabilidades reais:

"Faça o que você ama e o dinheiro vem em seguida."

Aliás, Confucious é meio que um genérico pra tudo: não sabe quem disse? Diga que é de Confucius. (Aliás, o disclaimer de sempre: só porque eu citei pessoas não significa que concordo com elas ou com tudo que dizem, são meras referências!)

Nunca imaginei que fosse chegar a este ponto e - juro que não foi planejado - coincidiu com o último dia da 7a Rubyconf Brasil, e com o 10o aniversário do Ruby on Rails!

Além disso coincidiu com a primeira palestra que farei numa Rubyconf Brasil desde 2010.

A Palestra mais importante que dei até hoje

Muitos dizem que não acreditam em coincidências, eu por outro lado, acredito em providência. Alguém se lembra do que escrevi no meu Primeiro Post, em 2006?

E recentemente nosso grande camarada Rafael Rosa Fu do GrokPodcast - que aliás, também lançou o último episódio da minha conversa com George Guimarães, Carlos Brando sobre os 10 anos de Ruby on Rails - começou uma iniciativa no Twitter com a hashtag #ClubeDosPosts. Tantos grandes e talentosos desenvolvedores despontaram nos últimos 8 anos de Rails no Brasil e gostaríamos muito que eles compartilhassem seu conhecimento e experiência com todos nós. Ajude-nos a incentivá-los!

Diferente do que eu faria, desta vez resolvi escrever pouco e pela primeira vez também no meu blog, pedi ao Rafael Rosa para escrever em suas palavras sobre este assunto. Assim, o resto do artigo são as palavras não alteradas do Rafael.

Obrigado a todos por me acompanharem por tanto tempo, espero chegar no post 10.000 um dia!

Eu expliquei rapidamente sobre Metasploit no artigo anterior, e sobre o desafio do @joernchen. Se você ainda não resolveu o desafio, talvez queira deixar pra ler este artigo depois!

SPOILER ALERT

Mas se abriu até aqui no artigo é porque quer saber o que é o problema. O @joernchen publicou exatamente o seguinte código:

Ontem o @joernchen mandou um pequeno desafio básico de segurança pra comunidade. Ele postou um código de uma pequena aplicação, colocou ela no ar, e nos desafiou a resetar a senha do administrador.

Confesso que demorei mais do que gostaria mas no fim eu consegui - e foi simples (post sobre isso vem depois).

No caminho eu acabei explorando o Metasploit, provavelmente um dos melhores e mais conhecidos pacotes de testes de penetração de segurança. E alguns não sabem disso mas ele não só é código-aberto (existem ferramentas e serviços pagos) como é uma aplicação Rails! Então vale muito a pena acompanhar esse projeto.

Finalmente consegui fazer uma retrospectiva com os principais acontecimentos não só da última década de Ruby on Rails mas eventos em anos anteriores e durante que influenciaram nosso ecossistema de alguma forma significativa.

Como base eu pedi permissão ao Luke Francl que publicou o artigo original Looking Backward: Ten Years on Rails. Sobre ele, adicionei diversas novas datas que não estavam lá mas que foram significativas.

Certamente tem diversos outros que eu não coloquei ou me esqueci mesmo (vou adicionando aos poucos). Se quiserem contribuir eu coloquei um Gist para que todos possam fazer fork e me mandar mudanças.

Quando vocês começaram a programar com Rails/Ruby e por que? Coloque nos comentários abaixo! Eu devo fazer um outro post separado também contando um pouco do meu começo com Rails mais pra frente.

Este vai ser curto (finalmente!), tenho alguns links que estão abertos como abas no meu browser faz muito tempo, hora de colocar no post para poder fechá-los.

Já se perguntou onde encontrar or projetos que o pessoal open source está mexendo mais ultimamente?

Se não conhecia, um lugar que você pode ir é o Ruby Toolbox. Ali você pode procurar sobre algum assunto, por exemplo, parsing de JSON e lá você pode descobrir que tem o multi_json (que no fundo é um adaptador pro demais) e que a gem "js...

TL;DR: This is the Google Maps with all the places I mention in this post already set up in layers over the city.

All Tourism Points in São Paulo

If you read my mini City Guide from last year you're probably already acquainted with the Geography of the place. It's always important to be aware of your surroundings when you're in a foreign land.

Now you're here, you don't have a lot of time to randomly explore. And that would not be efficient anyway because São Paulo is humongous in size. I live here all my life, almost 4 decades, and I didn't explore everything yet.

São Paulo Aerial

But if you're near a Subway station (Metro) you're in luck as many of the staples of the city are at walking distance from the many stations or not far with Taxi from one of the stations. So let me pinpoint a few must-go places.

Estou eu neste instante (23/8), fazendo minhas pesquisas e reflexões, escrevendo a história que quero contar no fechamento da Rubyconf Brasil 2014, no próximo dia 29/8 (todos aqui estarão lá, certo!?), e eis que decido fazer um pequeno post.

Obviamente eu soube que o DHH fez um keynote na última Railsconf em Chicago, que se tornou bastante controverso por levantar o assunto de "TDD está morto?". Também soube que aconteceu um debate via Hangout entre o próprio David, Martin Fowler e ninguém menos que o criador do TDD, Kent Beck.

Finalmente hoje assisti tanto o keynote quanto os vídeos do debate, que eu não havia assistido até agora. Devo dizer que enquanto eu estava assistindo meus dedos estavam coçando para escrever sobre o assunto. Porém, devo dizer que desisti - pelo por enquanto - de fazer um artigo para dar minha opinião detalhada.

Em resumo, devo dizer que concordo com tudo que o DHH disse em seu keynote. Sinceramente não vi nada de "controverso". Na verdade acho que nenhum programador experiente viu qualquer problema no que ele disse, mas ficou preocupado com o que todo o resto poderia interpretar o que ele disse. E de fato foi o que aconteceu.

Hoje, dia 19 de Agosto, celebramos o trabalho de Why, The Lucky Stiff. Quem foi à Rubyconf Brasil 2013 assistiu em primeira mão, em telão de cinema, o "beta" do documentário "Two Cartoon Foxes", que está sendo produzido por Kevin Triplett.

Um ano depois ele finalmente está lançando seu trabalho ao mundo! Então, sem mais delongas, aqui vai:

Ano passado também escrevi sobre o assunto, então não vou me repetir.

Em 2012, escrevi um artigo (em inglês), com uma teoria pessoal do desaparecimen...

O pessoal da QConSP soltou hoje a gravação da minha palestra. Agradecimentos à organização e imagino o trabalho que minha palestra deve ter dado :-) Infelizmente o formato que eles usam é gravar o rosto do palestrante e sincronizar os slides disponibilizados em PDF.

O problema é que minha palestra não dá pra entender se a sincronização dos slides não estiver perfeita, não tiver as animações de transição e ainda por cima no PDF não vai os vídeos que eu gravei. Então, se assistir dessa forma, não vai dar pra entender esse assunto que já não é fácil.

Pensando nisso decidi fazer o seguinte: baixei o MP3 deles, abri o Keynote original e gravei usando ScreenFlow. Ficou quase sincronizado perfeito e deve estar muito melhor pra assistir. Acabei de subir no YouTube, então aproveitem!

Todo ano, em toda lista de discussão, algum iniciante sempre vai perguntar: "Que IDE devo usar?" E isso vai gerar sempre todo tipo de flame war.

RubyMine

O TL;DR para este post é o seguinte:

  • Se quiser 100% open source e old school: Vim com Oh-My-Zsh ou YADR.
  • Se quiser 100% open source e hipster: Atom.io, que é o editor feito em Javascript pelo Github.
  • Se quiser o melhor moderno, mas comercial: Sublime Text. Não é barato, a USD 70, mas garanto que vale cada centavo, especialmente aliado ao Package Control
  • Se quiser o melhor old school, mas comercial: Textmate, está estagnado há anos desde que se tornou o favorito dos Railers na era 2006-2009, mas a versão 1.5.x (não a 2.0) é muito boa, e eu pessoalmente ainda uso para várias coisas ainda hoje.
  • Se quiser uma IDE de verdade, com ferramentas mais avançadas para refactoring e debugging, definitivamente use RubyMine. Custa USD 99 e vale cada centavo, ou se você mantém projetos open source, pode requisitar uma licença gratuita
  • Se for somente um montador de front-end, uma opção para Mac que parece interessante é o Coda 2, disponível na App Store.

Aliás, para entender uma diferença crucial de filosofias entre Vim e Atom/Sublime/Textmate, leia este ótimo artigo "Why Atom Can’t Replace Vim". Vim, assim como Emacs, tem uma filosofia própria.

Este post é dedicado a quem utilizar Mac OS X (ou mesmo Windows) como sistema de desenvolvimento. Para quem usa uma distro Linux, adapte para usar o plugin de LXC do Vagrant.

A versão TL;DR é muito simples. Baixe e instale o VirtualBox e o Vagrant. Assumindo que está no OS X (já tem Ruby 2.0.0 pré-instalado), faça o seguinte do Terminal:

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo gem install berkshelf
vagrant plugin install vagrant-berkshelf
vagrant plugin install vagrant-omnibus

mkdir ~/Vagrant
cd ~/Vagrant
git clone https://github.com/akitaonrails/vagrant-railsbox.git railsbox
cd railsbox

export VAGRANT_SYNCED_FOLDER=~/Sites

berks install
vagrant up --provision

Em 2007 escrevi meu primeiro livro "publicado", sobre Ruby on Rails. Em 2006, comecei este blog. Mas essas não foram minhas primeiras experiências escrevendo.

Se acompanha meu blog viu que ontem publiquei um artigo sobre Segurança, onde falo sobre a importância do Backup. Imagine que minha rotina de backup vem de longa data. Eu já fazia backup quando tudo que eu tinha eram caixas de disquetes. E a cada nova geração de mídias eu transferia de uma para outra. Foi assim de disquetes para discos de zip drive, depois para CDs, daí para DVDs e finalmente para meu Drobo, como publiquei em 2009 e parte dele para Dropbox.

De vez em quando dou uma fuçada nesse backup e acabei de esbarrar num "livro" que escrevi quando era estudante do 3o semestre de Ciências da Computação na USP, em Maio de 1996! Aliás, o backup é datado de Maio de 1996, provavelmente eu escrevi isso antes!

Trecho

Fonte: The Road Ahead - Bill Gates