Archive for May, 2007

Web 2.0.3

Every time I read about a new Web 2.0 application, or Y Combinator boot camp, or anything ending in “oogle”, I lose a little piece of my mind. Over time this adds up and I start thinking strange, crazy thoughts, like “maybe I should rewrite Automake as a set of GNU Make include files”.

Occasionally in these moods I brainstorm web site ideas.

For instance, how about, for all your virtual beer-owing needs? Instead of saying “I owe you a beer”, say it via our new social networking site, dedicated to beer redistribution. It has an irc bot so you can /msg your thanks as well. vbeer connects to the free software calendar of events, and will show you a printable chart of how many rounds you have to buy, for whom, at the events you’ll be attending. Version 2 will include some code for (optional) transitive beer forwarding

More seriously, I keep wishing there were a site for “sensitive programmers” (titled perhaps after Elaine Aron’s book, which btw is pretty good) — say a sort of support group with ideas on how to avoid excessive emotional bruising in a field that, in my view, over-tolerates assholes

Finally, I know this is crazy, but what about a web site dedicated to making it easy to download and install random bits of Emacs Lisp code? Oh, wait, I did that. (And if you’re into this at all, there’s an amusing and somewhat strange discussion of package.el on the Emacs devel list.)

C++ noodling

A while back I spent a little time playing with g++, trying to understand compilation performance. For this experiment I tried to measure how much speedup a “model-based” compiler could expect to achieve.

I compiled my test program a few different ways. I timed compilation of a plain build (more or less a “make”) both with and without PCH. And, I timed compilation of the “” approach — I’ve heard many times over the years that C++ shops will cat their sources together into one big compilation unit, and that this reduces overall build times.

So far I’ve only done this experiment by compiling gcjx, a moderately sized, fairly ordinary, C++ program with which I am familiar. I plan to redo this with a couple other programs as well (send suggestions).

The results:

Approach Time
Plain build 13m50s
Plain + PCH 8m05s 3m18s + PCH 3m17s

This basically conforms with things I’ve found previously, but I was a little surprised that PCH is not a bigger win than it is, especially considering that I intentionally wrote gcjx with one big header file that includes most things, precisely to make better use of this feature. (I’ve heard from other folks that in some situations PCH is a net lose and they disable it. Any experiences out there?)

Anyway, I consider this promising data for a compile server approach, since what I’m thinking about essentially models the “” approach in the compiler.

GCC 4.2

GCC 4.2 was released a few days ago. Here’s the list of changes. Congratulations to everybody who worked on this, and especially to Mark Mitchell for once again doing the release engineering work.

Different parts of GCC evolve at different rates, and due to some quirks of timing, it turns out that the gcj parts of 4.2 are already obsolete. For Fedora we back-ported the 4.3 gcj bits to our base GCC release; I think the other distros are doing the same. Basically what happened is that all our Java 1.5 work came in after 4.2 had closed for major changes.

Post Java One

I’m back from Java One — what a crazy week!

I’m a bit wary of thanking people; there are many people deserving appreciation and I would hate to leave someone out. I suppose I must try, and bear the consequences. So, special thanks to Tom Marble, Onno Kluyt, Rich Sands, Mark Reinhold, Simon Phipps, and Bruno Souza — each of them made a special effort to include us free software hackers in the cool behind-the-scenes goings-on.

I was also happy to meet and talk to many people while there: Per Bothner, Chris Oliver, Casey Marshall (finally! But I’m sad to say there are still a few gcj developers I have not met), Glynn Foster (nice guy — I meant to meet him for a beer at this one party but failed), Jeff Bailey, David Daney, Ean Schussler (always fun!), Erinn Clark, Jacob Applebaum, Ian Taylor, Tom Baxter (long time no see!), Roland McGrath, David Herron, Peter Ahé, Andre Burgoyne, and Johanna Neaderhouser. Whew. Actually I was introduced to many more people (Eben Moglen, James Gosling, John Cage, Neal Gafter, … to drop some names) but the former are the folks I actually had conversations with. And, yes, it was as overwhelming as you might imagine, especially if you are essentially an introvert, as I am.

Java One

Java One is huge, much huger than I’d imagined. The opening keynote had a steady stream of corporate luminaries onstage to talk about their Java-related plans. Many thanks to Bruno for saving us some great seats — and also to Tom Marble for making the effort to include me in the various goings on.

The big news is that OpenJDK sources are available, and that Dalibor is on the initial OpenJDK governance board. Next step: replace the remaining binary blobs with free software.

Also today they announced a big new initiative around F3, which has been re-branded “Java FX Script”. Sun continues to surprise — this is a cool project but I did not expect such a big push for it. I met Chris Oliver today (interesting guy) and also saw Per Bothner; it turns out that Per works on F3 now, writing a compiler to turn F3 scripts into JVM bytecodes.

Tons more has happened, too much to write about really. I did want to mention that Sun has also impressed me with their environmental committments. I’ve heard several times how Sun servers are friendlier (my understanding is that this applies to the manufacturing process) then competing servers, and also there was some talk (though I lost a bit of context) about having the conference be carbon neutral.

Sleep is Optional

Saturday night Onno or Tom (Marble) or Rich told me that, at JavaOne, sleep is optional. Then we promptly set about trying to live the dream, staying up until far too late talking and wandering San Francisco — a great time being had by all, or at least me. I finally got to meet Casey Marshall in person. Also Tom invited Erinn Clark, who is super cool. She in turn brought her friend Jacob (didn’t catch his last name) who took us on a fascinating and occasionally uncomfortable tour of his workplace.

My schedule for this week is completely packed — not just with JavaOne sessions (counting the BOFs, activities run until 11pm every night) but also visits with friends and colleagues in the Bay Area. One of the downsides of working remotely is that, when you do get together with people, you not only end up wanting to talk extensively to everyone, but also you’re typically out of practice in doing so…

Java GUI Stuff

There seems to be some action in the Java GUI world right now. I was quite surprised by how many Swing talks there are at JavaOne.

AB5K is desktop widgets in Java, using JNLP — one of my favorite under-used technologies. The web site looks nice but they don’t seem to have many widgets yet. And widgets are so last year, har, har.

Chris Oliver’s F3 looks interesting. I’m considering seeing his talk at JavaOne next week… perhaps AB5K ought to be using this. He’s also posting JNLP links for his demos.

I tried both of these with netx and gcj, but netx is too old, and we don’t have Pack200, and … OpenJDK take me away.

Hot Fuzz

This documentary is a shocking expose of what is hidden behind the carefully crafted facade of English country villages.

While a bit gory at times it was hilarious — better than Shawn of the Dead. Of course, I loved Super Troopers, so calibrate your expectations accordingly.