Older blog entries for arauzo (starting at number 10)

Do not use host spam blocking lists

Have you ever felt that you may be loosing incoming email? It is a bad feeling. Furthermore, if you think the nasty you may be, not answering those emails you never received, but they think you did.

Please, please, please, if you are a sys admin, please, do NOT use host blocking list. While their intention is good, their results may be awful.

There are much better ways to fight spam:

  1. Do not publish your email address in a web page. (Use the "user at provider.com" form)
  2. If you have a domain name, use something like spam shield, to avoid them taking your email from the registers.
  3. Mask email addresses in mailing list archives, if you are the admin. If you are not, avoid writing to a list which does not mask email addresses.
  4. If you are a web admin and email addresses should appear in a web page use SugarPlum
  5. Use safe operating systems like GNU/Linux, as in other unsafe systems there are virus collecting email addresses to spam.

I was looking for a python function to get the mean of a list. I thought there would be some simple statistical functions in the main distribution, but there are not. There are not YET. :-) There is an stat module already in the sandbox.

I wanted to learn CSS since long time ago, so I decided to have a look to it and change the look of my web page. It is not very good, as I'm not a designer, but I'm quite happy with what I learned. ;-)

I'm surprised how easyly a CD reader can get broken. I forgot I had leave a CD being ripped on my computer and when I came back 2 hours later I saw grip was still trying to correct some scraches on the second track of the disk... Guess what! It does not read a CD anymore :-(

10 Feb 2004 (updated 10 Feb 2004 at 09:42 UTC) »

Well, I came back yesterday from a weekend at my girlfriend's city and the GIMP bug was already solved! There are great people in the free software community.

Today I've detected and reported a bug in GIMP.

Also I have been preparing a simple form for people to reserve a seat in a free bus from Granada to the Open Source World Conference. And trying to cope with the many intermediates we have between the trip organizer and our LUG.

4 Feb 2004 (updated 4 Feb 2004 at 20:09 UTC) »
Efficiency of Python vs. C++

Obviously I am not going to give the final answer to such a question like which one is faster. It depends on what you are programming and their requisites, and if you need maximun speed you may need to use C++, C or even assembler. But I want to share with you my little experiment.

I wrote a small C++ library for handling tables of data of diverse types. I did it aiming to clarity and usability, and so I used many inheritance and virtual methods. I recognize efficiency was not my priority.

Then I needed to convert ascii files of tabbed data with different formats to mine. I needed to write too much code in C++ (and I wanted to learn python I must confess) so I wrote a python script to do that (with a Gtk interface thanks to lgs).

Fascinated by the simplicity of Python code (as I told you on 29th) I decided to wrote in Python a feature selection algorithm I had previously wrote in C++. Today I have decided to test their speed and these are the results:

  1. Python: 29 minutes
  2. C++: 33 minutes

Well, it is not a very scientific experiment, and I cheated C++ because it is loading the table 32 times (it takes just a few seconds). But, hey! I expected C++ to win by large.

Good (coding is simpler now) and bad news (it took long time to wrote C++ lib) for me. But definitely a BIG surprise!

3 Feb 2004 (updated 3 Feb 2004 at 07:36 UTC) »

I am a bit upset with media saying that we, the free software advocates, are creating viruses (MyDoom). There is no doubt someone want us to be seen like dangerous terrorists.

SCO, and all companies that try to make money by sueing other companies instead of really producing things, have many enemies. Why don't they say that the IBM workers are developing viruses? Will it be because IBM can take actions against being defamed? Should we take legal actions against the media defaming us?

The virus had probably been created by a person or two. Why blaming an entire community for that?

If I known the person who created MyDoom I would state him/her clearly that s/he is making much harm to free software, that s/he is supporting ms war on free software just like terrorists are supporting George W. Bush antidemocratic politics.

Rarely a free software supporter may want to do that...

Yesterday I finished reading "Stupid white men ... and other sorry excuses for the state of the nation!" by Michael Moore. Great book.

29 Jan 2004 (updated 3 Feb 2004 at 07:05 UTC) »

I did this code a few weeks ago, but I still fascinated the simple and clean it looks in python with iterators:

def powerset(set):
  for size in range(len(set)+1):
    for subset in powersetOfSize(set, size):
      yield subset

def powersetOfSize(set, size): if size > 1: for i in range(len(set) - (size-1)): for subset in powersetOfSize(set[i+1:], size-1): yield [set[i]] + subset elif size == 1: for i in set: yield [i] else: yield []

As you may have guessed, given a set of elements as a python list, this code allows you to iterate through the elements of its power set in increasing set size order.

You may be thinking this guy is mad if he thinks that iterator recursive code is simple. But hey! If you look an example, and think how you would write that in another programming language, you will probably agree with me.

The promised clarification example:

>>> l = [1, 2, 3]
>>> for i in powerset(l):
...   print i
[1, 2]
[1, 3]
[2, 3]
[1, 2, 3]

1 older entry...

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!