FC 6

Last night I upgraded my main machine to Fedora Core 6. This time I upgraded using yum. It went very smoothly; the only oddities were due to weird things I had done to my machine.

I’ve been running FC6 on my laptop for a while now, so I pretty much knew what to expect.

Fedora -vs- BBDB

Last night I packaged BBDB for Fedora. I submitted it to Extras. I’ve also got most of a package for ERC ready. Let me know if you want either one, I will make them available somewhere.

BitlBee

I’m having a retro moment and I’m moving most of my desktop to Emacs. I suppose I do these odd experiments from time to time, trying out new things; new to me anyhow.

I finally have ERC set up to my liking on my secondary machine. I’ll move my main ircing over to that pretty soon.

I also installed BitlBee tonight. This is an irc server that talks to jabber (which is how I chat with Elyn), so I can just use ERC for all my chatting needs. I heard about BitlBee while digging through the Emacs Wiki. To my surprise it is already in Fedora Extras.

The Emacs Wiki is pretty fun. There’s all kinds of crazy Emacs stuff nowadays, e.g., EMMS, the Emacs answer for playing music.

After irc and jabber I think I’ll tackle my modest calendar needs. I never really got the hang of Emacs’ calendar mode, but I’m going to make another stab at it. With my zenity code I am unstoppable.

What’s left? Browsing is really out of the question — w3 mode exists but I never really liked it. I suppose I could try the emacs shell, but I don’t think I’m that hard core. Perhaps I’ll move my to-do list into Planner. Or I’ll try the BBDB/ERC interconnect, or blog writing from Emacs.

Another random idea is to make Fedora packages for all the Emacs stuff I’m using. I don’t know if I have the stamina for it though. It seems odd that at least BBDB doesn’t seem to be packaged.

More Emacs Notification

I’ve uploaded a new status.el. This update rationalizes the API a little bit. I’ve also uploaded erc-status.el, which enables notification area functionality for ERC. With this enabled, if someone says your name in a channel, the notification area icon will blink. And, if your connection is disrupted, you will get a notice.

status.el

Mark suggested I upload my Emacs hack, so here is status.el.

You will need to build your own zenity with my patch applied. And, you will need to hack a couple of path names in status.el in order for it to work on your machine.

The doc strings in the code explain how to use it. There aren’t any interactive functions, just things that are usable from elisp.

I’d forgotten how fun it is to hack on Emacs.

Emacs versus notification area

I’ve occasionally wanted Emacs to be able to put an icon into the status area, so that I can set it up to notify me when interesting things happen; say, when a compilation finishes. I’ve also been thinking of moving my calendar into Emacs, and I didn’t want to lose out on Evolution’s nice appointment notification feature.

So, tonight I hacked up zenity to add a little more functionality to its notification mode. In particular I changed it so that left click will print some (user-specified) text, and so that a right-click menu can be set up as well.

After that it was pretty simple to write some Emacs code to wrap up zenity in a nicer API.

screenshot
Now all that remains is to hook this up to things inside Emacs. I’ve got my compilation mode hook set already; next I suppose I’ll investigate the calendar, or perhaps erc. Send me email if you want the lisp (my zenity patch is in Gnome bugzilla).

Smoke-n-Aces

In this long-awaited final episode in the Smoke trilogy, Harvey Keitel reprises his role as Auggie Wren, and Roberto Benigni joins the cast as the failed carnival clown Oliver Banjo. Together with a miniature — and perhaps imaginary — elephant, the two enter an epic but doomed quest to win the world series of poker.

Hotspot

I took my first glance through Hotspot recently. I’m vaguely curious to see what it would take to port it to PowerPC, not because I have a particular love for that architecture, but because it is important for switching Fedora and RHEL from GCJ to OpenJDK. Also, I’m spending a bit of time researching what I want to work on next, and I think OpenJDK is one of the available options.

Hotspot seems like pretty nice C++ code, overall. The structure is easy to navigate. There are comments pretty much where I expect them.

So far I’ve only looked at simple bits. In particular I tried to read the code that corresponds to code in libgcj with which I am very familiar — the interpreter and the verifier.

The Hotspot verifier is a bit more “C++-y” than mine. Stuff is spread out a bit more and a little more abstract, so I find it somewhat harder to read. But, that’s to be expected. I didn’t try to delve into the deeper things (how do they really handle jsr), since I was only looking at this while waiting for a build today. Some other time.

There seem to be two bytecode interpreters in Hotspot. First, a simple C-ish one, roughly like the libgcj interpreter before I added direct threading. This one is not the default, I suppose it is probably only used when bootstrapping on a new platform or something like that.

The other interpreter is trickier and implements something which is sort of like early Kaffe JITs. The idea is that most bytecodes have an associated function that generates bits of machine code. Before executing a method, a very simple form of JITting is applied where these functions are called to compile code, naively, into a buffer which is then executed.

Well, I hope that is what happens… I’m not trusting myself much this week and the code is fairly convoluted.

I haven’t made much progress on my goal of seeing how hard a port is. The existing ports look pretty small… from 28 KLOC (amd64) to 36 KLOC (sparc).

Properties

Roman writes disparagingly of proposals to add properties to Java.

Properties seemed cool when I first heard about them. They seem like a nice tool for maintaining source compatibility — for allowing local refactorings between fields and methods, without requiring massive changes to the rest of the code. In gcjx, I used something a bit like properties (I think you can emulate them in C++, with some work, but I picked something a bit simpler) for just this reason.

But upon further reflection I don’t really see the point of adding them to Java. Java is more concerned with binary compatibility. And, for properties to be binary compatible, they have to be implemented as functions from the beginning (or as a new VM feature — but that seems like overkill). And if you are doing that, you might as well consider that your IDE can generate the methods for you already.

Regardless of what happens here, I think it is interesting that the Java language debates have moved to the blogs. There are several influential Java people blogging about these topics on a regular basis. We’re also starting to see language experimentation being done in the OpenJDK javac.