Older blog entries for boto (starting at number 18)

Brazilian ISP block on YouTube is really due to a court decision

According to brazilian media, the brazilian ISP Brasil Telecom officially confirmed that YouTube IP addresses are blocked on its backbone due to a court decision.

On my last post I’ve said that I was just waiting to see the explanation for the block, from Brasil Telecom. Now we can confirm that it is not just a screw up on their part, as commented on Boing Boing.

So we can confirm it: Brazil is now in the list of countries where the State uses mechanisms for Internet Censorship.

Fortunately, I haven’t seen any report of other ISPs implementing the same block, yet. So I see two possible ways this story will continue:

  • Other ISPs don’t implement the block. Brasil Telecom will not like to have the competitive disadvantage of not providing access to a popular site while other ISPs still provide it. Brasil Telecom, users, and other ISPs fight against the court sentence. We win.
  • Other ISPs implement a similar block. We become China. Censorship wins. We lose.

To be continued…

Syndicated 2007-01-08 19:22:06 from Eduardo Habkost / diary

Brazil experimenting Internet censorship mechanisms

Brazil is making some experiments that may show the viability of implement Internet censorship mechanisms country-wide. As already noticed by others, YouTube was ordered to shut down by a brazilian judge, some days ago.

It is asked on the linked post: “I’m not sure what the Brazilian court intends to do to enforce this ruling, since YouTube (and its parent company, Google) are based in the US. Will they take steps to try and block access within Brazil?”. The answer seems to be: yes.

There are reports (some info in portuguese) that at least a major ISP in brazil is blocking access to YouTube. As a reader comments on the post, “it is still possible that this is just some sort of screw up on their part” (I hope so). Or, as a a user report says, it may be just that the ISP is “taking advantage of the hype on the case of the model having sex fun on the beach to lower their backbone utilization by blocking one of the main bandwidth-consumer sites.”. I am curious to know how this story will end.

I really hope this will demonstrate that this kind of Internet censorship in Brazil isn’t viable. But unfortunately this shows that the Brazilian Kleptocratic State has some disposition to become China, and that in our country a celebrity’s public image is more important than people’s freedom and ability to easily communicate (not that the court decision really help to change her public image).

By the way, the video that originated all of this is available on Google Video. Don’t expect to see interesting scenes on it.

Syndicated 2007-01-07 10:57:43 from Eduardo Habkost / diary

Playing with HDA Intel codecs

When debugging a problem with the snd-hda-intel module on a machine that has an unsupported codec model, I’ve spent some time studying the Intel HDA specification, and noticed that we can get very interesting information from the hardware. You can do many interesting things even if the driver never saw an specific model of the audio codec, because the HDA architecture allows you to ask lots of information and control many aspects of the codecs.

I’ve written small script that generate a graphviz graph from the information on /proc/asound/card*/codec#*. I’ve generated the graph for a bunch of different machines that have HDA Intel. They are interesting to see if you want to know what the hardware you have can do, and to find out the correct NID and commands supposed to be used by the alsa drivers. Here they are:

A Realtek ALC660 on an Asus W5F notebook

A Realtek ALC861 codec, found somewhere on the web

A SigmaTel STAC9200 on a Dell Latitude 120L notebook

A Realtek ALC880 on a LG LW20 Express notebook

A SigmaTel STAC9200 on a Dell Latitude D-something notebook

A Realtek ALC86x on a HP DX2200 machine

The script is on a GIT repository. You can clone it with:
git clone http://git.raisama.net/hda-tools.git.

What I would really like to see in the end is the ability to change the way the nodes are associated to alsa streams and mixers from user-space. Then this could be configurable using a GUI where the user would change the input connection settings and associate nodes with mixers and streams, while seeing the graph. Then instead of waiting somebody to change the Alsa driver to do what you want regarding the mixer and streams, you could simply change the codec settings on a GUI and everybody would be happy. :)

Syndicated 2006-11-28 17:47:44 from Eduardo Habkost / diary

Summer of Code Summary

Almost two weeks ago was the deadline for the projects of the Summer of Code program, but I haven’t wrote a single line on this blog about this. It is time to give a summary of what was done, and what may be done in the future.

My project for Summer of Code 2006 was KDEPIM Google Calendar synchronization using OpenSync. The scope of the project included both writing a Google Calendar plugin for OpenSync and improving the OpenSync and KDE integration.

Work Done

The work accomplished during the program includes:

  • OpenSync ipc-branch merge to trunk. The ipc-branch work was needed to allow the kdepim plugin for OpenSync work while inside a KDE application (such as Kitchensync).
  • OpenSync ipc-branch fixes and improvements (before and after the ipc-branch merge to trunk).
  • General bug report handling and bug fixing on OpenSync.
  • Kitchensync testing with the kdepim plugin.
  • Google Calendar plugin for OpenSync. The plugin allows synchronization of calendar data with other OpenSync plugins.
  • A single bugfix commit to KDE 3.5, due to a bug in the kabc locking code
  • Help on packaging of OpenSync and its plugins on the OpenSUSE Build Service (thanks to Daniel Gollub, Christopher Stender and Matthias Jahn, who were working on this, also).
OpenSync 0.19

OpenSync 0.19 is planned to be released soon, including the ipc-branch code.

The Future

There is much that can be done regarding OpenSync and KDE integration, yet. Things worth mentioning:

  • Some plugins need additional code to work with ipc-branch code. Some plugins that use their own data formats need serialization and deserialization functions to be implemented. This is needed because the data need to be sent between the plugin processes and the sync engine process.
  • Recurrence support in the Google Calendar plugin. Translation of recurrence rules from the Google Calendar XML data to the OpenSync internal format (and to vCalendar) isn’t implemented yet.
  • Support for more fields from Google Calendar entries.
  • Kontact integration. Support for running Kitchensync inside Kontact is not supported yet.
  • Demonstration of Kitchensync and Google Calendar plugin. I need to write a text with some screenshots of Kitchensync and using the Google Calendar plugin. :)
The Code

Below are the pointers to the code written during the program, for the final evaluation for the Summer of Code program.


Many thanks to:

  • Kátia, my wife, for her patience while I was working in the project
  • Google, for running the Summer of Code program
  • Chris DiBona and Leslie Hawthorn, from Google
  • Cornelius Schumacher, Tobias Koenig, my mentors during the program, from the KDE project
  • Armin Bauer, for bringing OpenSync to life
  • Daniel Gollub, Christopher Stender and Matthias Jahn, for their work on OpenSync
  • Many others that aren’t mentioned here, but contributed to this. The contributors to OpenSync and KDE projects

Syndicated 2006-09-03 02:56:39 from Eduardo Habkost / diary

Running debootstrap in a non-Debian distro

Last week I wanted to install Debian on a chroot on my machine. Maybe there is an easier way to do this, but I will document what I did, just in case someone wants to do something similar.

Debootstrap is the recommended tool to install another system, as long as you have a Debian system available. I don’t have a Debian system available right now. However I’ve noticed that the debootstrap package has only a few dependencies. So I will try to extract the package manually and run debootstrap on my Mandriva Cooker system.

I’ve download the deboostrap package and extracted it using ‘ar’:

$ ls
$ mkdir debootstrap
$ cd debootstrap
$ ar x ../debootstrap_0.2.45-0.2_i386.deb
$ ls
control.tar.gz  data.tar.gz  debian-binary

I’ve extracted the data contents from the package:

$ tar -zxvf data.tar.gz

First try to run the binary:

$ ./usr/sbin/debootstrap
./usr/sbin/debootstrap: line 15: /usr/lib/debootstrap/functions: No such file or directory

Oops, it needs to be installed on /.

I don’t want the files to be lost inside the filesystem, so I just added a symlink to the files I’ve extracted:

$ sudo ln -s /home/ehabkost/system/soft/justdownloaded/debootstrap/usr/lib/debootstrap /usr/lib/debootstrap

Let’s test again:

$ ./usr/sbin/debootstrap
I: usage: [OPTION]...  [ [
Great! :D Now, let’s run it:
$ ./usr/sbin/debootstrap sarge /tmp/sarge

And it worked. :)

Quick and simple.

Syndicated 2006-06-06 05:46:24 from Eduardo Habkost / diary


My application for Google Summer of Code — “KDEPIM Google Calendar synchronization using OpenSync” — was accepted. :D

I will use the “Summer Of Code” category on this blog for updates on the project.

Syndicated 2006-05-24 22:28:09 from Eduardo Habkost / diary

Another rant about a development tool: guess who?

Actually it is not a single tool, but a set of tools. I am talking about autotools again.

I wanted to build konversation from svn. I did the following:

  • First, checkout extragear/network/konversation from KDE svn: svn co svn://anonsvn.kde.org/home/kde/trunk/extragear/network/konversation
  • Enter the konversation directory: cd konversation
  • Get the kde-common/admin directory for the buildsystem: svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kde-common/admin
  • Run the cvs.sh script for the KDE buildsystem: sh admin/cvs.sh cvs

What I get is:

$ sh admin/cvs.sh cvs
*** Creating acinclude.m4
*** Creating list of subdirectories
*** Creating configure.files
*** Creating configure.in
*** Creating aclocal.m4
configure.in:8: error: m4_defn: undefined macro: _m4_divert_diversion
acinclude.m4:4532: KDE_CHECK_HEADER is expanded from...
configure.in:8: the top level
autom4te-2.5x: /usr/bin/m4 failed with exit status: 1
aclocal: /usr/bin/autom4te failed with exit status: 1

undefined macro: _m4divertdiversion“. What kind of error message is that?

This is why I don’t like autotools: how is someone supposed to know where the real problem is, from this message? It is impossible to tell what is wrong from this message, unless you have written autoconf yourself.

Yes, I did something very wrong above, regarding the KDE buildsystem. I will see if someone is able to tell where the real problem was. But the rant is about the non-intuitive error message I was getting. I took days to find out what I was doing wrong.

Syndicated 2006-03-05 03:12:29 from Eduardo Habkost / diary

Too much noise

Sorry for people that want to see more interesting content on this page, but I had to comment about this.

Now that lilo has commented on it, I think I should explain some things about my my last post.

First of all: lilo talked to me, and we friendly discussed the issue, and exchanged opinions about the event.

And, yes, I think my text had too much repercussion and I was thinking about removing the post from my blog. But I don’t like the idea of removing stuff that I already made online. I think it wouldn’t be fair with people that read this and wanted to argue with me. I would feel like a coward if I removed a text I’ve already written and published.

But just to conclude:

  • I agree that the guy deserved the ban
  • I am not against punishing people for “anti-social” behaviour on a IRC network
  • I am not the kind of people that thinks IRC should have “total free speech”, and people allowed to say anything they want in a channel

The only reason for my post were:

  • Yes, I think that the person in question wouldn’t be punished if he had offended any other non-staffer people
  • Yes, I think that the punishment was too much because: a total network ban wasn’t necessary IMHO; and it wouldn’t happen if the problem happened with other people (you can say “yes, that it would happen”, but I don’t believe so)
  • Finally the main reason for the post was: I was really disappointed with the network staffer saying many times that “this is not open to discussion”. This was even why I have posted my complaints publicly instead of discussing it with the network staffers: if he really didn’t want to discuss, I had the desire to make my complaints public.

Probably the reason I think the punishment was “too much” is related to the lack of portuguese-speaking staffers in the network. This may be one of the reasons I think that an offense wouldn’t have the same consequences if a staffer wasn’t involved: there aren’t enough portuguese-speaking staffers to guarantee this.

Okay, I will not say any word about it, anymore. It is over and I still think the freenode services are good.

Syndicated 2006-03-05 02:48:10 from Eduardo Habkost / diary

The Freenode policy on staff behaviour

Or “Why do I regret making a donation to Freenode“.

Because I didn’t expect to support a team that include people that don’t know how to “fairly” use his powers.

First of all: the Freenode services are great. They have an open and explicit policy on many things, you see people working on improvements every time. They encourage “Real World” communication with groups. As fas as I see, the services are stable. And they are free. PDPC is a group that provide good free services for the community. And as a regular user of these services for many years, I think they deserved a small donation on the last year’s fundraiser.

But today I think it could be better if I had used my money on something else.

It is not because they don’t provide an useful service. They still provide an useful service. But it is because I don’t want to support behaviour that I don’t think it is fair.

I agree that the IRC network need to have a good policy on what is “desired behaviour” on the network. It is their right, they run the network, they spend their time maintaining it. The problem is when I see an “unfair” behaviour, and something that represents the network simply say that “it is not open to discussion”.

Today on a channel that I don’t use to join (but I used to join some time ago), somebody simply offended a network staffer:

04/02/2006 12:58:42 nerdwell    hey udk, pq vc não vai a merda? retardado
04/02/2006 12:59:56 UdontKnow   -carneiro.freenode.net- Added K-Line [*@] to


04/02/2006 12:58:42 nerdwell    hey udk, why don't you go to hell? retard
04/02/2006 12:59:56 UdontKnow   -carneiro.freenode.net- Added K-Line [*@] to

Okay. It was a personal offense, and I think he really deserves some “punishment” for this “anti-social behaviour”. My question is: this was a personal offense to a network staffer. If somebody called me a retard, he would get a complete ban from the network, too? Anybody who offends anybody in the network will be completely banned, as it happened in this case? I don’t believe so. Then the given network staffer himself confirms what I’ve suspected:

04/02/2006 13:08:27 UdontKnow   topeira: eu diria... se voce nao sabe no que esta
        se metendo, nao faca acusacoes impensadas


04/02/2006 13:08:27 UdontKnow   topeira: I would say: if you don't know what you are
        dealing with, don't make improper accusations

Well, I think it is a way to say “you must know who you are dealing with”. Or, in other words I understand this comment as “this is what happens to you when you offend a network staffer”.

Also, I guess the problem would be easily solved with a simple kick/ban from the channel. It would be simpler and with less harm. But it looked like that a network staffer wouldn’t use these “simple” soutions, if they can take stronger measures.

I don’t think this behaviour is fair. It isn’t unfair because the people that offended the staffer didn’t deserved a punishment. But because you simply can’t k-line everybody who offends someone in the network. It is pratically impossible. People won’t go to network staffers everytime someone offends someone. So we necessarily will end having an “unfair” policy: when a problem happens between someone and a network staffer, the consequences will be stronger because they can.

Obviously many people started to question the right the network staffer had to set this k-line. What happened? He said that “this is not open to discussion”. Simply this. So, people don’t have the right to discuss the actions of the network staffers.

It is OK: they have the right to define whatever policy they what. They run the network. The network is not a “right everybody has”, but simply a service provided by them. I understand this completely.

The problem is that I don’t want to support such behaviour. If they are supported by donations, I expect them to listen better to what people think, instead of taking some actions and saying “it is not open to discussion”. And, if the policy of the network is supposed to include “listen to our users”, I think PDPC should take a closer look to the behaviour of their staff team regarding their reaction and “openness to discussion” with the users of the network.

If I could, I would ask my money back.

(The relevant logs for the event are available at http://debianbrasil.org/irclogs/)

Syndicated 2006-02-04 19:35:56 from Eduardo Habkost / diary

Google Talk Now Federated!

Good news for jabbers users: Google announced today that open federation is now enabled on Google Talk. This means that now any jabber user can talk to a Google Talk user and vice-versa. I’ve been waiting this for months.

Syndicated 2006-01-18 14:02:59 from Eduardo Habkost / diary

9 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!