Older blog entries for cinamod (starting at number 12)

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.

AbiWord

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.

wlach

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.

Work

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 ;-)

LibRSVG

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.

LibWMF

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) »
walters:

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.

AbiWord

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.

GSF

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.

Raph - it has been said that all great men have stood on the shoulders of giants. And for this, I sincerely thank you.

As for your MSWord batch-formatting system, well, I have some experience there between my work on wvWare and AbiWord. In order to do something like DOC->PDF conversion you'd necessarily need a layout engine and some sort of graphics class, like the PDF solution you describe. Re-inventing yet another layout/formatting engine, is, in my opinion, not really worthwhile outside of academia. Things like AbiWord and LaTeX have layout engines and graphics classes already. Using these sorts of tools, you can already do DOC->PS/PDF without of the "klunkiness" that a GUI might impose.

AbiWord --print=file.ps file.doc

wvLaTeX file.tex file.doc

You can then use 3rd-party tools to convert to PDF if you'd really like.

Basically, in my opinion, time would be best spent on improving wvWare or wv2 and the AbiWord layout engine. I believe that getting 100% correct layout is not only possible, but likely.

As you may have read on Slashdot (much to my chagrin since I didn't want this posted to /.), the AbiWord tip jar was recently robbed. The tip jar happened to be run via PayPal.

I've gotten a slashdottings worth of emails on the subject, and I'm thinking that a lot of people are missing my point - I'm not directly blaming PayPal for my being robbed, though I entertain the possibility that the problem might be on their end. I'm blaming PayPal for being insensitive and irresponsive to a customer's needs, and for not living up to the terms and conditions of their membership agreement.

PayPal charges a fee in exchange for providing a service. Several terms of said service are not being lived up to, and in my estimation, PayPal is not acting in good faith.

If PayPal had merely responded saying "We're investigating this charge" *EVEN* if they came back saying that my charge had no merit, I would not have sent this email. I refer you to these quotes from paypal's own site:

"PayPal will investigate your complaint and attempt to recover any funds you are owed. You will be entitled to the return of any funds PayPal is able to collect on your behalf. However, fund recovery is not guaranteed."

See also: https://www.paypal.com/cgi-bin/webscr?cmd=p/gen/terms#insurance and https://www.paypal.com/cgi-bin/webscr?cmd=p/gen/terms#consumer_protection

I'm not a demanding person. I don't necessarily want my money back, though that would be the most ideal resolution to this problem. What I want is for PayPal/EBay to send me a fscking email saying "we're investigating your complaint." That's all. Even better, they could find out the address where the camera was sent and give that to me, or contact some authority aobut the problem. Or at least give me the ability to do so myself without having to get a subpeona against them.

Dom

Hey,

It's been a while since my last entry...

Life's been rough lately. It's been a really confusing ride.

I recently graduated college and starting working full- time. The place I work for is great. The people there are wonderful. I just wish that some of them were closer to my age. The next closest person (age-wise) is 11 years older than me. There are a lot of interesting, smart people that work there. The problem is that most of them work remotely from places like New Hampshire, so their years of wisdom and experience go lost on me. No "water-cooler" meetings to speak of really. Herb Brooks would be disappointed. I'm not a solitary hacker...

After graduation, my friends are scattered across the country. Some are still in the greater Philadelphia region, or at least are for the next few months (I say "greater" because Philly is a really large place, so it could take hours to get to these friend's places). To boot, my girlfriend of 3 years, whom I love dearly, has been visiting Europe for a month. It's tough, considering we've never really been apart for more than a few days these past few years (and we were never apart for more than a few seconds when we were both in school ;-)

I'm having trouble finding motivation right now. But I guess I have a thing or two to look forward to.

Today was a happy day - the last day of classes of my senior year. I'm glad to be (almost) done with school, at least for a while. I know that I'll definitely miss it and a lot of the people I've met here @ UPenn.

I'm hacking on some random AbiWord stuff right now. We should have template support in by tomorrow, which will be neat. I'm trying to squeeze in as many quality/expected features into Abi as is humanly possible. So I guess that I'll start on a new imaging framework tomorrow too.

Speaking of images, my GdkPixbuf patches got committed upstream, and Federico released a new version (0.11) in honor of them. Nothing big, just C++ compilation fixes.

I was working on trying to represent vector images as raster images in GdkPixbuf (WMF and SVG) but got a bit dismayed because this problem is *hard*. I'm sure that I'll start up on this again because at least ImageMagick has support for this. Having support in GdkPixbuf for this will allow Gnumeric and Abi to handle embedded WMFs rather trivially (instead of writing our own handlers using libwmf2 or some such lib). Apparently KDE has 3 WMF-handling programs. Apparently, they all suck and are API-incompatible. Let's one-up them #:^) Well, ok, _maybe_ I'm a *bit* biased, seeing as how I'm a Gnome developer *and* a libwmf2 contributor, but that's just because they're better #:^)

/me ducks the flames

Dom

Wow, so apparently a lot of people read that bit about Europeans smoking. Seems that most people don't know how much I tend to exaggerate about certain things :-)

Lots of flames in the AbiWord camp - me against the other 7 or so active developers. But I think that we came to a resolution that everyone can live with an be fairly happy with.

The good news is that development on AbiWord as a whole is going at a furious pace these past few months. Nothing pleases me more. Unfortunately, feature-parity between the platforms is starting to drift apart. On some levels, this makes me happy - we're using native controls to incorporate as well as possible with the native desktop environment. Of course this means that you can't load a JPEG on windows, but since we're sticking to some standards (like only storing raster images as PNGs) we're going to be fine XP, which makes me happy.

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