Older blog entries for wlach (starting at number 13)

18 Mar 2003 (updated 18 Mar 2003 at 06:12 UTC) »

Catching a plane tomorrow to go to the OpenOffice Conference in Hamburg.

Highlighted reason for going: Meet with caolan and others to discuss the possibility of getting my libwpd-based filter included in some future release of OpenOffice (and see what assistance they can give in getting it ready).

Other reasons for going: Learn more about OpenOffice in general and get a much-needed vacation. I'm going to spend a bit of time with my father in France after the conference.


I did some hacking on the OpenOffice export filter: AbiWord now exports span properties to the OpenOffice target document. Additionally, Marc made the WordPerfect filter use libwpd as its backend. Coolness.


Lots of behind-the-scenes-work, most of it not very interesting.

General Boredom

On another note, I'm beginning to feel rather tired of writing file filters for word processors. There just isn't enough thinking involved (relative to something juicy like working on a text-layout system). But I kind of feel obligated to get libwpd (and it associated sub-projects) on its feet: because if not me, then who? It seems as if persistence is trumping novelty here (not a bad thing, really).

That being said, next time I decide to write 10,000 lines of code, I think I'll pick a more challenging and/or interesting project. Unless I actually manage to get a job doing programming. Then I'll just do whatever my boss tells me to (and thank the lord I'm not doing telephone polling anymore).

General Ennui

The end of the United Nations as-we-know-it, and the senseless (e.g.: completely unnecessary) carnage which is presumably going to ensue in the next 72 hours.

I went to the protest in Montreal on Saturday (150,000+ people: absolutely amazing) and a vigil in Ottawa on Sunday. The feeling of solidarity was good, and I was glad to at least be doing something. But it seems like it was not enough.

16 Feb 2003 (updated 16 Feb 2003 at 07:27 UTC) »


Version 0.2.0 released. Good progress made, lots (well, maybe 20) people happily using the standalone WordPerfect -> ooWriter converter.

In light of recent discussion: the new design of libwpd does, in fact, split things up into low and high-level parsing, so it would theoretically be possible to create a standalone renderer using libwpd that would do a perfect job of reproducing the WordPerfect formatting/document information (it's pretty much impossible to do so with AbiWord or OpenOffice's internal structures). In practice, however, I don't think anyone cares enough about WordPerfect files to do so, and the high-level listener does a good enough job transforming WordPerfect-information that almost no users will ever notice the difference.


Another day, another telephone survey: this time about some meaningless "product" whose nature I cannot divulge, and hence I can't even get into how inane it was. I could have gone to an anti-war protest (i.e.: do something remotely constructive that I've been meaning to do for a long time) had I not been caught up in this stupidity.

I really have to start looking for another job..

On my way home from work..

Ate some thai, and picked up the latest issue of Linux Journal. Some interesting articles on the classification of Spam, and Unicode.. and then there was the section on blogs. Some of which was right on the money, I guess, but the references in Doc Searls' articles to Andrew "instapundit" Sullivan as some kind of example of banner-carrier for the electronic age really irritated me. How did this fool get such a reputation?

Hate speech has always been around, no surprise that it can be found on the Internet. What made it semi-tolerable was that it was on the margins, the fringes (kind of like the objectivist newspaper at my old university). I could just laugh at it, dismiss it. I don't consider it worth my time to argue with people whose basic terms of debate include "the islamofascists" and "the clash of civilizations".

But when such talk seems to have established a veneer of respectability or at least a sort of populism (witness the linuxjournal references), I begin to worry. Maybe I'm just having trouble keeping perspective. If I ignore the warbloggers, will they go away?


Drinking black tea and preparing to release a new version of libwpd. Probably would have released it today, if it weren't for last night's pseudo-debauchery, which resulted in such gems as..

Yes, we're in the "new 80s": Maybe I'll get into the "New Smiths" (whoever they might turn out to be) and just be really fucking depressed for the rest of the decade. Then, when I'm in my 30s, someone will ask me what it was like. And I'll just say: it sucked.

If you ask me, it's been downhill ever since December 31st, 1999.

5 Feb 2003 (updated 5 Feb 2003 at 18:18 UTC) »

OpenOffice and libwpd

One step backward, two steps forward. Scrapped old API, hacked up a new one with Marc. This one uses C++ (not sure how I feel about this) and has a cleaner interface, split between low and high-level parsing (this is indisputably a good thing). And we support tables now. w00t.

I think we're set for a 0.2 release sometime near the end of this week. I will be releasing a standalone wordperfect -> ooWriter converter along with it (which I created from a cannibalized version of my ooWriter plugin). I am only aware of one person who managed to get my ooWriter plugin working: maybe this will reach a wider audience.

I'm really itching to move onto something else: it's depressing to think of how much still remains to be done.. at least we don't have anymore API re-writes pending: it looks like we'll really be able to concentrate on features now.

Speaking of features, next up is 'lists and paragraph styles', which are an interesting case. WordPerfect's notion of styles is much more free-form than you'd see in an object-oriented wordprocessor (ooWriter/AbiWord/KWord): there are many, many ways in which things can be defined, some of which are not really supported by the object-oriented model.

It will be interesting to see how good a conversion I can get. I did some lists work last summer: it was quite difficult to get all the corner cases handled correctly. Generalizing this work to styles should take the fun to a whole new level..


New job: telephone surveys. Last year I was writing data-mining software, now I am data-mining software. Oh cruel irony. On the bright side, I am making money (the same cannot be said for my natural language processing assignments).

21 Jan 2003 (updated 21 Jan 2003 at 18:02 UTC) »

chalst: I believe the place you've heard of is called simply "The Beer Garden" (or perhaps "The Biergarten") and is in Queens. Now exactly where in Queens it is.. I honestly can't remember (it has, sadly, been half a year since I was last in New York). It's not too far off the beaten tracks though. I hope this helps.

The Beer Garden is probably best visited during the summer, when the picnic tables are out, and the barbeque is cooking..


With the help of Marc Maurer, I have abstracted the AbiWord WordPerfect filter into a general library for importing and exporting WordPerfect files: libwpd. libwpd will be used in AbiWord, OpenOffice (probably as an external component), and KWord (maybe, probably, hopefully).

I also wrote an ooWriter filter. This was way more difficult than it should have been (the filter itself is only about 2000 lines of code, most of it completely generic and non-OpenOffice specific). All the information necessary is out there, but it's scattered about in the hard-to-find API docs, mailing-list lore, and half-assed, incomplete, barely relevant examples. To say nothing of the process of building OpenOffice itself.

On the other hand, the engineers at Sun and Ximian were wonderfully helpful whenever I asked questions/had problems. So it's not all bad. Maybe things will get better with time.

I'm writing up some documentation on filter/component writing for OpenOffice, which should help those who follow in my footsteps. You can find it at Ximian's OpenOffice Pages.


Doing some hefty refactoring. Redid the statusbar to use native widgets (leaving the XP code only the task of handling the model) a few weeks, currently refactoring the frame code. First cut has been committed, awaiting work from Win32/QNX maintainers to bring their platforms into line. Anticipated results: cleaner seperation of model/view, elimination of several thousand lines of duplicated code in the platform-specific frontends, less bugs, easier to cleanly implement new features. All quite satisfying, I must say.

In general, I've been quite psyched about AbiWord lately. The latest versions of CVS are cleaner/better than ever before. And it looks damn sexy. Yes, I think it might just have a future, even in the wake of OpenOffice's rise to glory. Maybe I will write more about this some other time.


I learned the letter keybindings and a bunch of other stuff that I had not yet bothered learning. Still probably using about 10% of the features I could/should be using for editing code, but I am now at least one step closer to being unstoppable. Anyone know of a good, advanced Emacs/XEmacs tutorial?


.. could be better. Still haven't found a job, feeling rather lonely in this new city (most of my friends from university are still in Toronto). And that's only half the story.. all I can do is be thankful for new, small comforts from the British: the band that is New Order (Power, Corruption, and Lies) and the writer that is Will Self (The Quantity Theory of Insanity).

Et j'ai amélioré mon français. C'est pas mal ça.


I moved to Montreal. I'm looking for a job. This may take a little while..

Gnome Summit

I went (for two out of the three days, anyway). Some encouraging news on the Gnome Office front: promising movement on clipboard integration between apps, thoughts on reading the OpenOffice format, and the transition to a next-generation printing architecture. Meeting martin, cinamod, and others (hi voltron!) was good: I feel more connected to both AbiWord and Gnome now, which was pretty much my reason for going.

I was also extremely impressed by the GStreamer presentation. Definitely some smart people, and smart things being done there. It remains to be seen whether it will come together into something that is widely used: the infrastructure seems to be there (the demo of the pipeline editor was awesome), it just remains to be seen whether they can get the implementation rock solid (there seem to be, alas, latency issues with sound playback). Definitely a project to watch.


Read "Culture Jam" by Kalle Lasn. Overall message: "submit to your rage against the corporate powers at be. Awaken from thy slumber and revolt!". I understand where the rage is coming from (I can't seem to shake those bleeding heart hippie principles, no matter how hard I try) -- but I think he oversimplifies the reasons why we live in the world that we do, and doesn't really offer the most responsible program for change.


You just cannot simply reduce the history behind our current culture to the rise of the American corporation. Yes, that's an important factor: but there are others, equally if not more important. The industrial revolution? The communications revolution? Liberal democracy? These aren't simply forces which were incidental or merely enabling: they are significant factors in their own right, with their own effects, making their own distinctive mark on the world we live in.

However, in this age of ambiguity, I can't fault someone for taking a strong stand on an issue (even if it results in over-simplifications and hasty generalizations). We need more of this sort of thing, especially in Canada, where the level of political debate is unbelievably anemic. But, even so..


Yes, it is true that much of our world-view is mediated through a filter of corporate-manufactured ideas or memes. So what? A few hundred years ago, my ancestors' reality was primarily mediated through a religious doctrine of salvation in the next life. The idea that Lasn presents, that somehow it might be possible to overcome all mediations, and live an authentic life of "pure spontanaeity", is, I think, ridiculous and irresponsible. We will always need myths, idols, and world-views to fall back on: it is only a question of how clearly we see them, and how we choose to deal with them. The track record of blind rage has been rather poor on this account-- something other ingredient, cultural or technological, is needed for these things to change..

But then, I'm just trusting my reason here, when I should be paying attention to my gut instinct and righteous rage. It's the same Antisthenes vs. Socrates argument (instant path to truth vs. careful investigation), all over again. Perhaps someone else has other thoughts on the book?


I have recently been focusing my work on improving the GTK2 frontend to AbiWord (CVS Head). This has been interesting. While the overall class abstraction between cross-platform/platform specific code seems fairly sound, there is definitely some strange stuff going on with regard to particulars. AbiWord draws its statusbar manually, using its own GR_Graphics class, instead of native widgets. The keyboard code is also weird-- instead of using native keyboard accelerators/handling, it makes all keypresses go through a top-level key-trapping method.

I can't quite figure out whether or not the original Sourcegear people thought these were good decisions when they wrote this code. You end up writing about the same amount of XP/PlatformSpecific code, and the result isn't any more robust. Platform specific toolkits have convenience functions that can reduce your workload-- it makes sense to use them. I think it's a much better idea to just set a bare minimum of std. in the XP portion, and then let the native toolkits do what they were designed to do.

I have some assurance from the win32 experts that it should be possible to get this stuff working correctly using a more platform specific approach (leaving the XP to handle the real backend), so I don't feel shy about moving forward and reworking this stuff.

This work isn't particularly glamorous, but I think it's necessary if we want to move forward. There's a lot of weird bugs that have cropped up because of these decisions. Others are doing some fairly exciting new-feature work (tables, a new printing framework), so I don't think there's any danger of the project stagnating..

School's out, I've graduated (with surprisingly high marks). I've decided I deserve a little bit of a vacation before seeking out a job. I switched cities, set up shop in my parents' house (they're in Paris at the moment) with no one but my cat for company.

Enter "recreational programming". I've been working on adding lists import to AbiWord's WordPerfect filter. Man, what a bitch. Corel's documentation is horrible, and the list info is squirreled away in the most incomprehensible of data structures (hmm.. numbering methods stored in a hash which hashes to.. where? Corel doesn't want to tell me..)

It just makes you want to scream and forget about these issues. But then what are all those people transitioning from Corel Office (such as myself) to do?


Giving thoughts here and there about working on computer games now and again. Scriptable, OpenGL/SDL/OpenAL games, with lots of explosions and dark surreal backdrops. Geez, I might as well be 16 again (back when I wrote my Gauntlet clone).

I don't even play games (except for Tetris) anymore. I just want to write them. I'm going to have to do something about this nostalgia, before it gets out of control.

Been a while since I've posted an entry. Nothing really too exciting in the interim to report-- just more of the same. More work on AbiWord's WordPerfect import; modified it to use a function table, that led to cleaner code, which in turn led me to start working on more involved issues. That is, handling embedded images, handling font changes.

All in all then, it's fairly clear what needs to be done for AbiWord's WordPerfect import. I need to match up information stored in the document-header with information stored in the document-body. It's just a matter of getting the time together to work on this. Something which seems to be in short supply as of late, with the start of school. I could probably keep myself very busy simply keeping up with my coursework. But hey, why let all this deter me from tackling yet another project? Nothing like diffusing your energy in as many directions as possible!

Which leads me to the other part of my coding adventures. I volunteered to port my vrml/iv importer to the Lodestone framework, which I alluded to earlier. Enthusiasm for the project seems to have died; at least judging by the activity on Lodestone-Devel (of course the recent tragedy in N.Y. + D.C. may be the proper explanation for this). I'm hoping that an actual implementation might restimulate interest in the project.

I really like the idea behind Lodestone, both in a practical sense (it does something useful) and its implications for the broader graphics programming community. My hope is that Lodestone might be a start at providing a new, standardized way at solving some of the "default" problems in 3d graphics programming. That is, if Lodestone's architecture proves flexible enough to be extended for a wide variety of applications (a point on which I'm not entirely convinced).

One worry that I have is that even if "Lodestone" does successfully fill its niche, it won't be well received. "NOT INVENTED HERE" is, unfortunately, an all too common attitude among graphics programmers. Witness the proliferation of scene-graph/3d-engine projects on sourceforge.

But that's no reason to give up before trying. I just hope that "trying" won't stop me from hitting the other cylinders in my life..

21 Aug 2001 (updated 21 Aug 2001 at 04:20 UTC) »


Currently debugging some new WordPerfect features (respecting fonts). Found a bizarre quirk in the way WordPerfect handles lists-- as far as I can tell, it just uses a bunch of tab/symbol breaks to represent them-- there's no overarching abstraction. And yet my copy of WordPerfect 8 seems to handle them just fine as "proper lists". It seems like, for the first time, I may be faced with a problem that doesn't lend iteslf to "referring to the file format reference and comparing it to hex dumps of WordPerfect documents!" In other words: a somewhat interesting challenge. Oh yes.

VRML1/Inventor Import for PLIB

Added translation support to the importer, but have yet to get off my butt and commit these changes to CVS.


Also noticed that Steve Baker has started a new project called Lodestone, which aims at creating a universal set of 3d-file loaders which may be used in a generic way by just about any scene graph. Sounds interesting, but I am sceptical about its utility. My experience with VRML/IV import (and the game which I've been working on) seem to indicate that the biggest problem in designing an _interesting_ application isn't getting the data into the scene graph-- it's the ability to exploit it once there. I'm pretty sure this can only be done through a lot of hand-tweaking and massaging of the data files-- at which point the advantage of being able to load 3d model files directly into the scenegraph becomes somewhat dubious.

My opinion on this may change tomorrow. :-)

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