Month: August 2008

Nostalgia

Posted by – 30/08/2008

Voltando do Consegi 2008 com Alexandre Oliva no mesmo shuttle para o aeroporto, tivemos um momento de nostalgia, falando sobre os anos de início da Internet no Brasil (1992-1995), e sobre tecnologias e curiosidades que marcaram aquela época. Duas dessas ainda encontramos hoje, em plena atividade (embora com crescimento zero ;-)): servidores Gopher e máquinas de Coca-Cola online.

Bons tempos aqueles quando homens eram homens, e escreviam seus próprios drivers de dispositivo 🙂

Oficina no Consegi 2008

Posted by – 30/08/2008

Ontem estive em Brasília para uma oficina de streaming de vídeo no Consegi 2008. A oficina foi excelente, com boa participação apesar de termos uma sala pequena e computadores não preparados.

A oficina foi ministrada como uma palestra, com introdução de Karinna Bueno, apresentação básica sobre Streaming a cargo do VJ Pixel, e estudo de dois casos, o da TVSL, a meu cargo e o da transmissão de um evento da ONU (utilizando software não-livre em parte), a cargo do Fabrício Tamusiunas do NIC.br.

Depois de um breve intervalo, comecei com alguns demos (uma vez que os computadores não haviam sido preparados, deixei de lado o hands-on) utilizando a versão 0.5.2 do Flumotion. (Essa é uma versão de desenvolvimento, o que trouxe alguns problemas, mas nada que não fosse superado facilmente… Agora tenho de tentar reproduzir o que ocorreu para ver se encontro o problema… mas isso é outra história…) Infelizmente o tempo agiu contra nós e não pude chegar nos demos mais interessantes, que são aqueles em que envolvo programação em Ruby com pipelines GStreamer… Vou ver se gravo um video desse demo para postar aqui.

Enquanto isso, a parte mais “formal” com a apresentação do caso da TVSL, pode ser encontrada aqui. Não há grandes diferenças em relação à palestra do Debian Day, uma vez que o caso é o mesmo… mas vale a pena dar uma olhadinha.

A todos que nos agüentaram quase a tarde inteira lá no Consegi, muito obrigado. Se tiverem dúvidas, perguntas, podem postar aqui mesmo.

Paul Graham and his start-up funding company

Posted by – 27/08/2008

I first read about Y Combinator while browsing Paul Graham’s website. I am a huge fan of his and have tried many times to bring him to Brazil for FISL (unsuccessfully so far). By that time I was updating a lecture of mine where I quote something from his Hackers and Painters essay and sudenly I noted an “YC” link on the left, and decided to click to learn what was that.

Y Combinator is a venture capital firm to help start-ups. It was built on the concept that not much money is needed for “first-stage” start-ups (“from idea to company”, as they call it). Quite a concept! I lost track of it until yesterday, when I read this blog post summarizing one of its events for start-ups. I found it amazing how far it came in such little time. They’ve already funded about 100 start-ups, some of them really interesting.

Of those presented in that post, Posterous is one I found most interesting. They create instant blogs just by sending emails to some address. There’s no sign-up procedure… Just send the email with any attachments and voilà. There you have: a new blog.

Many others are really interesting (PollEveryWhere, IDidWork, Frogmetrics, just to name a few), so I really suggest reading that post.

I think Y Combinator is another great idea from Paul Graham, and I will be following it more closely, as a way to keep myself updated… Who knows… maybe I can get them to come to FISL to present that! 😉

Domed cities and more time for leisure

Posted by – 25/08/2008

It’s certainly funny to read articles about the future, but it’s even funnier to read past articles about now. I’ve just found an article written in 1968 about how thing would be 40 years in the future (or today).

Of all the foreseen things, I would really like to see domed cities. Although I don’t think any real goal would be achieved by it, surely it’s quite a sight.

Also more free time for leisure wouldn’t hurt…

Repensando: ainda querem armazenar dados de internautas?

Posted by – 23/08/2008

Teríamos mais privacidade se todos fossem iletrados, mas não se pode realmente chamar isso de privacidade. Isso é ignorância. (Bruce Sterling)

Essa semana todos tivemos o gostinho de saber como é perigoso termos dados de terceiros guardados. A ANATEL expôs dados particulares para quem quisesse ver…

Quem guarda dados tem de saber que não pode expô-los assim… Essa é uma falha da ANATEL, não tenha dúvida. Agora, imaginem isso transversalmente, imposto a todos os provedores do Brasil… Vocês confiam no seu provedor? Vocês acham que por usar um provedor grande, apoiado por vultuoso capital, vocês estão imunes? Lamento informar, mas o risco só se multiplica. O cracker que quiser roubar esses dados vai mirar precisamente nos provedores grandes, onde o “prêmio” é maior.

Imaginem mais: uma vez aberta a possibilidade por força de Lei, imaginem o que vão exigir que seja guardado depois. No Brasil as leis sofrem regulamentação que, apesar de não poder ampliar os poderes da lei, podem discriminá-los de maneira mais completa para melhor cumprir a “intenção do legislador”…

O Executivo poderá regulamentá-la [a Lei] sempre que existir a necessidade de concretizar a intenção do legislador. (CARRAZA)

Então, quando a “intenção do legislador” (no caso do Projeto de Lei Azeredo) não puder ser cumprida apenas com as informações armazenadas pelo provedor, outras informações poderão ser requeridas “via regulamento”.

E quando essas informações estiverem fresquinhas, guardadas nos cofres dos provedores de todo o Brasil, quanto passarão a valer esses cofres? Não é a ameaça de multa que vai protegê-los! Isso com certeza.

Tenho recebido alguns emails de hackers amigos meus me perguntando porque me preocupo tanto, já que para quem tem apenas pequeno conhecimento técnico essa lei é completamente inútil (sempre podemos colocar um Tor, ou qualquer outro mecanismo de ocultação de pistas, no caminho)… A resposta é sempre a mesma: Por que não abro mão de nenhum direito… nem que seja apenas uma mínima parte de algum direito… É como dizia o poeta:

Na primeira noite eles se aproximam e roubam uma flor do nosso jardim. E não dizemos nada. Na segunda noite, já não se escondem: pisam as flores, matam nosso cão, e não dizemos nada. Até que um dia, o mais frágil deles entra sozinho em nossa casa, rouba-nos a luz, e, conhecendo nosso medo, arranca-nos a voz da garganta. E [porque não dissemos nada,] já não podemos dizer nada. (Eduardo Alves da Costa)

Século XXI, Internet e ferramentas Server-Side… Já temos pouca privacidade. Se abrimos mão agora do mínimo que ainda nos resta, o que virá depois?

[Em tempo definiram os relatores desse Projeto de Lei. Por favor, perca por próximos cinco minutos da sua vida e mande um email para qualquer um deles (ou os três, se preferir).]

Roteiro do Cibercrime

Posted by – 20/08/2008

Gostei da brincadeira do Alexandre Oliva e resolvi criar o meu próprio roteiro de uma situação de violação do Projeto de Lei Azeredo, só que dessa vez falando a respeito do artigo que considero mais problemático no famigerado projeto, o 285-B:

Obter ou transferir, sem autorização ou em desconformidade com autorização do legítimo titular da rede de computadores, dispositivo de comunicação ou sistema informatizado, protegidos por expressa restrição de acesso, dado ou informação neles disponível

A estorinha é entre Alice e Bob, ambos repórteres de um grande jornal da capital:

Alice: Olha só o que achei no site do Senador Edward Comstock… (aponta para Bob a tela de seu laptop). isto é um escândalo! Primeira página a caminho…

Bob: Cuidado… você leu as restrições de acesso?

A: Mas que restrições de acesso? Está público, na Internet.

B: Sim, mas você não pode sair por aí copiando coisas públicas dos sites dos outros sem ler as restrições de acesso…

A: Que bobagem… e onde estão as tais “restrições”?

B: Olha lá… no rodapé da página…

A: Hm… “Restrição de Acesso: O conteúdo desse site pode ser livremente citado desde que em um contexto favorável ao autor. Citá-lo de outra forma constitui violação desta restrição conforme o artigo 285-B da Lei nº 1.847.033/2008 (Lei do Cibercrime).”. Que que isso quer dizer?

B: Que você só pode publicar esse escândalo se esse contexto for favorável ao autor… Adeus primeira página.

A: Eu vou citar de qualquer forma. Não seria uma boa repórter se deixasse passar uma primeira página dessas!

B: Olha….

(Transição com uma tela escura escrito “Algum tempo depois…” e uma música de suspense.)

(Doze policiais entram na redação do jornal com escopetas em punho e cercam a mesa de Alice.)

Policial: Tenho um mandado de prisão temporária para a Srta. Alice Bliss Foote, por crime baseado na Lei nº 1.847.033/2008. Onde ela está?

Bob: Não sei, não veio trabalhar hoje, e não avisou a ninguém.

Policial: Revistem a redação. Os informantes disseram que ela está aqui em algum lugar.

(Bob cochichando para outro dos colegas da redação): Ela fugiu hoje… Disseram que viriam buscá-la… Deve estar a meio caminho do Uruguai a essa altura…

(colega de redação cochichando para Bob): Graças a Deus.

(Câmera vai se distanciando, vozes desencontradas na redação continuam a falar e os policiais continuam revirando tudo).

(Fade Out com um letreiro: “O Grande Irmão está observando”).

Petição, protestos e mais programação

Posted by – 18/08/2008

Parece que um pessoal vai aproveitar que o Senador Azeredo estará em Porto Alegre para entregar-lhe uma versão impressa da petição que está rolando online. Na dificuldade de encontrar os autores da petição para pedir-lhes uma cópia do banco de dados (somente os autores têm acesso aos dados brutos), me perguntarm se eu conseguiria uma solução…

Bem, eu respondi o que eu sempre respondo… “Está na Internet? Publicamente? Então é possível.”. Aproveitei alguns minutos ociosos e rodei um script para pegar as informações (obviamente em Ruby). O bichinho ficou tão bom que resolvi rodá-lo a cada 30 minutos, mantendo um banco de dados “paralelo” do que está online… A saída dele deixo disponível aqui… Vai que outras pessoas precisam também:

veto2008.csv.gz – Arquivo compactado CSV com os dados da petição na seguinte ordem: número da assinatura, nome, cidade/estado, e comentario.

veto2008.marshal.gz – Para os programadores Ruby, este é um arquivo compactado com um Hash serializado no seguinte formato:

hash[numero_da_assinatura] = { :nome => "nome_do_individuo",
                               :cidade => "cidade_e_estado",
                               :comentario => "comentario" }
 
# Para desserializar (precisa descompactar antes...)
hash = Marshal.load(File.read('veto2008.marshal'))

Palestra no Debian Day

Posted by – 16/08/2008

Hoje, aniversário do Debian, estamos de novo fazendo o Debian Day para comemorá-lo. Em Porto Alegre ele está acontecendo no Serpro. Em alguns minutos estarei fazendo uma palestra sobre Streaming com Theora, que será transmitida ao vivo pela TV Software Livre.

Devo acrescentar o arquivo da palestra aqui logo depois de ministrá-la, e deixarei aberto os comentários caso alguma dúvida não seja resolvida no ato.

Update 2008-08-17 00:50:00: Estou anexando o arquivo da palestra. Quanto à pipeline que estávamos tentando fazer funcionar… esqueci de colocar os queues eis ela pronta:

bash$ gst-launch-0.10 videotestsrc ! queue ! tee name=t ! fakesink t. ! queue ! ximagesink

Update 2008-08-27 18:36:00: O pessoal publicou o torrent do video da palestra. Mais informações no site do Debian-RS.

Finally! We won a battle!

Posted by – 14/08/2008

Although far from winning the war against Azeredo’s bill, we finally won a battle. Chamber-of-Deputies IT Committee approved the request [pt-BR] for a public hearing [pt-BR]. Although a small step forward, all people involved with entities and NGOs interested in blocking this bill will have a chance to speak their minds.

This comes in a very special timing. A pool was published early this week [pt-BR] run by Vox Populi revealing that more than a half of the Brazilian voters distrust e-voting and about 20% think it’s possible to spy on their choices. This is a election year in Brazil, and all this setting can end up helping our case.

More than 106-thousand already signed the petition and I think with all those signatures adding to this setting this is going to be a very interesting hearing. At least people supporting this bill will have to stand up and say they are for it… And who knows what damage this can cause to them in a election year.

Some public hearings are broadcast through Internet. I’ll let you know if this one will be.

BSOD Olímpica

Posted by – 13/08/2008

Inacreditável. Acabo de ler no Gizmodo. No momento mais importante dos jogos olímpicos de Pequim, a hora do acendimento da tocha gigante, adivinha quem deu o ar da graça? A velha conhecida Blue Screen Of Death do (argh!) Windows.

Olha na foto reproduzida pelo gizmodo:

Quando vamos nos livrar globalmente dessa praga?

Refresh Machine em Ruby

Posted by – 13/08/2008

Eventualmente todos enfrentaremos esta situação: você tem um objeto com “estados” que são lidos de uma fonte externa através de pooling. Usualmente você simplesmente adiciona uma thread no construtor do objeto e coloca dentro dela um loop infinito que verifica a cada intervalo de tempo se existe estado novo e, se for o caso, atualiza o estado do objeto.

Essa é uma construção muito simples e bastante utilizada, no entanto tem um problema de escalabilidade importante: para cada objeto você tem uma thread e um loop infinito. Se você tem poucos objetos, isso não chega a ser um problema… mas se tem muitos, aí é outra conversa.

Alguns vão argumentar que não é obrigatório usar essa construção, que dependendo da fonte dos dados, ela pode “atualizar” o objeto, em um padrão Observer, o que está mais do que correto… Mas nem sempre controlamos a fonte dos dados, e nem sempre ela é inteligente assim (na realizade, quando não a controlamos ela parece bantante burra!). Foi para isso que programei uma “Refresh Machine”: um container para objetos que precisam ser atualizados através de pooling. Ela presume duas coisas: que esse objeto tenha um método/atributo refresh que armazene o intervalo em segundos entre as atualizações, e um método do_refresh, que será executado entre os intervalos.

Vamos ao código:

require 'thread'
class RefreshMachine
 
  attr_accessor :wait
 
  def initialize(wait = false)
    @wait    = wait
    @killall = false
    @queue   = Queue.new
    @removed = Array.new
    @thread  = Thread.new do
      loop do
        ( @removed.clear; @queue.clear; @killall = false ) if @killall
        next if @queue.empty?
        object, last_refresh, thread = @queue.deq
 
        # Helps the garbage collection
        thread = nil if (! thread.nil?) and (! thread.alive?)
 
        # Three things can happen with a dequeued object
        if (Time.now < (last_refresh + object.refresh)) or
           (! thread.nil? and @wait)
          # First: It's too early to refresh it or we still have
          #        a refresh thread running and have to 'wait', so we
          #        just put it back in the queue
          @queue.enq [ object, last_refresh, thread ]
        else
          if @removed.include?(object)
            # Second: We have a "remove request" for it, so we
            #         delete the request and avoid queueing it again
            @removed.delete(object)
          else
            # Third: It's time to refresh it, so we
            #        call do_refresh and put it back in the queue
            add(object)
          end
        end
      end
    end
  end
 
  def add(object)
    @queue.enq [ object, Time.now, Thread.new { object.do_refresh } ]
  end
 
  def del(object)
    @removed << object unless @removed.include?(object)
  end
 
  def killall
    @killall = true
  end
 
end # of class RefreshMachine

O objetivo é usar o mínimo possível de threads com loops infinitos…. e ficou pequena o bastante para blogar a respeito 🙂

Tor for Brazilian masses

Posted by – 11/08/2008

Of course, trying to block the Brazilian Internet Surveillance Bill is something we are really focused on doing. But as more people with political skills join us on convincing the Deputies this bill is just plain wrong, the rest of us, geek guys, are investigating Tor deployment.

I’d have to study the bill deeper than I have already, and probably ask some lawyer about it, but I think that the bill effectively makes unlawful to deploy Tor in Brazil as an end router. Via article 22 of the bill, providing an end-point Tor router can be considered “providing access to a worldwide computer network”, thus would require to keep three years of logs, what would render pointless having a Tor router in the first place.

What can “save” an end-point Tor router is the wording of this very article. It states that just commercial or public sector providers are entangled by it. What if I make a free (as in free beer) end-point Tor router available? It is not “public sector”, since it’s not tied to the government… It’s not commercial, since I am not selling access to it. But then, someone can argue that it’s commercial activity with zero-price… Brazilian law is just so confuse…

Anyway… if we can get it straight with the lawyers, I think we’ll watch a proliferation of end-point Tor routers in Brazil. This would assure that, even if this bill passes, it will not be easy for the government to peek on the citizens traffic. Geeks always having to fix what politicians break so easily…

100-thousand and counting

Posted by – 06/08/2008

For those of you wondering how is the battle against the Brazilian Internet Surveillance Bill, I have to report we already got more than 100-thousand people to sign the petition. You can check the current count in the image on the right. I am updating it every 15 minutes, so you can even use its URL in another place (as are some people doing already).

The bill will be voted by the Chamber-of-Deputies any time now… We heard it would be on yesterday, but apparently it was not even enlisted for this week. This doesn’t mean much, since the Deputies can hold an “out-of-list” voting… we’ll be watching.

Meanwhile, I read an article by Sérgio Amadeu that summarizes some of our feeling about that bill. Are we in the Western World (allegedly freedom lovers) turning into control-freaks? A whole lot of people I know are not even offended by this bill! These are the same people that don’t think it’s weird that USA claimed the right to seize any storage device entering their borders, for any time they want, with no warranted privacy. Are we in a middle of a paradigm shift? Are we accepting less freedom? What would George Orwell think of that?

Maybe we got in a wormhole and ended up in 1984…

Onde está a liberdade? O bicho comeu…

Posted by – 03/08/2008

É oficial… rumores estavam se espalhando durante a semana, mas agora é prá valer. Os Estados Unidos enlouqueceram de vez!

Com a guerra ao terror os gringos já rasgaram a própria constituição ao meio. Com a nova medida, acabaram de passá-la por um triturador! Ora vamos… apreender por amostragem quaisquer dispositivo de armazenamento (incluindo laptops, pendrives, cameras fotograficas, …) de qualquer pessoa que entrar em solo estadounidense?!?

Onde isso vai parar?

[Nota mental: lembrar de entrar apenas com a roupa do corpo na próxima viagem]

[Nota mental 2: ahh! e certificar-se de que a loucura estadounidense ainda não esteja ordenando pesquisa de cavidades corporais ]

Manipulação das massas

Posted by – 02/08/2008

Eu fico impressionado com a facilidade como se manipula a onipresente “Opinião Pública”. É realmente muito fácil… Não! Não é nem preciso repetir uma mentira mil vezes para que ela se torne verdade… Se Joseph Goebbels estivesse vivo, teria muito mais facilidade para vender a mentira nazista hoje do que então. Aqui vai um roteirinho para facilitar a distorção da verdade, caso você esteja tendo alguma dificuldade na manipulação das massas (em época de eleição… melhor ainda. Se você é candidato, encare o que segue como um resumo atualizado de Il Principe):

  • Revista a sua mentira de qualquer coisa “politicamente correta”. Chamemos isso de EPC: Elemento Politicamente Correto. Pode ser luta contra a pedofilia, contra os acidentes de trânsito… pode ser aumentar o orçamento da saúde, colocar leitos para acompanhantes de grávidas, melhorar a “eqüidade racial” nas universidades… Enfim, escolha um motivo bem politicamente correto.
  • Depois faça um projeto que atenda os objetivos obscuros do seu patrocinador (ou do seu próprio ego).
  • Não esqueça de incorporar o EPC ao projeto… No caso de uma lei, por exemplo, pouco importa se na verdade em 20 artigos, apenas um diga respeito ao EPC (e mesmo assim tangencialmente)… Na verdade, dependendo do apelo que o EPC tenha na sociedade, até mesmo não incorporá-lo ao seu projeto pode funcionar… mas por via das dúvidas incorpore.
  • Depois repasse a mensagem adiante apenas lembrando do EPC. Isso é muito importante! A parte mais crucial do seu esquema é criar um forte laço entre o seu projeto e o EPC de tal forma que sempre que alguém mencionar o EPC, o seu projeto venha na mente. Para ser bem sucedido aqui, você tem de criar uma disciplina mental de não discutir os demais aspectos do seu projeto… A idéia é convencer a todos que o “resto” está lá como suporte ao EPC.
  • Se estiver desconfortável, ou se alguém mais esperto (sempre tem um espertinho) começar a entender o seu esquema, use a estatística a seu favor. Controle todas as variáveis, divulgue apenas as que interessar… Melhor ainda: nem pesquise as que não interessarem ao seu projeto.

Pronto. Você já tem o maquinário necessário para manipular qualquer massa. Veja que é mais fácil do que parece… provavelmente no processo você vai ter de repetir a sua mentira algumas vezes, mas dificilmente vão chegar a mil. Hoje temos uma vantagem que Goebbels não tinha: tudo se multiplica muito mais rápido.

Se você estiver começando nessa arte, talvez seja dificil escolher uma mentira em que se concentrar. Posso então sugerir alguns exemplos clássicos (Atenção aos autores originais desses exemplos: esse texto tem finalidade didática, de forma alguma quero usurpar suas idéias):

Se você quiser passar uma lei contra o consumo de álcool antes de dirigir, você deve convencer a população que mesmo níveis insignificantes de álcool causam problema. Deixe de mencionar o fato de que reflexos suficientes para garantir o ato de dirigir ficam preservados com doses pequenas de álcool, e que soprar o bafômetro em uma blitz é opcional (porque ninguém é obrigado a produzir provas contra si mesmo). Quando conseguir aprovar a sua lei, divulgue estatísticas de como o número de acidentes reduziu, mas oculte o fato de que menos pessoas estão saindo de casa por causa da nova lei (menos pessoas = menos acidentes)… oculte o fato de que provavelmente o número menor de acidentes tenha menos a ver com o nível de álcool no sangue do que com o aumento da fiscalização, e que provavelmente o mesmo efeito seria obtido apenas com a última.

Se você quiser tirar mais dinheiro da população, invente uma contribuição para a saúde. De preferência com esse mesmo nome. Diga que toda a arrecadação será revertida para melhorias na saúde, mas oculte o fato de que, por força da desvinculação das receitas, todo o dinheiro arrecadado tem de ir para o caixa único e que não pode ser atrelado exclusivamente a uma área… ninguém precisa saber disso. Depois pegue algum projeto decente de melhoria na saúde e condicione sua aprovação a passagem também de sua contribuição.

Se você quiser parecer bonzinho, use a falácia da igualdade racial (Sim! Falácia! Só existe uma raça: a humana. Não fosse assim, filhos de humanos com a pele clara e humanos com a pele escura não poderiam existir) para introduzir um sistema de cotas na universidade. Diga que o problema é antigo, e que vem de tempos longínquos, e que é obrigação do Estado igualar as condições, mas oculte o fato de que o problema antigo (apesar de real) não tem a ver com o atual, e que o atual consiste nas condições precárias do ensino público, no sucateamento das escolas e no baixo incentivo aos professores. Esse sim é um gol de placa: posa de bonzinho, cala entidades de defesa “racial”, e evita resolver o problema de verdade!

Se você quiser gastar menos dinheiro em segurança, construa uma lei que obrigue todos a comprar certificados digitais, revista essa lei de uma aura de “luta contra a pedofilia”, inclua vários artigos que tornem crime os acessos indevidos (leia-se acessos sem certificado), outros que tornem mais fácil controlar os “sem-certificado”. Faça o que fizer, nunca mencione os certificados, e negue toda a vez que alguém mencionar o assunto. Se o interlocutor for insistente, puxe o argumento da “luta contra a pedofilia” do bolso e cale a boca do interlocutor.

Poderia citar vários outros, mas não quero estragar o estudo de ninguém. Veja que os exemplos acima são fictícios; qualquer semelhança com a vida real não passa de mera coincidência.