Older blog entries for wspace (starting at number 32)

Oh, this is "suppressed at threshold 3". It is (1). Did it get a default 1 when the system certified these entries to Apprentice? And how is it supposed to go up if nobody can read anything because of the threshold suppression?

Some people are writing blogs on Advogato about general topics, but recently I turned to the opinion that you should only, or at least mostly, write about your open-source projects at Advogato. So I will try not to write anymore about politics, science in general, or personal things. Unfortunately that means there is nothing to write now since I have not been working much on my open-source projects for various reasons. One reason is that I have to do so much "serious" work, you know what I mean. Another is that some of the projects have reached a stage where a boring programming task at hand. And perhaps the most important reason is that I just can't find the right people to join a project. Working alone on open-source is a thing to avoid to my opinion. You need another project team member who is willing to read your source code (Python in my case) and who preferably has a more or less the same programming style as you do; somebody to discuss things with; somebody who can test your ideas; somebody who can keep you from diving into something silly; and most important of all somebody to join the fun with, to share the proud feeling when you've created something that works.
Oh well, enough serious work to do.

30 Apr 2004 (updated 30 Apr 2004 at 12:56 UTC) »

Added some of my projects to my publicly accessible page.
If you are a Python programmer, help is wanted on projects RML, wspace and webrogue. Especially on webrogue, if you know for example how to install/run mod_python on sourceforge.

20 Mar 2004 (updated 20 Mar 2004 at 09:11 UTC) »
xml2aml and aml2xml

Here is an online version of a simple tool that transforms XML into something more readable, useful for presentations and the like. Do not expect it to work with XML features like processing instructions and outside entity references, sometimes they work and sometimes they don't, depending on the xml parser on your system. The goal was to be able to have a better usable format for examples consisting of just elements and attributes.

First of all I am totally disgusted by the attack on Madrid. Don't know how to do something about it, support the Spanish, write about it, buy Spanish wine, whatever.

I decided not to put here a big anti-arab and anti-terrorist rant I wrote. But things here in Europe are starting to look grim. In the USA you don't have that many arab people, but in Europe it is really running out of control. There is a *huge* difference in culture.

Back to software development etc.

via Martin Fowler to a Ruby library for XML.

There is this example from Java
for (Enumeration e=parent.getChildren(); e.hasMoreElements(); ) { Element child = (Element)e.nextElement(); // Do something with child }


and then a Ruby evangelist writes that in Ruby it is so much better because it is


parent.each_child{ |child| # Do something with child }


and then there is "Can't you feel the peace and contentment in this block of code?. Ruby is the language Buddha would have programmed in."


Talk about a difference in culture. If Ruby is still for you then you are very different from me.

Next time you develop a tool call it a "Distributed mobile data-driven XML application". Interoperable. Buzzwords compliant. Great.

But now there is a new problem whenever a bug is detected: where is the bug.

pyps.py

I have to draw a lot of boxes and arrows diagrams, so I am currently hacking on a Python module for creating diagrams in .eps.

That is useful when you need to include it in LaTeX. There will also be SVG support, but first I want to get the design right. It has a Box, Circle (Curve), Text and some Arrow classes already, with dash, rotation and scaling support.

It is not just for drawing, but for programming such diagrams. The idea is to be able to write a program like

p = pyps.FileContents()
b1 = pyps.Box()
b2 = pyps.Box()
a = pyps.Arrow()
p.add(b1)
p.add(b2)
p.connect(b1, b2, a)
print p.epsText() 

in this example without having to specifiy coordinates at all. I am still thinking about the design for the connect method so that is not there yet. An example created with pyps is here. It was created as .eps and then translated to PNG with ghostscript (Windows install). Also shows a weakness of the Windows ghostscript: it could not find all the right fonts.

It has been a while doing such OO things, but this seems like a good case for OO. If you feel like trying it out, your comments are welcome!

Once it is mature enough, maybe there are other people who would like to join and start a project at Sourceforge.net?

Better writings with an editor?

I read several writers who wrote books back in the 1970's. They did not have editors then, just typewriters. Seeing a smart remark of one of those writers recently in the newspaper, it made me wonder if today they would even write better. It is so hard to write without an editor! Would their books be even better when written with an editor? Are we writing better books these days?.

XML

On second thought, maybe XML isn't all that bad. What about handling tabs, unicode, namespaces, processing instructions, schema declarations, ...

But recently I had to "code" a lot of small XML snippets with an editor. Not just configurations files, all sorts of stuff. Maybe I can come up with a simple translator tool, from human-readable-editable to XML and back. Should not be too difficult. Except for all the fancy XML stuff mentioned above.

If you *are* using indentation, why use XML?

The example by Linus:

    # This is an example
    myhost.com
        passwd Make1Up
        timeout 50

yourhost.com passwd Crappy4You timeout 0

instead of

    <!-- This is an example -->
    <host>myhost.com
       <passwd>Make1Up</passwd>
       <timeout>50</timeout>
    </host>

<host>yourhost.org <passwd>Crappy4You</passwd> <timeout>0</timeout> </host>

Agreed, much more readable. And parsing is no problem.

But the XML example is not using attributes, and his readable version doesn't have something like it either. The order of elements in a list is significant in XML; the order of attributes is not (it is a *set* of attributes). And you need to have 1 root element in XML.

I have been thinking a bit about it but I am still not sure what a good readable format would look like.

Perhaps

    # This is an example
    host protocol=http [myhost.com]
        passwd 
            type=secure 
            date=112503 
            [Make1Up\=nice]
        timeout 50

Every line has to start with an element, unless it is an attribute or text content of an element.
Attributes have an =.
Text content goes inside square braces, and may be on the same line as the "last" attribute.
Indentation of elements gives the tree structure: top down + indentation corresponds to the root-left-right traversal of the data tree.

But this format does not make clear that the order of attributes is irrelevant. So I am not happy with it yet.

12 Nov 2003 (updated 12 Nov 2003 at 14:12 UTC) »
A solution for spam

How to avoid spam?  A solution is to only open emails
from people that are on your contacts list.  But then
it will be impossible for people to contact you if
they are not on the contact list.

To get on your contact list people have to register their email address at your homepage. To avoid spammers from registering, they also have to recognize a word displayed by a picture, and type it in. There are tools for generating such pictures automatically from a dictionary.

This is the only real solution I can think of. And it will not be difficult to write a CGI script in Python that can handle the registration. I wonder if it has been done already, do you know?

Hey, the word-in-a-picture recognizing thing is also a solution for "blogspam", or guestbook spam.

23 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!