Yesterday I wrote a detailed summary of everything I’ve done in the year of 2008 and I think it is important to translate it into English so everybody else outside of Brazil can see how we’ve been evolving.

This was a very busy year. I was always a quiet guy. On the other hand I always hated routine, I always hated do only the things everybody else were doing. I’ve changed perspectives several times. On the late 80’s I’ve toyed with DOS and standalone local systems. On the early 90’s it was client-server. Mid-90’s multimedia, CD-ROMs, publicity agencies. Late 90’s it was the first Internet wave. Early XXI century, enterprisey, SAP, Java. 3 years ago my Ruby on Rails journey began, first the portuguese book, then the blog, then throwing out the enterprise world for freelancing in Rails. This year, Locaweb, Rails Summit.

By 2006, right after I taught myself Rails, it was obvious that this was a worthwhile path. But, back then there was no market for Ruby in Brazil. Some people that started before me were already giving up. I had 2 options: try outside of Brazil or create a new market from scratch here. Obviously, I chose the less easy path. Fortunately more and more people joined and the community grew fast.

And before I go on, the good news! Next week, December, 3rd, Ruby on Rails will receive the “Info Award 2008” for software development, and I will be there on the behalf of David Hansson. For those of you who are not from Brazil, the “Info Exame” magazine is “the” single largest IT magazing in Brazil. So you can imagine that this is an important award and a big win for the entire Ruby community. This is a key milestone and I congratulate the efforts of the entire community for it.

Ufa, este ano foi corrido. Eu sempre fui um cara pacato. Por outro lado sempre detestei rotina, sempre detestei fazer apenas o que todo mundo faz. Já mudei de horizontes várias vezes. No fim dos anos 80 brinquei de DOS e sistemas locais. No começo dos anos 90 foram sistemas cliente-servidor. No meio dos anos 90 foi a era da multimídia, CD-ROMs, produtoras e agências de publicidade. No fim dos anos 90 foi a primeira onda da internet. No começo do século XXI veio o mundo corporativo, SAP, Java. 3 anos atrás começou minha jornada com Ruby on Rails, primeiro o livro, depois o blog, depois largar o mundo corporativo para ser freelancer de Rails. Este ano, Locaweb, Rails Summit.

Em 2006, logo depois de ter aprendido Rails, era óbvio ver que valia a pena ir nessa direção. Porém, naquela época basicamente inexistia mercado para isso no Brasil. Algumas pessoas que começaram Rails antes de mim, que eu contatei, não pareciam muito animadas também. Eu tinha duas opções: buscar meu caminho fora do Brasil ou criar o mercado aqui. Obviamente, escolhi o caminho menos óbvio. Felizmente mais pessoas se juntaram e a comunidade Ruby cresceu. A melhor coisa desta comunidade é que ela é essencialmente descentralizada. Coisas centralizadas falham. Quando você tem uma liderança central, a comunidade sempre terá esse teto artificial. Num universo que forma redes de livre escala, com vários grandes hubs bem conectados, a comunidade se transforma numa teia robusta e resistente a falhas aleatórias (Barabási). É a ordem emergindo do caos. É como outras comunidades open source cresceram, é como a comunidade Ruby cresceu também.

Antes de continuar, uma boa notícia! Semana que vem, dia 3 de dezembro, estarei representando o David Hansson para receber o Prêmio Info 2008 de desenvolvimento de software. Isso mesmo: vocês todos ganharam! O Ruby on Rails foi o escolhido este ano! Eu dei a notícia ao DHH e ele me autorizou a representá-lo. Esse é apenas mais um marco desta comunidade. Parabéns a todos!

Acho que já falamos exaustivamente da nova versão 2.2, que foi lançada alguns dias atrás. No geral, a única coisa realmente diferente que deve mudar a forma como você programa seus aplicativos é a Internacionalização. Teve muita mudança interna, como thread-safety, várias pequenas mudanças e adições que você pode conferir no PDF do Carlos Brando.

Mais interessante, para marcar o lançamento do 2.2, o Ryan Bates refez o screencast do famoso blog em 15 minutos que está agora na página de screencasts do site oficial. Já era hora deles finalmente atualizarem essa página pois o screencast original do DHH era da versão 1.0! Se interessarem, dêem uma olhada no screencast que eu tinha feito, alguns meses atrás sobre o mesmo assunto:

Faz tempo que eu falo de JRuby. Outros Rubistas como o Fabio Kung é um dos mais conhecidos com JRuby, ainda mais depois dos seus projetos jetty_rails e JMaglev. Eu mesmo já entrevistei o Charles Nutter e Tom Enebo, o Nick Sieger e o Ola Biniduas vezes, aliás!

Não deixem de ver o Wiki do JRuby para mais informações. Recentemente Brian Tatnall escreveu um relato sobre sua experiência com JRuby, chamado The Closet JRubyist. Como existem poucos relatos de JRuby, este ficou famoso instantaneamente. Existe um motivo para isso: há muita gente usando JRuby em projetos não-públicos, por isso passa em branco. Para motivar mais pessoas a usar JRuby, aqui vai a tradução desse relato.

Algum tempo atrás, mais especificamente em 24/11/2008, escrevi este artigo originalmente. Infelizmente, talvez quando migrei de Mephisto para Enki, o conteúdo deste artigo se perdeu e eu não lembro o que foi exatamente que escrevi nele. Por isso vou escrever um novo artigo do zero. Especificamente sobre como configurar seu ambiente para começar com Ruby on Rails no Mac.

Antes de mais nada, consulte o Wiki do Guru-SP, com diversos links para recursos em português, incluindo livros online, guias, tutoriais, grupos de discussão e muito mais que a comunidade brasileira de Ruby e Rails já preparou.

Myself and the Githubbers from Fabio Akita on Vimeo. QCon is finally over, it was a great venue, great people. Thanks to Floyd, InfoQ and all the organizers and sponsors. I think it accomplished it’s goal of discussing the new trends in technology. It is clear that functional programming, non-relational databases and the Agile philosophy are the way to go. Yesterday I had a great time with the awesome guys from Github. Chris Wanstrath, Scott Chacon and Tom Preston, together with RailsEnvy’s J...

Brasileiros: clique aqui

Finally, I was able to finish all the interviews I intended. The last one was with Ola Bini. It was weird because we started recording yesterday and continued today. The problem was that my recorder died out of battery :-(

So, in the end we did a 2 part interview, with almost 1 hour each. You will agree that this is the geekiest interview ever. It was actually more of a lecture, with Ola Bini explaining every conceivable programming technique and paradigm in the book. Seriously.

We went through Lisp, Erlang, F#, Haskell, Java, Self, ML, Ruby, Python, Javascript, Io and much more. It was a very intense conversation so make yourself prepared for an overdose of language geekiness discussion.

I had 2 goals in mind with this. First, to introduce many programming concepts before talking about Ola’s new language implemented on top of the JVM: Ioke, a Io-inspired language, prototype-based, highly dynamic, based on Io, Lisp, Ruby. This language is way cool, you should experiment with it

The second goal was to show people that there is this whole world out there, outside of plain Java or C#. And another thing was to not show a white-bearded senior developer like Kent Beck or Tim Bray :-) No offense, but it is accidentally convenient for me that Ola is so young (early 20’s), because now young CS students doesn’t have the ‘age’ excuse for not knowing all of these concepts already.

So, it was a very productive interview. Download the first audio file from here and Part 2 form here.

Brasileiros: cliquem aqui

I tried to make this not too fanboy-ish but what can I say? It is fanboyims :-) If you’re not aware of it (have you been living in Jupiter?) Leah Culver is the well known co-founder and lead Python/Django developer of Pownce.

She is also well known in the Brazilian Ruby Community. Some of us would go as far as to say that the only flaw of Ruby is not having Leah doing Ruby :-)


Leah Culver, at QCon SF (30 sec) from Fabio Akita on Vimeo.

This is not supposed to sound sexist or something mean like that. On the contrary, for a long time “programming” in Brazil was considered to be more of a “man-thing”, which is very wrong. And in Brazil we have this notion that a beautiful woman, specially blonde ones, are not good programmers. And there you have it: a successful programmer, doing Python, and still being cute.

My main point is that programming should not be “serious” in a sense that accomplished programmers should be men-in-black style, wearing suits, selling big proprietary bloated systems for Fortune 500 companies. Programming should be fun, programmers should have fun doing it. The time we can’t make jokes anymore, the time programming is just “enterprisey” stuff, is the time I quit being a programmer.

I am very happy to have found Leah here, and even more that she agreed to cheer the Brazilian community. I hope this is able to pass on the spirit of what programming is. It doesn’t have to be serious Python x Ruby or Ruby x everybody-else fights. We can all get together and have fun.

Cheers!

Brasileiros: cliquem aqui

Today was a pretty busy day of interviews. This afternoon I was able to first interview John Straw. He is the responsible for what he calls The Big Rewrite project. The project about replacing 150k LOC from Java, with no tests, to around 13k LOC of Ruby on Rails, with almost 100% test coverage, and without reducing the scope. The original project was developed unders 22 months and the rewrite took place in 4 months of development, with 4 developers (though they had 4 months of preparation and planning, but still …).

In this interview he talks about the motivations, how it was with the team to move from Java to Ruby, how they chose Rails, what’s the size of their infrastructure. It is a great case study for any company using Java to be reassured that changing to Ruby will only bring you benefits.

After that I finally interviewed Matt Aimonetti. He is the main Merb Evangelist. He has a training and consulting firm in San Diego, he was also responsible for MerbCamp, the first Merb event around. And he is also one of the main contributors to Merb.

He was kind enough to spend a long time showing me the nuts and bolts of Merb. I was not aware of its current state and I have to tell you that it is pretty compelling. Very well thought out, it has everything you need to start developing web applications with almost the same easy of use and convenience of Ruby on Rails.

Among the best things I saw in Merb is: it can be pretty close to Rails, so you will feel right at home. It has “Slices” which is feature that I expected Rails to have for a long time – it works almost the same way as Engines, but it is built-in and feels much better. It has a neat feature of a “master process”, so you can instruct it to load N workers processes (such as a mongrel cluster) and it will monitor those workers, so if one goes down, the master will respawn it automatically, which is pretty convenient. And finally, it’s modularity is top-notch. It feels weird at first having lots of gems around, but it makes sense very fast.

And according to Matt, Merb is way faster than Rails – at least in a “Hello World” benchmark :-) All in all, I highly recommend it, specially if you’re already an advanced Ruby developer that wants more (or less) than Rails can offer out of the box right now.

Download John’s audio file from here and Matt’s file from here.

Brasileiros: cliquem aqui

This morning I interviewed Nick Sieger, core committer for the JRuby project. I was very interested to know more about how it is to develop Rails application using JRuby. He explained about the new connection pooling system in Rails 2.2 and other details about his work and contributions to JRuby.


Nick, Matt, Chris and Jan

After that I was able to interview Francesco Cesarini. He gave us an introductory tutorial on Erlang early this week. He’s been working with Erlang for the last 15 years and he is also writing a new book for O’Reilly, called Erlang Programming. This is a very insightful conversation on functional programming, scalability, concurrency and why all these subjects matter today and how Erlang fits in.

It was interesting because both Kent Beck and Tim Bray were talking about future trends in their keynotes and both mentioned CouchDB and Erlang as great stuff. You want to stay ahead of the curve? Learn Erlang.

The audio files will show up in the Ruby on Rails Podcast Brasil feed soon enough, but before that happens, you can download the audio files directly from here. Click here for Nick and here for Francesco.

Brasileiros: cliquem aqui

Another great day at QCon SF, and this morning I had the pleasure of interviewing both Jan Lehnardt and Chris Anderson, both committers for the extraordinary CouchDB project. And there is another nice twist to this as Chris is also the creator of the CouchRest project, the Ruby library to consume CouchDB resources that Geoffrey Grosenbach presents in his CouchDB screencast.

I’ve been saying that Functional Programming and Non-Relational Databases will be the way to go into the multi-core, multi-server parallel world. We are seeing this movement already. Sun is investing in different languages, including Clojure. Microsoft has been developing F# and will add functional aspects to C# 4.0. In the Cloud space we see Amazon with SimpleDB, Google with BigTable and Microsoft Azure with SQL Data Services: none of them are relational.

In the Ruby community we’ve been dabbling around Erlang for a while now, I’ve seen people trying out CouchDB with Ruby projects, even here in Brazil. So I think Rails/Merb + CouchRest will be a really nice way to have highly scalable applications almost “out of the box”.

We’ve been good at scaling the Web tier. We understand HTTP, we know load balancing techniques, we understand shared-nothing architectures. But there is always the last mile: the database tier. SQL Server implementations such as MySQL scales very poorly. Bi-directional replication is a pain to do, queries are not easily parallelizable. At some point you will have to leave the relational theory behind and start denormalizing like crazy. And at some other point, you might even need to shard your database. All this requires you to change your application code and everything is just one big and nasty nightmare.

Database scalability does not come for free, and one solution may be to leave RDBMS completely. I am not advocating dropping SQL for everything and going CouchDB, but instead that some Use Cases may be more well served with Documente-Oriented Databases instead.

Jan and Chris were really nice to give me the opportunity to interview them on the ins and outs of CouchDB. Bottomline: it’s good to prime time right now. New features are coming, but you can take advantage of it today. Again, the audio file will be available in the feed for the Ruby on Rails Brasil Podcast (in English), but you can download directly from here.

Brazilians: click here

Update 11/19: Seems like the zip file was corrupted, I replaced it with the mp3 file itself. Please, try downloading again.

There’s been a lot of buzz around Rails lately. In particular, DHH published a series of Rails Myths articles. The #2 Mythbuster, for instance, brought Zed Shaw back for some more though it was rectified already. But Mythbuster #4 got some replies from Yehuda Katz, the current maintainer of Merb.

The main issue is around Modularity. DHH’s point of view is that Rails is modular enough and you can let some components loose. But Yehuda’s argument is that it requires you to patch Rails in order to release it from some of its components, whereas Merb was built around the concept of modularity from the beginning. Some people got worried that another Cold War was starting but Yehuda says that this is not the case and that open discussions like these are actually good, instead of having behind the scenes nitpicks.

While in San Francisco for QCon, I was able to interview Yehuda on these matters. By the way, thanks a lot for him and Leah for the nice dinner. I think this is a pretty comprehensive overview of Merb, DataMapper, the current issues around Rails modularity.

On the other hand we had some sad news yesterday as well: Engine Yard was forced to lay off lots of Rubinius developers. Evan explained the reasons in his blog, and Yehuda states again that Engine Yard is still committed to Rubinius. Besides that, they also announced yesterday that EY will have a new line of services around Amazon Web Services, providing tuned appliances for optimal Rails deployments in the cloud.

I have all the details in this special episode of the Ruby on Rails Podcast Brasil (in English). It is not in the official website yet, but expect it to show up in the feeds by tomorrow. Meanwhile you can download it directly from this link

I’ll have more insights from QCon later this week, stay tuned.

Faz algum tempo que quero fazer um agregado com todos os blogs e sites que falaram sobre o Rails Summit Latin America 2008. O LiveStream do BlogBlogs agregou mais de 2.700 updates (twits, flickrs, youtube, etc). Acho que consegui juntar praticamente tudo que vocês postaram, mas se alguém fez um Review sobre o Summit e não está na lista, não deixe de comentar.

Mais uma vez, estou muito contente que conseguimos erguer um evento que o pessoal gostou tanto. Espero que isso tenha ajudado a dar ânimo novo a quem já era Railer e também tenha incentivado novos integrantes nesta excelente comunidade.

Sigam adiante para ver os links.

Dois novos cursos à sua espera, pequeno Padawan :-) Primeiro, o curso sobre Shoes, o mini-framework para desenvolvimento de aplicações Desktop multi-plataforma criado pelo Why, the Lucky Stiff. O curso será ministrado por Satoshi Asakawa no RubyLearning.com, começando no dia 15 de novembro. Ruby não é só Rails, não percam! Segundo, a e-Genial finalmente está com um curso sobre o assunto da moda: BDD (Behavior Driven-Development) no Rails com RSpec, e por ninguém menos do que uma das maiores r...

Faz algum tempo que eu quero escrever um tutorial da linguagem Ruby. Não uma documentação extensiva mas sim um hands-on mostrando onde o Ruby é diferente de outras linguagens tradicionais. Para isso preparei este Micro-Tutorial dividido em 3 partes. Parte I

Parte II
Parte III

Se encontrar algum erro nos textos, não deixe de me avisar pois ainda não tive tempo de revisar. Sugestões sobre assuntos importantes que eu esqueci de mencionar também são bem vindos. Este tutorial estava na minha lis...

Vamos continuar de onde paramos. Leia a Parte I e Parte II antes de continuar. E algumas dicas finais:

Eu tenho alguns tutoriais e screencasts disponíveis na seção Tutorials aqui neste blog mesmo. Muitos me perguntam sobre livros, existem dezenas (procure na Amazon) mas lembrem-se do seguinte: nenhum livro, em inglês ou português, jamais será capaz de ter tudo atualizado. Projetos open source estão em constante evolução. O Rails 2.1 saiu faz poucos meses e o 2.2 já está para sair daqui poucos dias. É impossível nesse meio tempo ter todos os livros atualizados, muito menos traduzidos. De preferência, use os dois: livros e material online. Isso dito, se você puder comprar apenas 1 livro de Ruby e 1 de Rails escolha The Ruby Way e The Rails Way.

O principal: participe. Existe uma comunidade Brasileira em constante expansão. Procure por nós no Google Groups. Pesquise antes de perguntar, como disse acima, existem centenas de boas fontes de informação.

Vamos continuar de onde paramos. Leia a Parte I antes de continuar. Mas antes, mais algumas dicas:

Para quem quer aprender Ruby com material em português tem três opções: Aprenda a Programar que foi um esforço de tradução da comunidade Brasileira, é um livro bem mais básico para quem sequer tem treinamento em programação. Também tem o Why’s Poignant Guide to Ruby que é outro esforço coletivo de tradução da nossa comunidade, liderada pelo Carlos Brando. O livro do Why é um grande clássico da literatura de Ruby. O TaQ também tem um PDF disponível para download.

Depois de fazer várias palestras nas últimas semanas, uma coisa que notei é que a maioria das pessoas que está iniciando no Ruby, ou só ouviu falar de Rails, fica muito surpreso ao ver algumas das características da linguagem.

Este artigo é destinado aos iniciantes ou a quem começou a se interessar recentemente por Ruby e Rails. Antes de mais nada, quem já sabe um pouco de Ruby e quer alguma documentação sobre Rails, recomendo muito o novo site Rails Guides, um esforço que se iniciou com o Pratik Naik e deu grandes frutos. Este site é um trabalho em constante evolução mas já concentra toneladas de guias sobre as principais funcionalidades do Rails. O Cassio, da DRC, também tem um PDF (e um screencast) disponível em seu site, que é uma atualização do material criado pelo Ronaldo Ferraz.

Meu objetivo nesta série de artigos é demonstrar algumas das características de Ruby que a tornam diferente de outras linguagens, principalmente as estáticas como Java ou C#.

Disclaimer: antes de mais nada, vale avisar que usarei alguns trechos de código Java apenas como referência para quem vem de linguagens tradicionais. Não considere isso uma comparação direta (pois os códigos estão propositadamente não otimizados ou simplificados por motivos didáticos).

Parece que faz meses que o Rails Summit passou! E eu ainda não consegui descansar. Dia 23/10 participei do evento Seccomp, na Unesp de Rio Claro. Sábado retrasado, dia 25/10 teve a InterCon 2008, onde palestrei a convite do grande Luli. E sábado passado palestrei no evento de lançamento da InfoQ Brasil, promovido pela Fratech. O Hugo Borges conseguiu capturar metade da palestra e me enviou o link, confiram: Akita On Rails no Lançamento do InfoQ (parcial) from hugo borges on Vimeo. E ainda não...

What can I say? I am not from the United States of America. I am not at all into politics (this blog is not about politics). But for some reason I’ve been cheering for Obama since the beginning of the US campaign and I am very very satisfied tonight. Embedded video from CNN Video Hope he can live up to his promises. His winning speech was perfect: not at all cheering, but sober and serious, about hope and unit. I just wish we had politians like him here. McCain was the safety bet, Obama was t...