Archive for the ‘software’ Category

FOSDEM 2007

I was at FOSDEM again this year, and as usual I took notes, which I’ll write up here. I’ll probably spread them out over a few posts, but maybe I’ll get excited and post them all at once.

FOSDEM is a peculiarly intense conference. It has three main tracks, but also developer rooms and thousands of people. It lasts just two days, so much activity also happens at restaurants and bars after the official activity. I usually tell people new to FOSDEM that they ought to train for it, say by drinking 5 beers a night and not sleeping for a few days. Many people, including me, commented this weekend that there’s nothing comparable to FOSDEM in the US. Hmm, I’ve always wanted to go to a conference or meeting here in Boulder 🙂

This year FOSDEM started even earlier for me — I met Andrew Haley in London and then, on the chunnel train on Friday, it turned out we were sitting across the aisle from Michael Meeks. We spent most of the ride discussing OO.o, his -Bdirect patch (read the link to see the huge OO.o startup performance boost this gets), gcj, and other free software and hacking topics.

Once we got to Brussels, though, he took a different cab and then somehow I didn’t see him again. That was too bad, since he’s very interesting and personable; and also I felt somewhat bad since I was very tired when I saw him and, though I can’t remember exactly what, I’m sure I said several stupid things during the conversation. Luckily Andrew was there to carry the flag :-). Hopefully I’ll meet him again sometime.

He did say I should consider OO.o as my next project (I asked basically everybody I ran into about my future plans). My impression is that he considers it a potential mozilla-like success story: get people on Windows using it, and they are one step closer to Linux. This does seem compelling, though I don’t think interesting for me personally to be hacking on…

Later that night the Classpath and OpenJDK folks all met up at a restaurant, and then later went to the BXL bar (our traditional spot — the official beer event was way too crowded). I finally got to meet various Sun folks, but more on that later. I went to bed early, citing jet lag, and apparently missed various people who only arrived at the bar after midnight.

SELinux Relabel

This morning I started up my main machine only to find that I couldn’t log in. After some experimentation I found that I needed an SELinux relabel. It is running now. I don’t reboot often (I’ve probably rebooted more this morning than in the last six months combined) so I don’t know whether this is a leftover from my FC5 to FC6 upgrade, or whether it is a bug in some update I applied.

The Other Idea

I’m still considering what to work on next. As I mentioned earlier, OpenJDK seems to be one viable option. The only other idea I have at the moment is a massive change to the C and C++ front ends to GCC.

In particular I want to change the C/C++ front ends to be incremental compilers. The basic idea is to build a model of the user’s entire program, and then as changes occur, recompile only the minimum amount required.

This approach lends itself to a number of nice things: not just faster turnaround times, but also static analysis (e.g., as plugins to the compilation server — though this may be better if done in the middle end), refactoring, better IDE integration, etc. I expect we’d also see faster compilation the first time a program is compiled (i.e., not just in the recompilation case) since we would be able to reuse parsed header files in most situations.

I’ve spent quite a bit of time thinking about this and I have, I think, a reasonable plan for implementing it. There are a few implementation choices that require some experimentation, but I think that could safely be considered “phase 1” of the project.

My only misgivings center on whether I really want to become a C and C++ expert, and whether it is worth putting this much effort into improving these compilers; especially since I think that C is generally overused.

The real drive behind this is that I’m interested in programmer productivity. Over the years I’ve found that many of the things I’ve found it easy to motivate to work on have fallen into this category, perhaps driven by my own annoyance with productivity impediments.

I’lll probably write a lot more about what this change would look like, how it would work, details about the design, various oddities I’ve considered. But for now I’m mostly interested in feedback regarding its advisabiilty and/or desirability.

Even more Emacs tweaking

I’ve spent a bit more time tweaking Emacs this week. I finally got around to a few little projects I’ve put off literally for years — for instance, writing a little function that chooses the email delivery method based on my “From” address. For a while I had planned to do this in my MTA configuration, but I finally officially gave up on this.

I read a few old threads about threading in Emacs, hoping to find out what, if anything, is going on here. Answer: not much, though I did learn about the nice (setq gnus-asynchronous t), which prefetches articles. This is handy if you use gmane or something and have a reasonbly fast net connection.

I’ve been hoping for some Gnus tweak that would let gnus-group-get-new-news (aka “g”) run in the background, perhaps disabling interaction with the *Group* buffer (but nothing else) while working. No such luck… the most common response to this request is “run 2 copies of Emacs”. Bleah. Actually I did used to do this, back in the olden days. It sucks, since it eliminates one of the nicest features of Emacs, namely that if you live in it, all the data you normally use can be moved around with ease.

I’ve been using ERC “for real” for a few days now. It is ok but I’m still struggling a little. ERC could use an irc-specific buffer-menu-like mode. Maybe the ibuffer integration provides that, I still haven’t tried it. And don’t even try to use ERC without “page me” support — that’s how I’m doing it now and I regularly miss private messages from Elyn 🙁

I was hoping to replace sticky notes with some nice Emacs mode, but I haven’t found anything suitable yet (I haven’t tried super hard). One thing I like about sticky notes is that when I click the icon, it remembers my frame positions and color choices. That’s something I’d like this hypothetical mode to reproduce. Maybe some combination of a wiki-in-emacs mode and some standard frame-state-saving code can be made to work.

Finally, I had used mail-hist a number of years ago, but something changed and it stopped working. While digging around a bit I ran across it and re-enabled it.

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.

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).