August 29, 2007
This Thursday, August 30 will be my last day working as an intern at Red Hat.
It’s been an absolutely amazing 16 months working here, and I’d like to thank everyone who welcomed, mentored, and befriended me, and who helped make this experience everything it was – both within the company and in the larger GNU Classpath & Open Source Java community.
Please do keep in touch, and feel free to give me a shout any time – ask me in IRC (fkung on Freenode) for my personal email, as my @redhat.com one probably won’t be working past this week.
July 18, 2007
I had originally hoped to have fonts committed into the IcedTea repository last week, but unfortunately we didn’t make it (I was away all week on RHCE training). During this time, however, Kyle Galloway continued working on the fonts and we have now committed the entire patch – including working metrics – into IcedTea.
This font implementation is not perfect; it only covers basic functionality until Sun releases their more comprehensive font work. Specifically, the following are known not to work:
- Vertical layouts
- Non-English characters might not all display
- Some occasional glyph sizing problems
- Sub-pixel LCD anti-aliasing
If anyone comes across any more problems (and I’m sure there are other bugs), we’d really appreciate a bug report in the IcedTea bugzilla so we can take a look at it.
Also, be aware that other encumbrances remain (path widening and anti-aliased rendering), so not all graphical applications will work yet; a full bootstrap build is also required for graphics support at the moment.
July 6, 2007
It’s been a long week:
The rendering problems from my last post have been cleared up, and IcedTea now has basic font support looking quite decent. Metrics-calculation still isn’t working, which affects the Swing/AWT layout managers (I’m not sure where this is done: the native graphics code doesn’t seem to be called), but the rest seems good.
A bit more cleanup, ie removing debug statements, hard-coded build paths, etc, and this will all go into the repository – hopefully some time Monday morning.
July 3, 2007
Continuing off my last entry, an update with IcedTea fonts:
IcedTea has basic font support using Freetype! Of course it’s nowhere as complete as it would need to be to completely replace T2K, but it’s a good stopgap measure until Sun releases their internal code.
A bit of clean-up work (the rendering’s still pretty ugly at the moment!), and I’ll commit this into the mercurial repository.
June 25, 2007
It’s been a crazy month with Sun’s release of the OpenJDK, and Red Hat’s response with the fully-free IcedTea. While my previous Classpath graphics work was interesting, there was always a bit of a cloud hanging over it, knowing that the OpenJDK was going to be released eventually. Now, however, I’ve been able to put some of that experience to use in replacing encumbered OpenJDK code.
Graphics are a major encumberence in the OpenJDK; however the encumbered parts are only critical bits and pieces – not wholesale packages. This makes their replacement all the more difficult; we could throw away all of OpenJDK’s graphics code and completely replace it with Classpath (something I believe Roman Kennke is working on, by plugging Classpath’s GTK peers into the OpenJDK), but I’ve opted to keep as much of the OpenJDK’s X11 code as possible and get that working (including compatibility fixes with colour management and raster creation). If both of our efforts succeed, we’ll have two working toolkits in Linux – pluggable toolkits anybody?
Anyways, I hit a major milestone today as Swing & Java2D work!
Anything that deals with fonts still throws exceptions, since I haven’t started replacing libt2k with Freetype, but that’s next on the list. Again, I’m going to try to keep as much of Sun’s OpenJDK code as possible (rather than replacing classes), meaning I’ll be heading into JNI-land. While Freetype isn’t a perfect replacement, I hope to get at least basic font rendering support into IcedTea.
February 8, 2007
Anyone using an old Matrix Millennium G400 dual-head video card will share my pain in getting it to work. The open-source mga driver doesn’t support dual-head for this model, requiring a binary blob from matrox. Matrox, however, hasn’t updated their drivers in a while, and their drivers don’t work out-of-the-box either. But it can be made to work!
Read the rest of this entry »
February 1, 2007
A couple of weeks ago, I went down to Montreal with some people from work to attend the Canadian University Software Engineering Conference. Until now, my software experience has mostly been somewhat informal – side projects, casual volunteer work… my most “formal” experience has my Red Hat internship and working on GNU Classpath – and (especially as an intern) even that’s a pretty relaxed atmosphere.
CUSEC gave me a bit more insight into software as a profession, and the role of software in industry. I think it’s a fairly interesting distinction, the difference between a company that does software (ie Red Hat) and a company that has an IT department supporting their other activities, in which case the IT staff are often viewed as overhead. But the conference definitely widened my view of software engineering and where the software sector is going. I’ve also come away tempted to dabble a bit in Ruby (just to say I’ve used it, since it seems to be the new “big thing”).
One interesting thing was the huge prevelence of Microsoft & proprietary software. I suppose the “bubble” that I’m in really shields me from it in my day-to-day, but it was a bit of an eyeopener. There were a lot of anti-opensource “radicals” among the speakers, but very few (or at least much less outspoken) open source advocates. Open source software and systems were still regarded as a hobby and a hippie thing, but not “professional”… which was unfortunate. It was harder to gauge open source vs proprietary support among the delegates, but it still felt lower than I’d expected (not even a 50-50 split). I would have welcomed some more serious discussion on proprietary vs FOSS, but it seemed like the “cool” thing among the speakers (this year at least) was to simply bash open source.
All in all, though, I found the academic talks were quite interesting, and the keynotes offered some good tips that apply to all kinds of software development (proprietary and FOSS).
And in other conference news, I recently spent a few days in Calgary for the Engineers Without Borders National Conference. I’ve been involved with them for the past few years in my spare time, and it’s always an amazing experience to spend time with such a group of energetic, highly motivated people.
January 16, 2007
I recently bought a “new” laptop to replace my old Compaq Armada, which had finally died due to a bad power connector.
The new laptop, coincidentally a Compaq/HP as well, is a corporate off-lease and comes with a Windows XP Professional license key (an OEM sticker on the bottom of the machine). Perfect, I thought, I can dual-boot the machine, instead of borrowing my parents’ computer to play those games that don’t quite work in Wine yet.
Or so I thought. After an entire weekend of finding and borrowing every Win XP Pro installation CD I could get my hands on – OEM from a friend, volume license from an organisation I volunteer with, with SP1, with SP2, playing with the setupp.ini file… I simply couldn’t get the thing to install. It would refuse my (valid and legal) license key, no matter what.
So here I am, many hours later, staring at a valid license key that I can’t use. At least it came OEM with a used computer, and so I didn’t pay much for it. But this is ridiculous, and I hear Vista will be worse. Anti-piracy is one thing, but valid users need to be able to use the product as well… Or, wait, rather than doubting your users and treating them all like criminals (what happened to “innocent until proven guilty” anyways), why not embrace your user community and work with them? You can still make plenty of money that way. Just ask Red Hat.
January 2, 2007
Today marks the half-way point of my internship with Red Hat… I started 8 months ago, at the beginning of last summer, and I’ll be here until the end of next summer. And since this blog’s now on the Planet, I thought I’d reflect a bit on my Classpath work over the past few months.
Interestingly, when I came here, I had just about zero experience working with graphics – who knew that would become my focus. After some time doing various bug-fixing and learning the codebase, my first major “project” was the java2d benchmarker. It’s in the classpath examples directory, and I’m still using the tool: both to measure performance, and as a quick visual test of basic java2d drawing.
Image operations were next on the list: testing and fixing the various java.awt.image.*Op classes… transforms, band combine, convolve, and the like. Performance still isn’t as good as I’d like, but those classes are now tested much more extensively in Mauve and are much more robust.
But recently, I’ve focused on our java2d cairo peers, using the Batik testsuite to measure compliance. With Sun’s recent open-source Java announcements, this has become all the more important since it is a potentially encumbered area of Sun’s Java implementation… we’ll see if any of my work sees the light of day. The test-suite has gone from crashing horribly, through a number of steps, to mostly passing. Instead of most tests throwing exceptions, now half the tests complete perfectly, and another third are pretty close. That leaves only 5 of 30 tests crashing or otherwise failing badly.
The Batik samples have been a great stress-test for our java2d, as it uses many of the less common areas… custom composites and gradients, translated subimages and subrasters, etc. Once the rest of the tests are passing, I’d be interested in profiling these tests to see exactly how much of the java2d is tested: I suspect it’ll be most of it. In the meantime, here are some interesting before & after screenshots:
December 15, 2006
The image (one of the samples from the Batik SVG renderer) on the left was rendered using Classpath; the image to the right using Sun’s VM. Notice how the borders of the chessboard are blurred in the Classpath image… this is due to a minor precision problem in the float/double. Rounding solves it, but perhaps rounding is only a band-aid solution to a different root problem?
( I’m really not a blogger, am I… last entry was 6 months ago…)