[Rafael Biriba] Primeira festa de aniversário do blog

February 5th, 2010

1-ano-rafaelbiribablog-mini

Hoje (05/02), o blog comemora 1 ano de existência. E não existe nada melhor do que comemorar com festa.

Como o Blog está recebendo pequenos “ganhos” com as publicidades, resolvi organizar uma festa “simbólica” no dia 03/02 junto com o pessoal da Globo.com. Por sorte o Leonardo Quixadá (Client-Side do time de vídeos), fazia aniversário no mesmo dia da festa e aproveitou para comemorar o seu aniversário. (Mais abaixo o vídeo e as fotos da festa)

Desde o lançamento (05/02/2009) até agora, o blog teve quase 30 mil acessos e mais de 75 mil páginas visualizadas.

Aproveito a ocasião para agradecer ao Bruno Souza, que me incentivou a criar o blog. A idéia de compartilhar conhecimentos com o mundo e ter muitos e muitos acessos por mês foi tudo o que eu precisei ouvir para criar o blog.

whois-rafaelbiribablog

Agradeço também a todos os leitores, principalmente os assíduos, pelo apoio e participação nos comentários. Tem alguns que me mandam emails constantemente cobrando posts novos no blog. Prometo que vou pensar num jeito de recompensa-los… Quem sabe com promoções e sorteios ? :)

O maior desafio mesmo é escrever um post de qualidade. Se tiver algum blogueiro lendo isso, vai saber do que eu estou falando. Procurar um tema bom, escrever, revisar, consertar alguns erros, revisar de novo, e etc… Mas a recompensa de todo esse esforço vem ao analisar as estatísticas do blog ;)

Um abraço a todos os leitores,

Vídeo da festa:

http://www.youtube.com/watch?v=4ps8FDOPtJA

 

Fotos:

Banner improvisado em cima da hora !Arrumação Inicial =DFesta de aniversário do blog: 1 anoBolo ou tortinha simbólica da festa...Festa de aniversário do blog: 1 anoAlgumas pessoas da equipe de vídeos da Globo.comFesta de aniversário do blog: 1 anoFesta de aniversário do blog: 1 anoFesta de aniversário do blog: 1 ano5 min. depois da festa... haha

 


 


Leia também:

[Emerson Macedo] Não se apaixone pela sua tecnologia

February 3rd, 2010

Cansado das briguinhas recentes em listas de discussão, blogs e foruns sobre Ruby x Python, resolvi escrever sobre o assunto de forma totalmente imparcial. Serei imparcial, não por causa do blog, mas porque com esse tipo de assunto eu sempre geralmente sou imparcial, pois pela diversidade de empresas que trabalhei durante os meus mais de 12 anos de carreira, acabei sempre trabalhando com as 2 linguagens que eram o motivo da briguinha, em cada época distinta.

No início

Em meados de 1997/1998, pouco antes da bolha da internet, quando eu comecei a trabalhar profissionalmente, eu trabalhava com eletrônica e informática em uma empresa de automação de ponto e acesso. Tive a oportunidade de usar Delphi para desenvolver um protótipo de sistema integrado ao hardware de ponto e acesso dessa empresa, pois eles usavam um programas DOS para extrair dados e jogar num arquivo texto, e o outro programa DOS fazia a leitura desse arquivo para gerar o resuldado de ponto e o acesso. Foi uma experiência ótima, pois meu protótipo acessava diretamente o equipamento pela porta serial e já mostrava as informações em tempo real. Essa idéia foi pouco tempo depois usada pela fábrica para novas versões do software.

Nessa época, a programação desktop ainda reinava e as opções mais comuns eram Delphi e Visual Basic, então sempre algum colega ou outro puxava a sardinha pro lado do Delphi ou do VB. Nessa época, confesso que eu era meio bobo no assunto e eu acabava entrando na onda também, principalmente falando mau do coitado do VB. Tempos depois acabei trabalhando com VB em outros lugares e pude perceber que existia aplicação para ele dependendo do caso. Confesso que sempre gostei mais do Delphi, mas nesse momento eu deixava de ser um apaixonado e passava a fazer a escolha de forma mais racional.

Surge o desenvolvimento pra Web

Quando começei a trabalhar com web em meados de 2000, trabalhei com PERL, depois ASP e ColdFusion. Nesse tempo, surgiu a versão Beta do DotNET em 2001. Foi quando comecei a desenvolver aplicações desktop em WindowsForms e alguma coisa web, com o objetivo de aprender.

Passado pouco tempo e fui trabalhar numa empresa onde usavam tudo da Microsoft. Java nem pensar nessa empresa. Todos falavam mau da Sun e do Java. Nessa época eu já estava bem escaldado com isso e não ia cair nessa novamente, perdendo meu tempo discutindo sobre quem era melhor, Java ou DotNET.

Passado mais um tempo, fui para uma outra empresa onde tinha projetos em DotNET, mas também tinha projetos Java. Como eu já estava estudando Java fazia um tempo, era uma ótima oportunidade para por em prática em algum projeto. Assim que surgiu uma vaga, me ofereci para entrar num projeto de um grande ecommerce brasileiro (que por algumas questões não posso citar o nome). Esse projeto foi ótimo para eu por em prática meus conhecimentos de Java. Nesse momento eu percebi que o pessoal de Java também gostava de falar mau do pessoal de DotNET. Na minha mente estava bem claro que isso era pura perda de tempo, pois claramente nos projetos que eu havia trabalhado eu pude perceber o valor de cada uma dessas tecnologias em cada contexto.

Passou o tempo e acabei não trabalhando mais com DotNET. As empresas seguintes foram todas com Java, exceto aqui na globo.com, onde voltarei a falar mais pra frente.

Muitos FUDs

Uma coisa que sempre percebi nessas brigas é que raramente usava-se argumentos lógicos e bem fundamentados. Geralmente as discussões eram baseadas em achismos e usavam algum argumento falacioso ou duvidoso/pouco claro.

Quando trabalhei para algumas empresas de Telecomunicações, Bancos e Seguradoras aqui no Rio de Janeiro, quase sempre havia um bom legado em COBOL e seus velhinhos de plantão dando manutenção nesses sistemas. Volta e meia eu ouvia algo do tipo: “Esse negócio de Java é apertar botãozinho e ta tudo pronto. Homem que é homem programa em COBOL”. Isso não fazia o menor sentido e por mais que eu tentasse explicar pros caras que não era bem assim, não adiantava, já existia uma opinião sem fundamentos formada na cabeça deles.

Numa dessas últimas empresas que trabalhei (para um dos maiores Bancos do nosso país), eu era Arquiteto junto com mais 14 desenvolvedores em um projeto Java que precisava se comunicar com programas COBOL/CICS. Sabe o que os COBOLEIROS diziam? “Só usem java pra pegar o que for processado aqui no COBOL porque aqui é que aguenta o tranco. Esse negócio de Java só serve para a parte levinha“. Apesar de conhecer sobre todo o poder de processamento dos Mainframes, eu sabia que aquilo era apenas uma provocação, pois eu já havia trabalhado em sistemas web feitos com Java com volumes bem maiores que os desse sistema e tudo correu muito bem. Sendo assim, nem entrei em discussão sobre isso, pois eles já tinham se fechado para o assunto.

Nossos dias atuais

Hoje em dia está muito na moda o uso de linguagens dinâmicas como Ruby e Python para desenvolvimento de software, muitos deles aplicações web. Existem diversos casos de sucesso usando essas tecnologias, e mais uma vez surgem as brigas pra saber qual é a melhor: Ruby ou Python.

Não espere aqui uma opinião minha sobre o que é melhor entre as 2, pois isso não vai acontecer. Não porque eu não tenha preferências, mas simplesmente porque melhor ou pior sempre dependerá do contexto e não somente da tecnologia.

Python é uma linguagem muito usada no mundo opensource, tendo muitos aplicativos console e desktop desenvolvidos para linux. A primeira versão do Youtube foi escrita em Python (não sei se ainda é). O Google AppEngine apesar de suportar Java, foi construido para Python. Existem diversas iniciativas que usam Python e são bem sucedidas.

Ruby apesar de ser uma linguagem bem antiga (1993), só explodiu mesmo com a chegada do Rails (2004/2005). Antes disso ninguém ouvia falar de Ruby. Mesmo assim, Rails trouxe uma ascensão meteórica para o Ruby, surgindo um ecosistema incrível, com uma série de produtos bem sucedidos e documentações fantasticas, screencasts, entre outros. Destacou-se muito com as ferramentas de testes automatizados que tanto precisamos hoje em dia para desenvolvermos software com qualidade.

No time onde eu trabalho na globo.com, desenvolvemos projetos em Java, em Python/Django e Ruby on Rails (projeto atual). Cada uma das escolhas teve razões lógicas e seus benefícios (que se comprovaram). Essa versatilidade faz com que esse time possa trabalhar em praticamente qualquer projeto da empresa, já que tem conhecimento nas principais linguagens que a empresa trabalha. Isso é muito mais benéfico do que ficar preso a uma tecnologia, defendendo-a com unhas e dentes.

O Mito do não escala

Com o advento dessas linguagens dinâmicas, deu bem pra perceber como a maioria dos profissionais não entendia/não entende quase nada sobre escalabilidade de sistemas web. Assim como o COBOLEIRO falava que o Java não aguentava o tranco, começaram a falar que linguagens dinâmicas não escalavam, principalmente o famoso “Rails não escala”.

Certa vez eu lí um post de 2004 (antes do Rails) que já falava sobre esse mito de não escala. Vale a pena conferir aqui. E tem também um screencast mais recente(baixe o vídeo e assista) do Gregg Pollack que nos primeiros minutos mostra na maioria das vezes o que deixa um site lento. Dica: tem pouco a ver com a tecnologia usada.

Portanto, não caia nessa. Pesquise e aprenda como escalar sua aplicação, independente de você estar usando Python/Django Ruby/Rails, Java, DotNET ou qualquer outra tenologia do seu projeto.

Conclusão

Mesmo com essas 2 tecnologias (Ruby e Python) fazendo seu sucesso nos dias de hoje e tendo seu contexto para serem aplicadas, o pessoal ainda continua brigando pra defender a sua tecnologia preferida. Parece que cria-se uma paixão cega pela linguagem, como se fosse uma espécie de religião, saindo do racional e passando a ser totalmente irracional.

Dessa forma, meu conselho para todos os profissionais é que não entrem nessa de ficar defendendo sua tecnologia preferida e atirando pedra na tecnologia concorrente. Aprenda ambas e saiba onde e quando usar cada uma delas.

[Rafael Biriba] Globo.com: Área de tecnologia abre vagas para estágio

January 29th, 2010

 

http://talentos.globo.com/talentos/

http://www.globo.com/estag

 

A pedido do RH da Globo.com, segue o “anúncio” com as informações sobre as vagas de estágio:

ESTÁGIO EM TECNOLOGIA PARA GLOBO.COM

Venha trabalhar com  a gente e dê um clique decisivo no seu futuro.

A GLOBO.COM é um dos 4 maiores portais brasileiros que possui em torno de 14 milhões de visitantes únicos domiciliar/mês;

Procuramos por Estudantes de Análise de Sistemas, Ciência da Computação, Engenharia da Computação e afins, com o perfil abaixo:
* Previsão de formatura: dezembro/2010 a dezembro/2011.
* Pessoas dinâmicas, criativas e fascinadas por internet.
* Interesse em estagiar com projeto e manutenção de infra-estrutura.

Envie seu currículo para talentos@corp.globo.com
Para maiores informações acesse: www.globo.com/estag
Espalhe a notícia para seus amigos e parentes que estejam interessados.
Avise-os por e-mail, MSN, Orkut ou pelo Twitter.
Não deixe-os perder essa oportunidade!

CONTAMOS COM SUA PARTICIPAÇÃO! DIVULGUE!
EQUIPE GLOBO.COM

Boa sorte a todos os candidatos… ;)


Leia também:

[Gabriel Falcão] Avoid python pitfalls and be happy

January 21st, 2010

This morning I was just reading the feed, when I stumbled on this post about one of the weird behaviors of lists in Python.

In a few words, lists and dictionaries behave like C pointers, thus they are mutable objects.

So, if you are beginning on python, you probably will like those articles:

Hope it helps :)

[Igor Macaubas] macaLean agora com PodCasts

January 20th, 2010

Fico feliz em anunciar que acabei de incluir no BLOG o plugin PodPress – é um plugin que habilita um feed de rss no formato correto para distribuição de PodCasts. Estou fazendo isso para facilitar o acesso dos vídeos das minhas palestras diretamente em iPhones e iPods, entre outros dispositivos que suportam Podcasts.

Incluir o feed é bem simples: basta incluir no iTunes a URL http://macaubas.com/?feed=podcast no iTunes. Para isso, basta seguir o passo a passo abaixo:

1. Clique em Podcasts na barra lateral

2. Vá no menu “Advanced”, e clique em “Subscribe to Podcast…”

3. Coloque a URL http://macaubas.com/?feed=podcast no campo e clique em OK.

4. É isso aí. Agora, toda vez que rolar uma nova palestra minha aqui no BLOG, você receberá o vídeo automaticamente no seu iTunes!

[Tiago Motta] Diferenças entre ruby e python: Que perigo

January 15th, 2010

Em ruby:

def a(z=[])  z.push 'a'enda   # retorna  ["a"]a   # retorna  ["a"]a   # retorna  ["a"]a   # retorna  ["a"]

Em python:

def a(z=[]):  z.append('a')  return za()   # retorna ['a']a()   # retorna ['a','a']a()   # retorna ['a','a','a']a()   # retorna ['a','a','a','a']

[Rafael Biriba] Mencoder: Adicionando legenda em um vídeo

January 15th, 2010
Mplayer: http://www.mplayerhq.hu

Mplayer: http://www.mplayerhq.hu

Uma legenda no formato .srt, pode ser inserida em um vídeo com diversos programas/ferramentas. Vou mostrar que mencoder é uma das opções mais simples e rápida para isso.

O mencoder é instalado junto com o pacote do Mplayer. Mais detalhes de como instalar, visite: Mplayer: Projeto baseado no FFmpeg

Antes de adicionar a legenda ao vídeo, verifique se existe o arquivo subfont.ttf na pasta do mplayer. Sem esse arquivo de fonte, o mencoder não consegue “escrever” no vídeo.

Criando o subfont.ttf

No windows, basta copiar uma font .ttf, colar na pasta do Mplayer e renomear para subfont.ttf

No linux, procure pelas fontes .ttf com o comando: locate ttf | grep ttf\$
Depois copie a fonte para o diretório local do mplayer. No meu caso:  (Utilizei a fonte VERA)
cp /usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf ~/.mplayer/subfont.ttf

Testando a legenda:

Antes de inserir a legenda, podemos e devemos testa-la. Para isso rode o comando:
mplayer -sub legenda.srt video_original.avi
Assim, você pode ver mais ou menos como a legenda vai ficar, em relação a fonte escolhida.

Inserindo a legenda:

Comando:
mencoder video_original.avi -sub legenda.srt -subpos 95 -subfont-text-scale 3 -subcp enca:gr:iso-8859-1 -vf expand=640:384 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800:vhq -oac copy -o video_com_legenda.avi

Onde:
video_original.avi= Vídeo de entrada
legenda.srt=  Legenda a ser inserida
video_com_legenda.avi= Vídeo de Saída

Parâmetros:
-subpos= Especifica em que % da tela a legenda irá aparecer (A partir do topo)
-subfont-text-scale= Especifica o tamanho da legenda no vídeo
-subcp= Especifica a codificação do arquivo de legenda
-vf= Especifica o tamanho do vídeo. Neste caso, o vídeo original era 640 x 272, adicionei mais 112px na altura (384px) utilizando expand,ou seja, o vídeo vai ficar com uma tarja preta de 56px em cima e em baixo.
-ovc= Especifica o codec de vídeo. Neste caso lavc.
-lavcopts = Opções do lavc. Especifica o nome do codec, bitrate,…, do vídeo.
-oac= Especifica o áudio. O valor copy, copia o áudio exatamente como o original.
-o= Especifica o arquivo de saída.

OBS: O comando do mencoder foi testado e executado no Linux. Para rodar o comando em windows, veja aqui.

 


Leia também:

[Bruno Mentges de Carvalho] Usando jQuery no console do firebug

January 7th, 2010

Recentemente procurei como fazer pra usar o jQuery no console do firebug, e encontrei essa solução:

Adicione esse bookmarklet na barra de favoritos do firefox e clique toda vez que quiser injetar o jquery num site para voce poder manipular com facilidade:

Load jQuery

O código é simples, como podemos ver abaixo:

j=document.createElement("SCRIPT");
j.src="http://code.jquery.com/jquery-latest.pack.js";
document.getElementsByTagName("HEAD")[0].appendChild(j);

Fonte em inglês:
http://techrageo.us/2008/03/05/jquery-for-firebug/
Uma alternativa praticamente igual:
http://ajaxian.com/archives/hacking-digg-with-firebug-and-jquery

Espero que ajude :)

[Gabriel Falcão] Solving “connection refused” issues on Debian Sid

January 5th, 2010

Some weeks ago I started to experiment some network issues on my debian sid:

  • The selenium-remote-control was not running:

I could even try to do a: “telnet localhost 4444″, it just did not work.

  • My Apache-Solr was not capable to subscribe to apache-activemq

When reading the log, I saw:

javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:280
Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused
Suddenly I noticed something weird in my netstat:
tcp6       0      0 :::8983                 :::*                    LISTEN      3865/solr-globocom
tcp6       0      0 :::8161                 :::*                    LISTEN      3901/activemq-globo
tcp6       0      0 :::61616                :::*                    LISTEN      3901/activemq-globo
tcp6       0      0 127.0.0.1:41879         127.0.0.1:61616         ESTABLISHED 3865/solr-globocom
tcp6       0      0 127.0.0.1:61616         127.0.0.1:41879         ESTABLISHED 3901/activemq-globo

Everything is being bound as IPv6… humm, that doesn’t have a good smell….

Looking for solutions I’ve found this file:

/etc/sysctl.d/bindv6only.conf

interesting, huh?!?

Openning up that file, I saw a full description of it, then I just needed to change its property from this:

net.ipv6.bindv6only = 1

to this:

net.ipv6.bindv6only = 0
Well, if you have the same problem, jsut change that, restart your PC, and be happy!

[Guilherme Chapiewski] The whole company “Agile”?

January 4th, 2010

Last month while I was discussing with my friend Siraj we started to ask ourselves why the Agile “philosophy” doesn’t get popular in the whole company. What I mean is that nowadays it’s kind of easy to find the software/product development department of companies using Agile methodologies, but what else is missing or needed to the Human Resources, Marketing, Finance, Administration, Sales and every other departments join this movement?

When you start with Agile development, not only the software development process changes but many other things related to how your company works. For instance, it’s very difficult to think about an Agile team that will succeed with “command-and-control” management. The teams are self-managed, which implies a different style of management. Instead of bosses that keep asking for things done, we have servant leaders which provide all possible resources so that their teams can work and make decisions. The base of the pyramid begins to make decisions and not the top anymore, because they have the best work knowledge and therefore are the most suitable to do it. In some extreme cases in modern companies like Semco, the very employees are the ones who hire their managers.

That is, when we talk about agile methods, even though we are referring to the Agile software development methods, there are a lot of other concepts and philosophies that we are implicitly talking about (because they are very closely related).

I have an example to better explain where I want to go with this. I once worked for a company of reasonable size that, like many others of this size, had a traditional Human Resources department. One day I had a problem and needed urgent assistance from the HR staff. When I talked to them, two bad things happened. First, they treated me badly and like if they were doing a favor to me. Second, they said that my request would be met only in a few days because they had many important things to do first. What was happening was that my daughter was very sick, I had a problem with my health insurance and they were not willing to approve my daughter’s appointment with a doctor. A HR team with the “agile culture” would know in first place that since I am their main “user”, I deserve attention, respect and my problems are their problems. The emergencies of their users should be more important than any paperwork they have to do. And second, even though their backlog was abnormally large, a case with such severity should certainty jump the queue.

So when I say that other departments of companies could be “agile”, I am not suggesting that they work with Agile software development – which would make no sense – but that they use the same concepts of leadership, self-organizing teams working in a participatory environment, based on trust and cooperation, making a better effort to understand who are their “users” and what are their needs, create visions for their products and departments (that would help them make better decisions) and so on.

Getting this HR department above to speak up as an example, wouldn’t it be perfectly acceptable for them to do a personas exercise to discover what is the profile and the characteristics of their users? Wouldn’t it be great if they did chartering sessions, discussed their values, made retrospectives to discover how to improve their process and so on? Imagine how transparent and organized would be if the HR team had a big Kanban board in their room showing the activities, progress and their bottlenecks?

I think that this may not happen because much of the material and examples available on these subjects nowadays are formatted for people related to software development. Yes, there are books such as those of Ricardo Semler who are categorized in bookstores as “Business”, but I don’t see much business people really interested in these subjects. Why is that?

It’s time to finish with this “fork” between companies’ agile communities and the other departments. In Agile adoptions we frequently see after some time two totally different companies working within one. We must bring people from other areas and other hierarchical levels to the conferences and our world and show them these ideas. I will love the day that it will be possible to go to an Agile Conference and talk not only to software people but also HR managers, VPs of Marketing and other guys who are not in the development department; or else when we can find in user group meetings not only the “agilists” but also managers, human resources analysts, accountants and so on.

And now, where do we start?