Older blog entries for raph (starting at number 143)

I've been more or less under a rock for a while, trying to focus on getting stuff done. And, in fact, I have been getting quite a bit of stuff done.

For one, I've checked in a reasonable cut at the new libart intersector. This one is not only more robust, but quite a bit faster than the old one. There are still a few more bugs to wring out, but I'm confident - the concepts should support 100% robust intersection, even for the really nasty cases, even if the implementation currently has some flaws.

I've also integrated Bruce Q Hammond's aa rendering speedup, which keeps the steps list in sorted order as it renders a scanline, rather than just dumping the steps into an array and calling qsort later. Combined with the new improvements, this is at least a factor of two speed improvement. Now I get 6 tigers a second at 72 dpi on my 900MHz PIII laptop. When I started with libart, the tiger took about a second and a half.

I've also put out the 7.03 release of Ghostscript. This is a good one - lots of bugs fixed, and Jack's new automated regression testing should help us keep it that way.

I just bought a new server for Ghostscript and put it up in colocation at transbay.net yesterday. It's a 1.7G P4 with a gig of RDRAM. Performance is better than I expected - a full Ghostscript compile is about 128s.

Now that I've put out a bunch of fires, I'm going to spend some serious time finishing my thesis. That's been on hold for too long.

4 Oct 2001 (updated 4 Oct 2001 at 07:35 UTC) »
maelstorm: I took a look at Joy, and find myself slightly intrigued. It looks a lot like PostScript to me. In fact, I can't really find anything that Joy has that PostScript doesn't, except of course for being purely functional and having formal semantics written down.

All the usual functional programming tricks work just fine in PostScript:

GS>/map { [ 3 1 roll forall ] } bind def
GS>[ 1 2 3 ] { dup mul } bind map
[1 4 9]

Once you wrap your brain around the stack, PostScript is a surprisingly modern, powerful language. In addition to all the advanced "combinator" stuff seemingly rediscovered by Joy, it has the usual strings, lists, and maps (dictionaries in PS jargon) as first class data types. In fact, Joy doesn't have the map natively, so in some ways it's even more primitive than PostScript.

PostScript is even fairly well suited to object oriented programming, using the combination of code as first class objects and maps.

Even so, RPN makes readability worse, because you have to keep the stack in your head at all times. 3 1 roll, dup, exch, index, etc., are just poor substitutes for named variables. You can do named variables in PostScript, but it's not popular (or idiomatic), in part because of the nontrivial performance penalty on most implementations (the "activation records" need to be heap allocated and then garbage collected).

I think stack languages are destined to become curiosities, but well worth knowing about for any serious student of languages. I hope the Joy people have fun.

Bad patents

Apple has a patent on alpha compositing. I'm sure there are worse patents, but I don't come across them all that often. I have a short rant about it on my website now.

Incidentally, delphion.com, which used to be the wonderful womplex patent server at IBM, is now a really annoying site in which just about every link brings you to the paid subscription sign up screen. They would appear to be a model of how a company can make money selling free (in the case of US patents, public domain, even) information. Fortunately, the US PTO site is still moderately usable, and offer the bulk data at cost, as well.

12 Sep 2001 (updated 12 Sep 2001 at 07:44 UTC) »
Hope for peace

I was completely unable to concentrate today, not surprisingly. This was a very, very big thing that happened.

I am a Quaker, a member of the Religious Society of Friends. Quakers don't have much in the way of ideology, but peace is a very central testimony. I am praying for those who have died in this attack, and praying fervently that the aftermath doesn't kill too many more people.

And, frankly, I have high hopes for this. Ordinarily, I am not that big a fan of the American military and spy organizations, but in this case I am sure that the best and brightest, the most experienced and knowledgeable anti-terrrorist analysts in the world will be giving their full attention to finding those who are responsible for this attack and bringing them to justice.

As I see it, the greatest risk is the Israeli-Palestinian conflict, which has always been something of a tinderbox. Further, there doesn't seem to be much we can do about it (except to stop supplying them with weapons). These deep-seated religious conflicts have been so pervasive in human history that it seems likely to me they're simply part of human nature.

The images of Palestinians celebrating the attack have angered and enraged many Americans. I hope and believe that the majority of Palestinians decry the senseless loss of human life, as would any compassionate person. There is, of course, a segment whose zealotry outweighs their compassion, but then again there are probably many more Americans at this point who would be happy to see the deaths of all Palestinians.

I'm sure I'm not alone in wondering what I can do. I'm not eligible to give blood. I darkened this site for a while, but have now set it back. I will pray and remain open to any other ways in which I could help.

I notice quite a bit of spam in my mailbox today. I can totally understand wanting to get on with life, and the healing power of work, but for whatever reason sending spam today seems particularly offensive and disrespectful. Ah well, spammers are not known for being nice.

Also, while it's not hard to see why people are drawn to conspiracy theories and wild speculation, I don't have much tolerance for them myself. The attack must have been carried out by intelligent, educated people who embrace irrational beliefs. All this "nostradamus" crap simply serves to illustrate that this irrationality is not confined to the terrorist side. If it comforts you, fine. Just don't take any of it seriously.

I'm (for once) happy that the people in charge are holding back on key information. Eventually, it all has to come out, but for now there's a legitimate emergency. In normal circumstances, I consider myself one of the strongest advocates for free speech and full disclosure, but I do not believe these are normal circumstances.

I see that the "infowar" scare-mongers are at it again, such as this USA Today story. While it's plausible that terrorists do use encryption tools, this story strains credibility (especially with all its factual errors). While encryption protocols are ostensibly uncrackable, in practice they are so subject to human error that I doubt it will slow down a concerted effort to find the truth much at all. I hope the rest of the world has the common sense to see the infowar/cyberterrorism folks as they are, a bunch of opportunists who have read too many hi-tech spy thrillers.

At some point, I want to quibble with the phrasing of "an attack on freedom" and the usage of "coward", but not tonight.

Peace to all.

Raph

Back from Chicago

I just now got back from Chicago, where I played booth bunny for Artifex. I wasn't expecting much from the show, but it turned out to be surprisingly fun (and productive). It's always a thrill seeing your work actually being used by people, and I got quite a bit of that thrill at the show. For one, RipIt is now shipping my Even Toned Screening in their product line.

I did a number of fun things in the various bits of in-between time. I did some fun computational geometry to fix a longstanding performance bug in the Ghostscript shading renderer. I traced most of the Roman alphabet glyphs in the Guillaume LeBe contact sheet using pfaedit. I made a little prototype of a multilevel error diffusion dithering algorithm (which should be tasty on newer inkjet printers).

I find myself with a pretty big todo list to work through. No doubt, by the time I get done with that, it'll be time for Seybold. Ah well. At least I can look forward to a few months of relatively uninterrupted development time after that.

Is it time for some rocket science?

I've been playing around a bit with antialiased x-terms using the X render extension, with a particular eye toward font quality. It's not as good as it should be. Meanwhile, proprietary platforms such as the Macintosh have truly excellent font rendering. Check out this OmniWeb screen shot, for example.

Extremely high quality antialiased font rendering is a hard problem. It's also one with a somewhat limited span of interest - as soon as 200 dpi displays become ubiquitous, non-hinted aa will become the ideal solution. The big problem with non-hinted aa at lower resolutions is loss of contrast.

A long, long time ago, a group of rocket scientists did some serious rocket science, resulting in a very impressive font rendering system for hinted, non-aa fonts. However, as it was too difficult to use, very few fonts were made in this system, and the fonts that were made did not excite graphic designers. The proprietary world later adapted bits of this technology in stripped-down, but far more usable, form. TrueType carries forward the concept of using a programming language to compute the hinting, while Adobe Multiple Master fonts carry forward the concept of adjustable font-wide parameters. No current proprietary system implements all of the original rocket science vision.

At the time these rocket scientists did their work, nobody was really thinking about antialiased font rendering. The displays just didn't exist at the time. Heck, even mono-bit displays of sufficient resolution where you'd want to use proportionally spaced fonts were still a bit on the cutting edge. Thus, the original rocket science, while an impressive bit of technology, is not particularly suitable for today's needs.

Meanwhile, free software hasn't been standing still. FreeType is an impressive renderer for the proprietary font standards. However, Type 1 isn't particularly well suited for screen resolution fonts, and while TrueType is, it's saddled with a particularly nasty patent situation. Thus, US users can't legally use a free desktop with good quality fonts.

There is a solution: do some more rocket science. I recently dusted off an old prototype of mine, code-named "procedural screen fonts". It shares from the original rocket science the concept of using programs to determine the geometry of the glyph. I hacked up an interesting antialiased stroke renderer that can handle the (primitive) PSF stroke geometry, which is lines and 90 degree sections of elliptical arcs. The results, as a proof of concept, are encouraging. In particular, stroke contrast is quite near the non-aa case. These fonts don't look much like the "real" fonts they're supposed to represent, but that can be fixed.

Like all rocket science, there's quite a bit of work to be done to make it real, no matter how encouraging the proof of concept. I have a fairly clear vision of what needs to be done: generalizing and tuning the stroke renderer to handle arbitrary cubic splines and varying stroke weights, adapting the Hobby's global curvature optimizer so font designers don't have to fiddle with Bezier control points, actually drawing enough glyphs to be usable, and of course integrating with other applications out there.

Should I spend serious time on this? There are a lot of other things competing for my attention. Would I get significant help from the rest of the free software community? Past experiences have been mixed. To a large extent, I just don't know how important this work is. Perhaps everybody is happy with the status quo, happily ignoring the TrueType patents. If so, I should be spending my time on something else. And, as I mentioned before, as soon as 200 dpi displays come along, the work becomes a bit moot. I can buy an IBM T220 for far less than it would cost me in time to push this project forward. So I get a fabulous aa display soon no matter what. This affects the users, the poor huddled masses who can't afford 200 dpi displays. You can tell me how useful this work would be, but talk is cheap. Can you back it up with action?

motb: I think the best fix is to change the wrap in the HTML text entry fields from hard to soft. That will also fix the annoying spaces that show up in some links.

In any case, Advogato runs mod_virgule, not virgule. mod_virgule is hosted on Gnome CVS, not SourceForge.

I had a nice chat with Nick Moffitt at LinuxWorld about merging in the mod_virgule changes he and Neale Pickett have made. Right now, I'm up to my ears in things to do, but I hope to have some time to garden Advogato a bit soon. I find myself with a renewed sense of the importance of an independent site for free software developers, not vulnerable to the fortunes of a corporate sponsor.

Speaking of which, you may find it intriguing to compare the cash on hand with the market capitalization of LNUX. Ghostscript can't afford a sudden loss of hosting services, so I'll be putting a server in colo soon for our CVS, bts, etc.

Lots more I'd love to write about, but it's almost 2 in the morning.

27 Aug 2001 (updated 27 Aug 2001 at 07:42 UTC) »

I got a fair amount of interest from the teaser in my last entry, so I will write it up.

I'm tentatively planning on being at LWCE on Wednesday afternoon. I'm looking forward to touching base with hacker friends, even if the expo itself sucks rocks.

I briefly checked out dillo today, and was quite impressed. I think there is a niche for a stripped down, fast browser (the original gzilla plan), and it looks like the dillo folks are now doing a good job attaining that goal.

Yup, I doubled all the capacities on the certs, so the trust metric is no longer anywhere nearly as stingy. I found some silly performance problems in the mod_virgule code. At some point reasonably soon, I'll do some m/ maintenance, but not in the next couple of weeks, as there are more pressing things in the queue.

24 Aug 2001 (updated 24 Aug 2001 at 18:40 UTC) »
Misc

I got my A22p this week. The 1600 x 1200 screen is yummy!. I'm happily running Debian Woody on it, with pretty much all systems go. Here are the setup notes.

Numerically robust polygon intersection is a hard problem.

RAM is dirt cheap now. Pricewatch lists 512M PC133 sticks for $28, or less than five and a half cents a megabyte. Meanwhile, Apple is charging 78 cents for iMac RAM. It's a really good deal, too, 50% off!

I'm quite impressed by Raster's evas documentation.

Is it just me, or is VA's business model completely unrealistic? I think I'm going to write an advotorial soon on what to do in a post-SourceForge era.

I don't think these are very bright times for free software. In particular, I don't sense a clear vision of what we're trying to accomplish. I'm tempted to write a document describing my own, somewhat speculative vision, incorporating trust metrics, Athshe (a simplified DOM), configuration science, peer to peer networking, and general Raph insanity.

Portland was fun, although I'm not sure I recommend travelling with two small children. Probably the high point of the trip was Sunday evening, when we were sitting in the hotel room and trying to chill out a bit, but everybody was feeling tired and frustrated. Heather had the idea of going out for a walk, so we hiked by the Portland Community College, and had a number of fun experiences, including looking at spiderwebs, eating delicious blackberries, sitting on the seat of a forklift, and watching the sunset.

I got a really nice email from Stephen Hardy pointing me to Jonathan Shewchuk's work on numerical robustness in computational geometry algorithms. Interesting stuff, for sure, even though I've decided to take an error-tolerance approach to fix Libart's intersector. It turns out Shewchuk is in Berkeley. I'm going to try to meet with him.

I'm writing this from a hotel room in Portland, where our family is staying for a get-together for a mailing list of parents (mostly mothers) on a mailing list for kids due to be born at the same time as Alan. It's not easy to travel with a five year old and a 15 month old, even if the flight is only a bit over an hour. But we're all here in one piece (each), fed, swum, and reasonably well rested.

I forgot the "atdt" in my chatscript, leading to believe that the connector for my PCMCIA modem was broken, so I had a harrowing experience trying to use the ThinkPad 600's built-in ACP modem from Windows 95. There is now a GPL'd driver, but installation looks nontrivial, so I haven't done it yet - the PCMCIA modem works a lot better anyway.

I am reminded again of just how bad Windows 95 is. Bad. I hear that Windows 2000 is a lot better. I'm curious, but will find out soon, as my next computer buy is an IBM ThinkPad A22p, complete with 1600x1200, 133 dpi LCD screen. Yum. I'll dual-boot Debian Woody and W2k on it. About the only compromise on this machine is that it doesn't have an 802.11b antenna built-in. Oh well. It's also just a bit heavy, but with a screen like that, it's hard to bitch.

I can definitely see how Richard Stallman has acquired a reputation for being irritating. He asked me to patch the GPL'ed Ghostscript documentation to not refer to the newest Ghostscript versions. I told him I'd accept a patch, which is, after all, the free software way. He sent me back a somewhat snippish note saying that he was too busy, and that he works 50 to 60 hours, so it was not reasonable to expect him to do it personally.

Well, I didn't ask him to do it personally. If it's so important to the Gnu project, then presumably there are hordes of GNU minions who would be thrilled to take on this earth-shakingly important task.

Of course, the suggestion that his time is so much more valuable than mine is deeply, deeply irritating. I mean, that's probably the best way to piss people off there is.

I responded, telling him that I asked for a volunteer in my Advogato diary. As it is, this request yielded a volunteer, so the work will get done.

RMS was even more unhappy with this response. Just asking for a volunteer, it seems, is not living up to my responsibility as GNU maintainer.

I see Richard's point, but I am not sure I agree with this. If the ideological purity of documentation for GNU programs is, as Richard asserts, so vital, then surely the GNU community will take care of the issue with dispatch. If no volunteer comes forward, that is a suggestion that it is maybe not as important as Richard believes.

As I write this, I am reminded of Richard's dedication to the cause, even when lots of other people think he is crazy. It is entirely possible that Richard is right about ideological purity in docs, even if very few other people agree with him. But, to me, GNU is (at least now) much more about the community than one person's vision.

I do believe in the goals of the GNU project, am proud that Ghostscript is part of the GNU system, and take my responsibilities seriously. If it weren't for this, I can easily imagine resigning over this spat. The work of the Ghostscript team on the GPL'ed version of Ghostscript is, after all, a gift, and it's not exactly nice to be presented with a picky dental report in return. It really saddens me to think of how many talented people the GNU project has lost because of Richard's personality quirks.

Of course, there may be silver lining: the people attached to the GNU project are, by and large, those truly committed to the ideals of the project, rather than shallow ego gratification (I hear rumors that the newer top administrative staff do fall in the latter category, but don't really know them, so can't really comment). That might ultimately make the project stronger than it would have been if Richard was a nice guy.

Sorry for ranting. It feels good to get this off my chest. I'm mailing Richard now to let him know I wrote this... I think he should hear it too.

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