Outer Web Thought Log
January 31, 2003
Snowy morning
snowing.jpg

Kids at home, wife at work.

January 30, 2003
Snow
snow-in-backyard.jpg After having seen all these pictures of snow blizzards in the US, it's kind of funny to experience the Belgian snow concept again. Within a few hours, this little white carpet will melt into some brown, wet and generally annoying mudlike substance. This was our yearly snow day. Stay tuned for more, next year :-)
Update: Looks like I was wrong, it started snowing again. Traffic jams upcoming!
January 29, 2003
Speaking on XML Europe
My presentation for XML Europe 2003, this time to be held in London on 5-8/May, was accepted. :-) Its title is "Standards applied: Using Apache Cocoon and Forrest", and here's the abstract as a spoiler:
Cocoon is an XML publishing framework offering novel and sophisticated techniques such as SAX-based streaming pipelines, a complete separation between content, logic and layout, and integration with numerous backend datasources. Forrest is a blueprint Cocoon application, that sits underneath xml.apache.org and numerous other websites using XML and XSLT as their technical underpinnings.
Apache Cocoon is based around the Separation of Concerns principle, making sure each person has exactly those tools and environment, and only those, at their disposal for maintaining the content, logic or style that make up a website, without the possibility to mess up his or her co-workers job. Because of this, making multi-channel or multilingual websites is dead easy with Apache Cocoon.
Apache Forrest is a blueprint application of Apache Cocoon, specifically aimed at technical (software) project websites and documentation: it comes with a set of stylesheets, XML grammars, and validation and rendition tools to easily set up a Cocoon-based website, both statically generated or deployed as a dynamic web application.
This talk, by one of the Cocoon and Forrest committers, will give you a quick intro on the design ideas and internals of these valuable open source projects.
Being a regular attendee of the XML Europe conference, it will be fun to be on the other side. Marc was accepted for hosting a full day XML & Java tutorial, too. Hopefully, my OSCON tutorial gets accepted, too!
January 28, 2003
New ApacheBlogger discovered: LSD::Reload
Isn't it fun when you find a new weblogger? Hi, Leo!
No news today
Bruno is working on adding grouping to xReporter. It will be news when he is ready to commit. :-)
January 26, 2003
One of those days
Luckily, we went for a little walk with the kids and had a Chimay. Yummy.
January 24, 2003
Playing by the rules?
No Rules, Great ScotchNo Rules, Great Scotch: JBoss Group LLC, provider of the most popular J2EE-based application server, announces a free porting tool enabling rapid migration of applications running on BEA WebLogic to JBoss 3.0. The port allows organizations to obtain equal or better performance, security and developer productivity on the open source JBoss server without the licensing constraints and financial costs inherent to WebLogic.
Wow. Even though it's no big deal, the wrapping is combative. I wonder how this one is going to work out.
Hoo hum. My first application.
Admittedly, it's one of those small steps for humanity, and a unproportionally big step for myself, but I somehow released my first application today. Yep. I'm one of these guys who lives in meta-land, escaping from real work with would-be languages such as XSLT, still being utterly capable of pretending to understand how stuff works, without participating in the actual masonry. Which makes me the ultimate clueless test user, the ideal cardboard engineer, or the guy you don't want in that requirements gathering meeting, since he will always come up with strange, unthought features which somehow stretch the envisioned architecture of an application until it breaks. That type of guy who knows enough about everything to not know anything in detail. Bah. :-)
That being said, and given my forced extended leave of absence, and given my recent enthusiasm and disappointment with some Python tools, and given the fact I'm surrounded with many true object believers, I acquired half a bookshelf of Python books (yep, I'm a bibliophile, too). Of that heap of books, four books look actually useful: Learn to program using Python, Python Essential Reference, Python Cookbook and Core Python Programming. Programming Python and Python&XML are quite crappy, maybe due to my lack of understanding. Even worse: I now own two copies of Programming Python, one outdated one, and one who is updated to reflect the latest foobar, as publishers use to say. Half of that book is about GUI programming with Python, which is not what I intend, nor am capable of doing. Anyway, I worked my way around the clueless newbie book, which went quite well, and started browsing happily in the excellent reference. Mind you, I'm seriously drowned in object thinking by my colleagues, so I skipped most of that string handling and program flow stuff, and dove right into modules and classes. And somehow, I must have overheard enough about this wonderful world to actually be able to transpose this vague knowledge about programming into actual understanding (and some yearn to get something done, of course, which is quite important).
This complicated state of mind biased me for action, and some recent issues with tracking changes on the Cocoon Wiki I host gave me something to do: sending mails of wikidiffs to the cocoon-docs list. The Cocoon Wiki runs on top of JSPWiki, and JSPWiki offers an XMLRPC interface. Being the lazy type of guy, XMLRPC is about as far as my comprehension of useful interprocess communication using XML and HTTP goes. And I know enough about ReST and the stuff underneath to not feel ashamed by being utterly unimpressed by this SOAP and WebServices hype anyhow. Hence my genuine interest to participate with that new Pluto project proposal, but not the Charon thing. Python has an XMLRPC library, I had some motivation, and I managed to wrap the XMLRPC stuff and the JSPWiki XMLRPC API in some useful classes. Next to that, I wrote a small script using my little library which goes off and fetches the list of changed pages, and retrieves the two latest versions of those pages, diffs them and sends the result to the cocoon-docs list. Mostly thanks to Python, it didn't took me weeks, so I was rewarded quite fast for my new eagerness.
But stuff is getting worse right now. I have some philosophical issues with the interface my own library presents. I want my script to work for different JSPWiki instances at the same time. I want the configuration to be externalized. I have only been 'programming' for some days and am already longing for refactoring. I want to work on that little thing until I'm not ashamed to post it somewhere. Oh, and I want to actually read (instead of browse) another book about Python, too. Does it get any worse than this? I assume so. The language is strangely addictive, even for a poor soul like me.
January 23, 2003
Cocoon for major websites
Buzzard created the new website for Warner-Bros Switzerland. Cocoon underneath, Tomcat on top. Neat.
Python port of Radio
I've stumbled into PyCS, a Python port of the back-end machinerie of Radio, and bzero, a commandline blogging tool being able to post entries to PyCS and Radio Community Server. I'm perfectly happy using Movable Type, and have no plans to run anything but rusty/trusty Apache and Tomcat on cocoondev.org, but it seems like much cool weblog-related development is happening with Python these days. I'm glad I bought those Python books lately, and I worked through the first one so far. High on my preferred reading list is Python: Essential Reference - it's the book that I have opened the most so far. Also, I'm in good company when it comes to Python and other 'little languages'.
Apache Cocoon: top-level project!
Be sure to hit refresh when going to www.apache.org: you'll find out that Cocoon has become a top-level project. The current list of top-level projects is:
  • HTTP Server
  • Ant
  • APR
  • Avalon
  • Cocoon
  • Commons
  • DB
  • Incubator
  • Jakarta
  • James
  • Perl
  • PHP
  • TCL
  • Web Services
  • XML
  • Some other notable additions are Ant and Avalon. Most of the Cocoon committers, myself included, are part of the Cocoon PMC (Project Management Committee), which is responsible for the formal (legal) oversight of the project.
    January 22, 2003
    About elections and voting
    In his typical style, Andy has found out about Martin's unwillingness to vote during the Dutch elections (today). Gee. Hey guys, I live in a country where voting isn't an institutional right. Voting is obligatory in Belgium, at least for all serious elections. Does that fundamentally change the democratic landscape over here? Are there different parties, different tendencies, different problems in Belgium than in the Netherlands? Nope. I don't think politics are much different from culture. I don't believe in political powers being elected without serious consent from the majority of the population. In general, democratic countries get the gouvernment they deserve. Not that we have been happy with this. I don't believe Martin's (un)vote is going to change anything. The law of big numbers.
    New version of Trang released
    All you XML grammar buffs, go and enjoy James Clark's updated multi-schema convertor Trang. Trang slices and dices DTDs, XSDs and RNGs into each other, with the exception of XSDs being inputoutput-only - why would that be? ;-)
    January 21, 2003
    'first posts' on xreporter
    Yum, the first posts are starting to trickle into xreporter@lists.cocoondev.org. Admittedly, the installation procedure isn't for the faint at heart, but people appreciate the overall configurability. On the website, we have a steady flow of demo users, creating more than 150 reports / day. Which isn't impressive in terms of load, but still it's a good test for the longrunning stability of the application. It barely registers in the server load, and doesn't eat memory as well. Cool. We also had a second showcase some days ago (the first being on the Cocoon GetTogether), and all went well.
    Quite some folks ask us how we can justify the open source release of several thousands lines of code business-wise. Of course, we hope to find some consulting and customization jigs that way, but other than that, there's just the general emotion: Is there another way?
    January 20, 2003
    Mobile blogging: slightly tweaked perceived reality
    While the world was breathlessly awaiting Russell's moblogger, I was happily email-blogging for weeks using HEP. Yes, HEP allows you to send mail to its SMTP-daemon, and have that routed through XMLRPC (and a choice of blogger APIs) to your weblog. I assume this allows you to do so-called 'mobile blogging', if you happen to own a mobile device with a decent MUA.
    Python xmlrpclib with proxy woes
    So here is me doing my first steps in Python. I've read through my first 'I'm totally clueless so learn me everything' book, and I have some sort of toy project to work on. JSPWiki offers an XMLRPC interface, which I would like to integrate with for a decent RecentChanges-to-emaillist tool. HEP, rss2email and Hula all seem to do only a (fair) bit of what I want them to do, so if I want all of my itches to be scratched, I better do my own thing. Plus the scope seems small enough to wrap my peanut brain around.
    Alas alas, the gods of Python libraries do not seem cooperative today. My not-so-peculiar home office setup requires a HTTP proxy for all outgoing traffic. xmlrpclib at first doesn't seem to support any proxying. But Google comes to rescue, and I find one sort-of-helpful post explaining how you can use urllib to create a proxied Transport. Hoo hum, already too much Python for my brains. I upgrade xmlrpclib while I am at it. After a while and lots of 'connection timeout' waits, I discover Komodo has an outdated version of xmlrpclib.py in a directory specific to the IDE. Which means a different version of that library will be used depending on where I run my application: inside Komodo or using the command line. Bah. Hopefully I have better luck tonight. Or maybe Lazyweb comes to rescue...?
    Update (I'm getting good at these): it sure helps if you post to the correct URL and read the documentation! The XMLRPC API of JSPWiki is available at http://host/mount/RPC2/, and all method names should be prepended with wiki. Does anyone know something smaller than a peanut?
    Ping Pong
    Sam requires no trackback, just a ping. Let's see if MT makes the distinction between both. Update: no, it doesn't. Mozblog pings, but publishing across XMLRPC will trigger auto-trackback discovery. One starts to wonder why the difference exists...? How can you ping if you don't refer to an entry, a reference which will most likely be a URL in your entry, which means you could as well make it a real trackback?
    Happy birthday, Sander!
    Sander, my oldest son, is celebrating his 6th birthday today. Funny enough, it is the first kid's birthday which learns me that I'm getting older myself.
    January 19, 2003
    Pick your license!
    Adding onto Sam's parody of Creative Commons:
    I've read Creative Commons and Sam's website and I don't know what to choose anymore.
    I've read Creative Commons and Sam's website and I'm afraid to choose anyone of them.
    Square numbers
    Happy birthday, Sylvain!
    January 17, 2003
    Making the leap
    It looks like tomK has made the move and is making himself comfortable. Welcome, Tom!
    Patents, Microsoft and W3C
    I urge you to read this lenghty, well-informed mail from David Turner from Microsoft to www-patentpolicy-comment@w3.org. It offers a somehow twisted, but very eloquent overview of the worries that big companies with active patent issueing and licensing policies have. Intertwinglied and coincidently, my synapses fire off related thoughts:
    Caveat: not having met Arnoud, this is not a judgement on his person nor his work. I saw the presentation handouts and they seemed well researched.
    rss2email woes
    When trying to set up rss2email, I found out that either Mark's ultraliberal RSS parser or rss2email don't like JSPWiki feeds. JSPWiki RSS feeds are pretty minimal, but they sure validate against the RSS Validator. Running rssparser standalone brings back a list of items, but for some strange reason, they don't get passed into rss2email.
    %rssparser http://outerthought.net/docprjwiki.rss.xml

    http://outerthought.net/docprjwiki.rss.xml

    {'channel': {'description': 'Schaubroeck Documentation Project Wiki',
    'language': 'en-us',
    'link': 'http://outerthought.net/docprjwiki/',
    'title': 'DocprjWiki'},
    'etag': '"156ad2-2e0d-530c9ac0"',
    'items': [{'date': '2003-01-16T21:56:28Z',
    'description': 'StevenNoels changed this page on Thu Jan 16 22:56:28 CET 2003',
    'link': 'http://outerthought.net/docprjwiki/Wiki.jsp?page=LeftMenu',
    'title': 'LeftMenu'},
    {'date': '2003-01-16T21:53:54Z',
    'description': 'StevenNoels created this page on Thu Jan 16 22:53:54 CET 2003',
    'link': 'http://outerthought.net/docprjwiki/Wiki.jsp?page=SandBox%2F103-0394_img-cropped.jpg',
    'title': 'SandBox/103-0394_img-cropped.jpg'},
    ...
    {'date': '2003-01-16T20:41:25Z',
    'description': 'An unknown author created this page on Thu Jan 16 21:41:25 CET 2003',
    'link': 'http://outerthought.net/docprjwiki/Wiki.jsp?page=SandBox',
    'title': 'SandBox'}],
    'modified': (2003, 1, 17, 8, 54, 43, 4, 17, 0)}
    Still, when brought into rss2email, it seems like there are no items in that feed. The good news is that this was the opportunity to work with Komodo's debugger. I bought Komodo on Sam's advise, and while it was good money, and most IDEs need more screen estate than my measly 1024*768 pixels, I like it so far. But still, I have a lot to learn, apparently.
    January 15, 2003
    Wrath of the encoding gods
    Ha! It seems like I challenged the gods of encoding. My Euro symbol, which shows beautifully in my MozBlog screen, disappears somewhere along the road to my weblog. It must be the XML-RPC stuff, since it is gone before it reaches MovableType.
    So I had to go into MT and fix over there.
    RSS2
    Modern Times: I added an RSS2 feed, using the MovableType template kindly provided by Mark.If you happen to use more sophisticated glyphs than those available in plain English, make sure that your encoding declaration matches the actual encoding of your feed (which happens to be iso-8859-1 in most cases, also if you want the € (Euro) symbol to be correctly encoded). Of course, all three validate to receive good-blogger-karma. Come to think of it, Mark should migrate that page to HTML4 Strict, too.
    2 (two)
    Sylvain posts CVSSource on cocoondev.org - some glitches, some UNIX talk, some instant messaging, and my circle of trustees has expanded again. Welcome aboard, Sylvain! At your, and CVSSource community's service.
    My favourite sales guy and almost-father
    ... has an RSS feed. Finally!
    Fighting with CVS: the system won
    When setting up a CVS repository for a new project on cocoondev.org, I ended up fighting with permissions, permissions and permissions - having Unix users residing in multiple groups/projects while making sure the correct group is used when creating new directories in a particular CVS repository is fun - not. Tomorrow, I'll give spackle a go, and I'll sure discover how much more Ken knows about CVS than me. But at 1:00AM, I call it quits for today. Mental hygiene!
    January 14, 2003
    Mysterious Manero
    I was intrigued about the whereabouts of manero.org, since he appeared to be well integrated with the Cocoon community, but still I don't recall anyone posting with such an email address to neither cocoon-dev nor cocoon-users. His RSS/RDF feed doesn't disclose any details neither:
    <channel rdf:about="http://manero.org/weblog/">
    <title>Cocoon: Internet Glue</title>
    <link>http://manero.org/weblog/</link>
    <description></description>
    <dc:language>en-us</dc:language>
    <dc:creator></dc:creator>
    <dc:date>2003-01-14T13:32:25-06:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.5" />
    Luckily, whois came to the rescue. Hi, Tony Collen!
    Playing hard to get
    Well, my copy of the Cocoon Developer's Handbook finally arrived from Amazon, but the spine was broken! [from Cocoon: Internet Glue: Cocoon Developer's Handbook]

    Still, Tony had better luck than me:
    Dear Customer,

    We are sorry to report that the following item has been delayed.

    Sue Spielman "Cocoon Developer's Handbook"

    Our current estimate is that it will take an additional 1-2 weeks
    to obtain this item for you.
    GeoURL and fascist parties
    Duh. I just added a new GeoURL icon and assorted <meta> tags to my blog, and I see the geographically nearest website to mine is the one of the 'Vlaams Blok Jongeren Gent' (nope, no link, sorry). People who know me, know that I have very severe adverse physical reactions when confronted with people who think people can be considered different because of skin color or origin. So anybody who lives nearby lat 51.0749 / long 3.7473 (Ghent, my street, that is), please add a GeoURL button so that I'm not alone here with these awkward people. Thank you.
    30 second guy
    Found this in my referrer log. Windows and Linux suck, use Movable Type instead. :-)
    One minute man
    Criticism or Disapproval?
    In closing down the interblog unpleasantness, Ken refers to criticism on his recent squabble with Andy. It was only after a couple of days that it came to me he might be referring to Ken vs Andy. Hm. Perhaps my 'opinion' sounded like a disapproval, which is a nice example of me sounding off different than I intented to. I have a life of apologies behind me :-)
    I better pick up the phone and call someone else tomorrow morning. Explain him that it just felt like a good time to relate Alpha Male proudness to the real truth about electronic communication: while we try to achieve a certain amount of k3wl-ness in what we post, blog or mail, we still are fragile human beings. Most of us live to be loved, to be heard, to be understood. We carefully try to design the reality others will perceive from us.
    Hm. There's a good chance people will get this wrong. If that is the case: here are my apologies upfront. I'd like to call you in the morning! :-)
    Good one, Sam
    Since the easiest way to get in touch with Sam is mentioning him in a blog, and he gave me some good advice (I'll buy a copy, thanks), and I still have a mail waiting in his Inbox queue that I want him and some others to read, here is: hi, Sam! :-)
    Sweet Belgium: job benefits not an extra
    Now that our favourite HP employee is moving to more nutricious pastures, I was idleing away at the Google job benefits listing. Of course, more than half of our income goes to taxes, and we don't have that many beautiful landscapes and sights as Ovidiu has been posting recently, but it seems that we don't need that much extras over here:
    The stupid thing is that all this reserved for employees, not for independent workers. No, that should read as: the stupid thing is that the difference between employees and independent workers still exists. But since employees are really the largest group of workers in Belgium, a good part of our population is very well protected and taken care of.
    Ovidiubot
    64.68.82.38 - - [14/Jan/2003:03:19:35 +0100] "GET /index.html HTTP/1.0"
    304 0 "-" "Ovidiubot/1.0 (+http://www.ovidiubot.com/bot.html)"
    One of the reasons why Ovidiu is changing jobs to Google. Good luck, and bon appétit!
    January 13, 2003
    Python IDEs - which one to choose?
    As I'm slowly (very!) trying to absorb some of my new Python books, I start longing for a decent IDE or editor -of-sorts. Java-developers are spoiled with IntelliJ and Eclipse, whereas Python IDEs have a longer way to go IMO. Or they have a confusing interface, or an old, very Motif-like look-and-feel, none of them do syntax completion in the IntelliSense way, and some of them have reported stability problems. There seems to be a Python plugin for Eclipse, but to be honest, I don't want to follow the Eclipse-hype ATM, nor does the Python plugin seems to be very appealing to me. Of course, ActiveState has a VS.Net add-on for Python, and the code-completion doesn't seem to suck, but the requirement of VS.Net being installed seems like a bit too much overhead to me. If anyone has any idea re: Python IDEs, just give a yell.
    Monkeying Ant
    It looks like Bram Moolenaar, author of the venerable vi-replacement vim, is working on a very Ant-like super-make, called 'A-A-P' (which is Dutch for Monkey, hence the mascotte). AAP mixes make syntax with Python.
    January 10, 2003
    Sleep well, Thud

    A sad story.

    Bladvertising

    RoUS wondered why so few people use advertising in their blogs. I decided to give it a try, and look what happened:

    Traffic Summary   1 January, 2003 - 9 January, 2003
    Unique Visitors      22
    Clicks               50
    Items Ordered        1

    Time to get a marketing executive on-board! I'm going to be filthy rich!

    Dilbert on eXtreme Programming

    Nuf said - go read them while they last: <1> and <2>.

    January 09, 2003
    Ken vs Andy

    Open Source communities. Love them. Alpha males galore. 2 snippets I could resonate with:

    Andy: There is the community-based and open thing and that seems to be generally agreed. Note that the members and board are largely regarded as a star chamber, and I kind of held this view. Now, I still hold this view. (suprised?). Thats my opinion, I think there is a certain closed cliquish thing going on. I will continue to state my disagreement with it. I will continue to state my disagreement with more bureaus and committees popping up all over the place. I'll state it on the lists, and I'll state it here. The fact that *you* don't agree with it and don't want it to color the perceptions of others is *your* problem.

    Ken: Perhaps some people read Web logs inside an <imho> container in their heads. I try, but sometimes I can't; it's just impossible to separate what's being said from the attributes of who's saying it.

    Oh, and the wise guy decides to keep his mouth shut and refers to prior art. Wise indeed, if you are involuntary dragged into an Alpha Male fight.

    My opinion? One of my resolution for 2003 is: don't forget there's a human being behind that MUA, or you'll commit some MUA.

    Update: tomK said this before: For the sake of honesty, I have to admit that I have been tempted to do that in the past. That was before I realized that the people writing and reading those mails were real people. They're not part of your PC, you know, they are real living human beings, with good qualities, sensitive points, and everything else that constitutes a human being. If you think about this right before you press ctrl-enter, you won't press it in many cases. ... which brings us back to Stefano, which brings me back to an unfruitful moment of my own Alpha Male-ship, which brings us back to the seminal think-twice-before-hitting-enter mail. Intertwinglyness :-)

    January 08, 2003
    xReporter 1.0 release

    I just posted the official release announcement of xReporter to some mailing lists:

    Hi all,
    
    yesterday, we've released the 1.0 version of xReporter, our open source 
    Avalon/Cocoon-based database reporting framework, available from 
    http://xreporter.cocoondev.org/
    
    xReporter consists of 2 main components:
    
      * an Avalon Phoenix-based query server, which is configured through 
    XML-based report definitions, and is accessible across an XML/HTTP interface
      * a Cocoon front-end generating configurable HTML, PDF, Excel and CSV 
    renditions of your database reports, thanks to the wonders of FOP, POI 
    and some custom Cocoon drudgery
    
         Architectural diagram:
       > http://xreporter.cocoondev.org/en/my-images/architecture.png <
    
    Most compelling features:
    
      - multiple datasources & report definitions
      - user/role-based report authorization, container-based authentication
      - column filtering & sorting, query by example
      - no programming required to define complex, multistep database reports
        - optionally using temporary tables
        - expression language & field validation
        - possibility to access non-SQL, 'Web Services' datasources
      - fully customizable look & feel using CSS and XSLT
      - flow control using XML and a ReST HTTP interface
    
    xReporter is released under an Apache-style license, and we welcome 
    contributions and patches as we try to grow this into a community-owned 
    project. Currently, there is anonymous read-only cvs access and a 
    downloadable tarball. There's a limited, live demo available on the 
    project website, too.
    
    We would like to sincerely thank the Avalon & Cocoon community for the 
    creation of some wonderful toys to play with, and a great guy (you know 
    who you are) who made all this possible.
    

    Relief :-)

    Tapestry has become an Apache project
    Thanks to the helping hands of Andy and Sam, Tapestry sources can now be found in the Apache source repository, the one place where the Apache license legally reigns. Now that Struts,Turbine, Velocity, Tapestry and Cocoon are neighbours, cross-polination might happen, growing each individual project individually and making the overall Apache offer irresistible.
    January 07, 2003
    Maven vs. Centipede
    Let's see how both parties take up the challenge! (or maybe it is proved that Ant still does the job pretty well ;-)
    January 05, 2003
    How to become an XML expert

    Len Bullard prepared us a test:

    1.  DTD stands for:
    
    a.  Document Type Definition
    b.  Document Type Declaration
    c.  Deeply Troubled Datatype
    d.  I don't know.  Is it important?
    

    Read further for more enlightenment.

    Doing something useful with my time

    Since I'm on a forced leave until the end of the month (and possibly some longer) anyhow, and I'll never reach the Java skills of people I know, I decided to force myself through some Python learning. I acquired (way too) many books, and found a nice introductory text (yep, that's my level of apprenticeship - silly, isn't it?). My incoming book queue so far:

    Programming PythonPython and XMLPython Essential ReferenceLearning to Program Using Python: A Tutorial for Hobbyists, Self-starters, and All Those Who Want to Learn the Art of Computer Programming
    Python Programming with the Java Class Libraries: A Tutorial for Building Web and Enterprise Applications
    Core PYTHON ProgrammingCocoon Developer's HandbookCocoon 2 Programming: Web Publishing with XML and Java

    And my book shelves are bursting already... Oh, Ken, these are associate links - happy now? :-)

    January 04, 2003
    Woes fixed?
    Fixed now? Thanks for the link, Matthew! And good to have you back on the blogtrain.
    Fr*gging Mozilla

    I want to set up multiple mail accounts with Mozilla, each pointing to their own outgoing SMTP server. Mozilla is one of the rare applications where perception isn't exactly reality. There's some little Orc hiding inside the Mail&News configuration panel, that makes sure there is absolutely no relationship between what you see in your panels, and what is stored in prefs.js. Very interesting ... not.
    Result of all this is that I had to recreate all my mail accounts, loosing my set of rules along the way (my own stupidity). My main problem now is how I can post a bug explaining they should get rid of that Orc.

    Good news

    We've got a real programmer working in our company. Not that we didn't knew, of course.

    Message composition format, HEP and Movable Type

    Getting your message format, and line break handling correct for this combination is kinda tricky. I have mine set as following:

    I have to do this on a message-by-message basis, because the pure-HTML-only mode, which is configurable by default for a specific domain, did not work out for me (Edit -> Preferences -> Mail&Newsgroups -> Send Format -> HTML and Plain Text Domains). Of course, I could have switched my default message sending format to mixed-mode, but since much of time is spent on mailing lists, I'm still a plain-text-only mail junkie. Setting such on a message-by-message basis in Mozilla involves going to the Options menu and switching on 'Plain and Rich (HTML) Text' in the Format menu.
    That's all. Now I have your blogs being fed into my mailclient, and me blogging from my mailclient. No more anxiously pushing refresh in Aggie or AmphetaDesk, since HEP fetches RSS feeds hourly, and I check blog2mail mail every 10 minutes from within Mozilla. Cool stuff.

    Configuring HEP for MovableType
    Yesterday, I managed to configure HEP for mail2blog operations. While the user manual concisely lists what needs to be done, I thought adding some remarks to it would cause no harm. I installed MT in a /cgi-bin/ directory on my server, and have a number of blogs running there, all accessible across http://blogs.cocoondev.org/. In my HEP configuration panel, I added a new message destination of type 'MetaWeblog API'. Here are my message destination parameters:
    • Name: OuterWebThoughtLog - this is a symbolic name, you can pick any name you want here.
    • User Name: stevenn - your MT user name
    • Password: your MT password
    • Blog ID Number: MT assigns a number to each weblog - the easiest way to obtain that number is going into the MT Main Menu (the one which appears after logging into http://host/cgi-bin/mt.cgi), and check the URL of the 'Manage Blog' link of the weblog of your choice: http://host/cgi-bin/mt.cgi?__mode=menu&blog_id=2 in my case. My Blog ID is 2 here.
    • URL: the XML-RPC connection point of your MT installation - most likely something like http://host/cgi-bin/mt-xmlrpc.cgi.
    OK - that was one part of the setup, the other one requires you to configure your email client. Possible caveats are forgetting to punch holes in your firewall for the unusual ports HEP uses by default, and fighting with your mail client configuration to set your HEP server as your SMTP outgoing host for your mail2blog messages. With Mozilla, you can set up an SMTP server per mail account so that works out well. After having done all of this (which is well explained in the HEP User Manual), you are ready to send mail using that SMTP server. Just make sure your To: address is correct: OuterWebThoughtLog@hep (yes, that symbolic name, and it is case-sensitive apparently). Hope this helped!
    January 03, 2003
    Testing HEP coolness

    This is a first post straight from Mozilla Mail. Yes, writing this as an
    email :-)

    HEP is kewl

    hep-in-action.png

    20 minutes to set up: Python 2, Twixted and HEP. Added a sample feed. Can browse them on my server (nope, I didn't install it locally, but went the hard way immediately). Can fetch them from a POP box. This stuff rocks. Yes, installation isn't for the aspiring clueless Windoze newbie, but if I can do it, you can do it too.

    Abe Fettig is 'vettig' (Dutch, as in 'keinijg'). That means kewl. And he reads weblogs :-)

    Do we need bodies in our feed after all?

    Ugo picks up on my question on XML-encoding (or not) blog bodies in feeds:

    I'd say neither. Putting HTML content in an RSS description is a bad practice that was spawned when someone decided that RSS would be used not just for summaries (as in Rich Site Summary) but for syndicating the whole content of weblogs.

    Yep. Technically, Ugo is right. Building an aggregator which works across all cases must be hell. Practice demands this though: I had my new blog (and feed) up for only some hours, and three people came and asked for blog content in my feed except of excerpt. And since I discovered Aggie, I feel like having found a decent aggregator, and I prefer having blog content in-place rather than having to traverse a link.

    XML encoding of RSS feeds

    Thanks to Ovidiu, I fixed my RSS and RSS/RDF feeds, and made sure they validate. One question to all, though. In Sam's feeds, I see all description elements contain 'escaped' (X)HTML:

    <item> <title>Fans</title> 
    <link>http://www.intertwingly.net/blog/1080.html</link> <description>&
    lt;p&gt;&lt;a href=&quot;http://radio.weblogs.com/0106046/2003/01/02.html#a204&quot;&gt;Gordon
    Weakliem&lt;/a&gt;: &lt;em&gt;These days, intertwingly.net is beating Yahoo!
    hands down.&lt;/em&gt; Why, thank you Gordon.&lt;/p&gt;
    &lt;p&gt;Apparently Jenny
    &lt;a href=&quot;http://www.j-mo.com/archives/000543.php&quot;&gt;enjoyed reading&lt;/a&gt; my site too.
    I found &lt;a href=&quot;http://www.j-mo.com/&quot;&gt;her
    site&lt;/a&gt; very pleasing to the eye too.&lt;/p&gt;</description>
    </item>

    whereas in mine and Ovidiu's, we chose to wrap this is in a CDATA section:

    <item> <title>American Deserts</title>
    <description><![CDATA[<a class="image" href="/ovidiu/gallery/places/IMG_2158" title="Devil's Golf Course - 
      Death Valley,
      California"><img src="/ovidiu/gallery/albums/places/IMG_2158.thumb.jpg" width="150" height="113" 
      border="0" /></a>
      <p>I just came back from a short trip to Southern California and Nevada. I noticed I visited Death Valley
      <a href="http://www.x180.net/Blog/2002/Dec/29#Social/Travel/PanamintDeathValley">in the same day</a> as 
      <a href="http://www.x180.net/Blog">James Duncan Davidson</a>, although he was four hours earlier than me.
      It turns out this was perhaps better for me, we had a gorgeous day, very sunny and warm.</p>
      <p>Other places I visited were the <a href="http://www.huntington.org/">Huntington Library, Art Collections 
      and Botanical Gardens</a>. The gardens feature an incredible collection of <a 
      href="http://www.huntington.org/BotanicalDiv/DesertGard.html">cacti</a> (plural form of cactus), with over 
      5000 species from all over the world.</p>
    <p>We also hiked at Calico Tanks in <a href="http://www.americansouthwest.net/nevada/red_rock_canyon/nca.html">Red 
      Rocks State Park in Nevada</a>, just 10 miles west of Las Vegas. My son, who's only 3 1/2 years old, did an 
      incredible job 
      hiking this not-so-easy trail.</p>
    ...]]></description>
    <link>http://www.webweavertech.com/ovidiu/weblog/archives/000130.html</link>
    </item>

    Now, what should be the good practice?

    Oh BTW, blame MozBlog on the lost blog entry. Apparently, it overwrote the previous one instead of creating a new one. Bummer.

    January 02, 2003
    Manufactured Serendipity

    Tom enquires about e-mailed RSS. James is looking for the ideal news aggregator. And he finds HEP.

    Sam thinks this is cool. And MozBlog messes up this blog. Duh.

    Maven and Centipede compared
    Berin Loritsch has posted an extensive and well-crafted comparison between Maven and Centipede. Great mail, even if you are not on avalon-dev. A required read if you are on the lookout for a build environment for your Java project. His conclusion:
    Neither build system is perfect. After my excersize, I have come
    to the conclusion that Maven is the more mature of the two build
    systems--but Centipede is catching up fast. In fact, if the current
    pace of development for the two projects continue, Centipede may
    very well overtake Maven in features and ease of use.
    
    I think Maven has a lower barrier of entry to the user, but
    Centipede is becoming easier to use and more developer friendly.
    I am a fan of black box tools like Maven, but if I need to do
    something a little out of the ordinary, I like the flexibility
    of Centipede.
    Cool are the many positive references to Forrest. Me thinks the shbat distribution of Forrest was a killer feature addition. Kudos to Marc and Jeff for that (IIRC).
    Debugging my new weblog

    Tom found out all about my spiffy new weblog, but has some comments - here are my answers:


    Don't worry

    ... if you are afraid not appearing on my blogroll anymore. I'll try and get such a thing back up and running sooner rather than later.

    New blogging tools

    After making the switch away from Radio, the first thing one starts to miss is the news aggregator. So I installed the .Net framework and then Aggie. Aggie looks quite nice and even works with Mozilla.

    The only remaining thing now is a blog client. Since MozBlog has been proving to be less than rock-solid, I'll wait until a new upgrade comes out. I hope it gets better, since I like MozBlog very much.

    My darling wife went out working today for the first time since 8 months: pregnancy and maternity leave. I suppose this marks the end of a period in our life: no more little babies anymore, no more extended leaves for Mie, and kids growing up instead of being born. Saar now has 7 months, she starts crawling, she is almost always extremely happy, and life goes on. Snif.

    January 01, 2003
    Escapism: migrating Radio to Movable Type

    I'm trying to escape from the strangulation (and instability) of Radio Userland and move to Movable Type. Even better yet, I plan on migrating the content, too. My new installation of MT is already awaiting content at its new and cool URL, but unfortunately, most of the migration scripts and tools I found so far aren't really working - in particular with titles, which I have painstakenly added to most, if not all of my Radio blogs. Does anyone know of a script that preserves titles while migrating? Or does know a bit more about Python than me?
    Update: I was looking in the wrong place - this did the trick :-)

    Perception is reality, a visual proof

    Look at this picture from Stefano's image gallery. Thanks for bringing this to my attention, Andy!


    Lounging on 1/Jan 2003

    A lazy day. The boys are exploring the excellent Boowa & Kwala site, babydaughter is fast asleep upstairs, and we are trying to recover from our light hangover - too much wine yesterday evening...

    Happy New Year!

    TagSoup and the Academic Free License

    John Cowan posted the first public release of TagSoup, a SAX HTML parser which corrects messy markup along the way. Apart from the actual implementation (I might as well use Andy's NekoHTML instead), John went at much length to pick a license for his open source project. He is using the Academic Free License, which has some special patent-aware clause in it:

    Mutual Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License if You file a lawsuit in any court alleging that any OSI Certified open source software that is licensed under any license containing this "Mutual Termination for Patent Action" clause infringes any patent claims that are essential to use that software.
    Now that's a mean, but fine thing to add to a license - I assume this is an example of patent pooling.

    POI year in review

    A nice read by ACO liver - it's good to see he's actually making some money on POI. We are using it in xReporter.