Older blog entries for cinamod (starting at number 17)

Matrix Revolutions. Wow. Darn good movie. No tribal sex scenes. No crappy CGI. Just lots of wholesome goodness. Yum.

So today, Ruth and I were passing King's bowling alley, whose motto - "Food is Love" - is posted on an obnoxiously huge billboard outside the club. Ruth pokes me in the head and says "I food you!" in the cutest voice imaginable. Melt.

I have to say that I've been amazed at the dedication and professionalism shown by gman and others. It's been nothing short of amazing thus far, and I'm deeply appreciative of their work. They've done so much with so little. Thank you.

But, unfortunately, it isn't all roses. In the efforts to make a better conference, some people got tread on.

I don't envy the choice you made. I'm not saying that I would've made a different decision if I was in your place. The trade-off was probably good for the majority, while it hurt a minority. But because you've set yourself up in a position of authority and deliberately made a choice that negatively impacts various people's lives, you're going to have to hear about it, whether you'd like to or not. You all make your own beds. Now you've got to lie in it.

I'm very much looking forward to Guadec, including the keynote by Alan Kay (not to mention my own 2 talks and the other 10-or-so ones I'll be at). Whether it's officially sanctioned or not, though, I'm still going to give up half of my SVG talk to Dobey. It's the right thing to do. I think that the conference is going to be a groundbreaking success and I hope to see many of you there. Look me up - I'll buy you a beer.

So Martin has been working on AbiWord being an embeddable Bonobo control, which is a pretty neat thing. IMO, *NIX is missing a lot of these sorts of pluggable components that so permeate the Win32 environment and make much VB-style programming so mind-numblingly easy to do. Obligatory screenshot here.

Unfortunately, I've caught a lot of flack for this in GnomeDesktop from an AC. It's too easy to hide behind an AC and flame away. This guy might have some really compelling arguments that the Nautilus folks would want to hear. I bet they'd be great arguments if the presentation was better. Until he unmasks himself and conducts himself appropriately in the correct forum, he'll be ignored by those who can help him.

Anonymity is as much a double-edged sword as it is not. It often lends a false sense of security, or (to paraphrase Def Leppard: Behind The Music) like when the short guy gets drunk - he gets a lot bigger in a hurry. I just wish they'd realize that. It'd make my life a whole lot more pleasant.

Job Job Job Job! Job Job Job Job!

Marklar. It embiggens me to work for such a cromulent company.

Had an interview with a tremendous software company yesterday. I'm apparently one of 3 folks up for the job, and I really hope that I get it (nothing against the other 2 chaps). I walk into their office and am greeted by a sea of monitors, all running Gnome and Emacs. My eyes got big in a hurry. I hope theirs did too, looking at me. I should know in a day or two.

LibRSVG has been coming along nicely. I think I have BiDi text working now as well as a nice shiny new CSS2 selection engine. The text engine needs a lot of work, and to that end, so does Pango. But at least Pango is at the point where I don't take a 2-second penalty hit the first time I try to render some icon's text (rendering an icon with 'Ogg' or "MP3' in it could take 2 seconds longer, I shit you not). Now if only I could decompose PangoLayouts into FT_Outlines, my world would be all fuzzy. That, and if I got that job thing I mentioned above. I think CrAppligent is contesting my Unemployment Insurance claim even though they fired me for "insubordination" (read: boss' gross incompetence, but when you're the owner, you can never be wrong...) 4+ months ago. Ticks me off.


I released a new version of Abi today. Hopefully this will get the attention and fanfare that it deserves. A lot of hard work went into making this release possibly the best release of ours ever. I really applaud my team members and most importantly my right-hand-man, Martin Sevior.

I'm also having some sort of psychic abilities when it comes to the Oscars tonight. TV sucks when your best choice is the Oscars. Tonight's other choices include: War, 2 Steven Segal films, Bond, and Jurassic Park 2: Lost World. Blech.


Enjoy the OpenOffice convention. I've wanted to meet Caolan for quite some time now. I'm pretty envious of you. Take some time off, your telemarketing job sucked, and you definitely deserve it. I hope that you can come to GU4DEC too. We really didn't get to meet up at all at the Boston GNOME Summit.


Being out of work for about 4 months sucks, but I guess I shouldn't have quit my job a few months after moving to Boston, where the tech sector took one of its biggest blows. But I needed to quit in order to keep my sanity. I hope that at least one of the few companies (whose names I won't mention here) finds some spare cash and hires me like they've been promising ;-)


Made a Gimp plugin for this. You can now load most any SVG file into the Gimp and edit it like you could a raster image. If you want to really edit the image, go get Illustrator or Sodipodi.


Made a Gimp plugin for this too. Committed it, didn't tell FJF, but he's on English time and asleep now. I'll tell 'im in the morning. Now it's time to file a bug in Gimp's Bugzilla asking them to deprecate their builtin WMF loader in favor of this... I'm thinking that tml will be opposed. Can't hurt to ask, though.

24 Feb 2003 (updated 24 Feb 2003 at 06:57 UTC) »

While I think it's a great idea that you want to get a decent stream library into GNOME, I think that it's a mistake to write your own, especially when the one that Jody and I wrote for Gnumeric and AbiWord (Gsf) you describe as having "no large architectural problem which prevents Gsf from implementing these features."

Please get in touch with us. We (and I'm guessing countless others) would much have you help our cause rather than re-invent the wheel. Implementing a peek_char() type of method would be trivial. I'm also thinking that async also wouldn't present much of a problem.


The GNOME port is looking really good again, including Bonobo, VFS, drag+drop, gnome print, etc... Should be an interesting 1.1.4 release. The open bug count has gone down sigfinicantly too and the # of features has gone up quite a bit. CVS is a little on the wobbly side, but nothing we can't work out before the 2.0 release in another few months.


Julian Seward wrote back to me with a response to my "does BZ2 store the uncompressed data size anywhere in the file" question. Wasn't the answer I was hoping for, but was nice to hear back from him.

"Alas, no. It's a really stupid design mistake I made in the .bz2 format not to include this info."

Well, Jody and I are looking into workarounds for this problem. We're currently dumping the input to an in-memory stream, which is slow and takes up more RAM than we'd ideally like. We're considering other options (eg. lessening the size-knowledge requirement) but they all seem like suboptimal solutions. If anyone has a time machine handy and is willing to go back and inform Julian of this oversight, it'd be much appreciated<jk>

Impending Doom

I'm not anti-war in general, but I think that a decision such as this isn't to be taken lightly. In my mind, the public case for war against Iraq hasn't been made. Does that mean that we shouldn't go to war now? Not at all. But in order for me as a citizen of the US to be in favor of such an action, I'll need a good measure convincing before I'll give my "thumbs up" to the taking of human life. Why us? Why Iraq? Why now?

While Raph has a few good points in his most recent blog, I can't help but be more pragmatic.

When we examine real-world use cases with regard to handling MSWord documents (most importantly in places where MSWord doesn't exist), I've come to the following 3 use cases:

1) Viewing: User wants to view the content of the document. Formatting doesn't have to be lossless, as the formatting is generally grossly secondary to content. An intermediate format such as HTML, TeX, or plaintext will serve well here, as they pass the "close enough" test.

2) Editing: User wants not only to view the document (ideally in a lossless fashion) and be able to remove and append content as necessary. The intermediate format would have to be losslessly interchangable with MSWord, and the layout engine would have to produce (nearly) identical results as MSWord (whose layout engines aren't even truly compatible between version releases). Here, you want a tool such as AbiWord, OpenOffice, KWord, ... These tools all have the ability to do WYSIWYG printing, and are thus able to produce PDF and PS versions of their contents. Note that these tools aren't perfect yet, but do a good job and can be readily improved upon.

Raph conjectures that it might be useful to have a third option:

3) View losslessly. Layout engine would have to produce identical results to MSWord (see above #2 caveat) and produce an image of the document. PDF, PS, PNG all are good output formats for this use case.

Now, as far as most end-users (secretary, student) are generally concerned, the third use case hardly (if ever) exists or applies. However, in a server setup, it might be useful for #3 to exist for things like batch processing and archival. So let's keep it in for now.

Now note that #3 is a strict subset of #2's capabilities once you have a '--print' command line argument or similar interface. Raph concedes this. Now, if you believe cuenca's recent entries, you'll see that adding editing capabilities to a PIECE TABLE isn't too difficult on top of a static model. To boot, several static and dynamic piece tables have already been written and are freely available. The layout engine's *sole* purpose is only to render the contents of the piece table. The GUI uses a View to alter the piece table. Dynamic content is now not a factor whatsoever in the argument. We have shown that in theory AbiWord's (or OO's, ...) piece table and formatting engine should be able to be isolated from the program, and used in such a batch formatting engine, like one that Raph proposes.

Now, true, the advice Raph gives is sound - the best test for any new layout engine would be to use it + your piece table + graphics class as its own batch renderer. While this is useful for testing, development, and debugging purposes, I think that it's worth the little bit of extra effort to slap a MVC architecture on top of it and make it editable via a GUI. IMO, it'd be a shame if you didn't.

IMO, creating your own renderer now would be useful for novelty alone, as there are already several quality existing ones. Not that there's anything wrong with novelty. I wouldn't expect to get it right anytime during this lifetime, though. I'd personally rather have you working on Abi or OO. But it is your time to spend as you please. In my ideal world, #3 only exists as a step to #2, and #2 already exists in several incarnations. YMMV.

Finally, using The Gimp vs. ImageMagick is, in my opinion, a poor and flawed analogy. Tools like IM (as described here) turn an image to a RGBA buffer. No layout-like operations are necessary during this conversion. The Gimp's operations place more RGBA paint on top of an existing RGBA canvas at specific (X,Y) positions. Again, no layout-like operations need to happen here. While it is useful to first have the "gimp image library" be able to decode the images into RGBA buffers first, the levels of complexity regarding what needs to happen with MSWord aren't even *near* comparable. They're apples and lawnmowers.

Does it make sense for #3 to exist? Sure, I guess. Does #3 already exist? I believe so, via #2. Should you feel compelled to write your own #3 instead of improving the layout engines in #2? Well, that's for you to decide. I'd strongly advise against it. But that's probably just my pragmatism, experience, and desire to have more people on my own projects speaking. IMO, there's isn't the diversity necessary within the OSS community to support multiple #3's (except maybe vanity). But that can be said of a lot of OSS projects nowadays.

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