Caciocavallo fonts

Another day, another non-existent problem solved 😀 Seriously, the font problems I’ve seen yesterday have been kindof bad luck. Wrong font has been chosen by the pipeline, one that doesn’t render smooth as bold font. Plus some small problems in OpenJDK and/or FreeType regarding rendering this font, etc. Today I tried the Font2DTest program of OpenJDK and most fonts look just fine:

This is Bitstream Vera plain without anti-aliasing. Pretty smooth. The font we’ve seen yesterday has been FreeSans bold:

Which also looks slightly crappy with OpenJDK’s default pipeline:

BTW, it’s really amazing how well Swing applications already work. There are only very few glitches (no mouse drag yet for example) and performance seems reasonable (not quite on par with the OpenJDK X11, but still). And all this with minimal effort on my side, I really only implemented a handful of primitives and a little infrastructure. Yay OpenJDK Java2D architecture!

Caciocavallo prototype

Today I finally solved a non-existant problem, and can finally show some stuff from the OpenJDK challenge work:

The demo already works quite well and performance is reasonable. Of course, there are still many quirks and etches, and the fonts look like crap. Not sure yet, why the fonts look so ugly, I have to find this out. This is using OpenJDK rendering pipeline and does all the rendering in pure Java (over Escher).

A cup of tea

As Mario already mentioned, there has been some Escher goodness during the last couple of days. Both of us have been working on fixing Escher’s GLX implementation (which became broken after my big overhaul of the protocol transport layer). Today I went through the large parameter stuff in GLX, which is so horribly weird, I think I have some gray hair now 😉 Makes you wanna put a // NEVER EVER CHANGE THIS CODE AGAIN in there. Anyway, this means that textures are working now, I think this is pretty cool and the last big broken thing:

A cup of Escher teaTextures in Escher

Phew. I think now we can start with the JOGL layer on top of Escher, which hopefully enables us to run Jake2

Introducing Caciocavallo

A while ago, our (Mario and me) project proposal for the OpenJDK Innovators Challenge has been accepted. Today I’d like to announce the actual project, codenamed Caciocavallo. This project will cover a couple of things:

  • An implementation of the AWT Toolkit interface (java.awt.peer and a bunch of classes in java.awt), that doesn’t make use of Sun internal classes.
  • An implementation of the AWT Toolkit interface that subclasses Sun internal classes and reuses most of the infrastructure. (This is named Caciocavallo-NG)
  • Patches to OpenJDK to enable the above 🙂 Plus better documentation, etc.

The toolkit implementations will be based on the great Escher library. So far we have (somewhat) working prototypes for both the ‘external’ and ‘internal’ implementation (that’s how I call them). Also, I reworked a significant portion of Java2D, to separate SunGraphicsEnvironment and FontManager. So far, the FontManager class was a final class, with most of the platform dependent font stuff in the subclasses of SunGraphicsEnvironment (urgs), and some more platform dependend stuff in FontManager itself (uuuuuurrrgs: look into FontManager.populateFontFileNameMap()). I changed it so that FontManager is an abstract class, with platform specific pieces in subclasses. SunGraphicsEnvironment doesn’t have any font stuff anymore. Works like a charm already.

Until the project is setup within OpenJDK (soon), all the code resides on my server. There’s caciocavallo and caciocavallo-ng (the external and internal toolkit implementation respectively) and a HG patch queue (what a nice feature of HG that is!!) for OpenJDK.

BTW: I spotted a fun part in the affidavit (new word learned) of The Challenge:

I understand and acknowledge and hereby waive and release any and all rights, demands, losses, liabilities, claims and causes of action whatsoever which I may now or hereafter be entitled to assert, including, but not limited to any death, injury, loss of enjoyment or other harm or loss of any nature whatsoever caused by, contributed to, or arising out of any prize awarded to me in this Contest.

I guess this means I can’t sue Sun when I get a heart attack from the price money, or when I don’t enjoy hacking OpenJDK anymore afterwards. Too bad 😉 Ok, now on with hacking (so many things to work on parallel, I need some clones of myself)

Caciocavallo at FOSDEM 2008

WordPress/Debian woes

Today I had problems with my WordPress installation on my Debian server again. Somehow, somebody managed to get access to my WordPress install and disable all the plugins, especially the Askimet plugin. Immediately, I got swamped with spam. I suspect that the WordPress package in Debian stable is not really well maintained and vulnerable, so I upgraded to WordPress 2.5 by backporting the unstable package. This was a very smooth process.

This is how it should work:

echo "deb-src unstable main" >> /etc/apt/sources.list
apt-get update
apt-get build-dep libphp-phpmailer
apt-get source -b libphp-phpmailer
dpkg -i libphp-phpmailer_1.73-6_all.deb
apt-get build-dep wordpress
apt-get source -b wordpress
dpkg -i wordpress_2.5.0-1_all.deb

Following that, I went to the wp-admin page, performed the DB upgrade and everything was fine. Very smooth. (I did a mysqldump before thought, just to be sure)

So many things

are going on right now, I don’t even have the time to blog for a while. Mario’s now working for aicas, which is super cool. Our proposal for the OpenJDK Innovators Challenge has been accepted (yay), which means we will be working on OpenJDK’s AWT, Java2D and Swing stuff in order to make porting GUI backends easier. We also dive into JOGL development, now implementing a JOGL layer on top of Escher. There’s a load of other stuff to do as well, the Jamaica 3.2 release is coming close, the Mercurial transition inside aicas has to be done, the Jamaica/OpenJDK integration too, customer stuff, etc etc. I feel slightly over-worked :-/

To make matters worse, my car decided today to go bonkers. Well, we were thinking about buying a new one anyway, so maybe we have to short-circuit that process now. Also today, Madeleine and Alba have become ill. What a shitty day. Luckily, a postcard from a friend of mine in my mailbox saved my day.