Archive for the ‘software’ Category

Saturday Afternoon

I was a bit taken aback by Simon’s response to my previous post, I suppose since it never occurred to me that he’d actually be reading this. Anyway, to expand a bit more on the “positive focus” thing — in large part that is me writing advice to myself. Repetition helps me internalize important things like “ignore the trolls”.

Anyway, after the morning sessions we ate the usual lunch of extremely cheap sandwiches. I saw Rob Savoye there — Rob lives 30 miles or so from me, and we used to work together at Cygnus, but I only see him every couple of years or so, and always at a conference. He was a bit upset about something bad I wrote about Gnash (sorry!). Also he had somehow gotten his hands on OLPC demo hardware… nice. (BTW I heard that his blog about his Katrina relief work is really good, but I didn’t have a URL… if you have it, please post.)

Later we made our way through the crush to the Classspath developer room. I spend most FOSDEMs locked in here; Classpath is my project and aside from interest I also do it out of solidarity. As you can tell I’m a bit ambivalent about this on occasion; FOSDEM is a rich environment and there is no way to see more than a fraction of it — I always feel like I’m missing out. Also I usually miss the “donation return” meeting and I’m sure, just completely sure, that I should’ve won a nokia 770 this year 😉

It turned out that the Fedora booth was next door to the Classpath room. I was pleased to see Tom (spot) Callaway there. Tom is a great guy. Also there was Max Spevack, who I met for two seconds. The Fedora guys did a great job organizing, they had a great-looking booth with nice artwork.

Mark led with a bit of an intro, and then the various VMs each had a presentation on their current status. Andrew Haley talked about gcj status, Dalibor about Kaffe (their big accomplishment for 2006 being “zero releases :-), Twisti about Cacao updates (many new ports there, also they hooked the binutils disassembler into hotspot to see what kind of code it generates), Rob on JamVM, and Ian Rogers talked about JikesRVM.

I think this was the first time a JikesRVM person came to FOSDEM. Ian entertained us with stories from academia — the counter-world to the one I usually live in — and also pointed out a funny idea of stuffing fields into holes in existing objects (I once looked at sorting fields by size to reduce object size, but this turns out not to save much). Maybe I’ll implement his idea in libgcj. Anyway, JikesRVM is cool technology and Ian had a lot of interesting things to say about why writing a VM in Java is a good idea. My notes say he also mentioned “parakeet”, which is an implementation of the parrot virtual machine on JikesRVM.

After this Mark did a more general status talk about what has happened in Classpath this year. The sheer volume of code is somewhat frightening.

That night we went to a vegetarian restaurant. Usually at FOSDEM we just end up at BXL, drinking beer and, in my case, eating a salad. This year I complained a bit and Petri did some research and with some help set things up. I felt a little bit guilty — I think I was the only vegetarian in the whole group — but it was wonderful. So, thanks to everyone who made this possible.

Some of the most important stuff at FOSDEM takes places at these dinners, or later in the bars. It is how we get to know enough about each to later interpret the tone of the email we exchange over the coming year. This year, Sun sent a whole platoon of JDK engineers on a charm offensive to win us over, which I think worked very well. It worked on me anyhow.

More on the various Sun guys in the next installment; on Sunday (resisting the lame joke) they took over the room…

Saturday morning at FOSDEM

First thing on Saturday, Peter Hintjens gave a talk about the state of software patents in Europe. I think every FOSDEM I’ve been to has had such a talk; basically European free software hackers are waging a constant war against the various interests that would benefit from US-style patents. (If you’re interested in this or any of the other main talks, videos are available.)

Next up was Jim Gettys talking about OLPC. He had the biggest audience I’ve ever seen at FOSDEM. I didn’t take too many notes since this was very similar to Negroponte’s talk at the Red Hat Summit last year, they largely used the same slides.

Finally, for the main tracks, came Simon Phipps, who talked about Sun’s relationship to free software and also about OpenJDK. He gave a strong warning about software patents, including pointing out that free software community members who work for corporations are, most likely, patenting their efforts as they go along. Also he said that about 26% of Debian came from Sun — 3x more than IBM and 5x more than Red Hat. (I didn’t note the source of this, sorry.)

Simon announced that Sun had officially become a corporate patron of the FSF. And barring the somewhat medieval feel of those words, this seems like a good thing to me. He asked, “why do you still hate us?”, which got a big laugh, but I guess which in a way answers itself.

Seriously, I encounter a lot of dislike of Red Hat on the web, in email, and occasionally in person. But focusing on this, or even thinking about it too much, is not only depressing but also fundamentally erroneous. People, and apparently especially programmers, generally won’t tell you if you’re doing well. A vital skill is learning to tell when to ignore the random bloviators that populate the net…

Assuming you are still reading, Simon also showed clips of RMS, saying that the Java Trap was a thing of the past, and Eben Moglen, saying something equally nice. He also said that Sun was dumb not to have worked with the free software constituency. This won me over 🙂

Most folks at this conference could learn a lot from Simon’s speaking style. He’s very good at it.

He got a bit more into details about OpenJDK stuff. The rest will be coming in the “spring” (the only word any Sun person would use to describe their schedule :-). Due to encumbrances, a few bits will be missing initially: ICC color management (they are looking at little cmms or something like that), the font rasterizer (they are looking at freetype), and the graphics rasterizer (they are looking at the j2me one). They’re going to move from subversion to Mercurial for version control (more on this in Sunday’s notes).

Anyway, the OpenJDK stuff is all shaping up nicely, and essentially nothing I heard this weekend contradicts this in any way. There are, or will be, a few delays in a couple areas — the ones Simon mentioned, plus some testing things — but generally the Sun folks are aware of the various problems and issues (more than me anyway) and are working on them. Also several people gave out their email addresses (Simon gave out Tom Marble’s 🙂 and said that we should bug them if they mess up.

Simon had Mark Wielaard and Tom Marble come up on the stage and then he asked them questions about OpenJDK, Classpath, the distros, etc. I thought this was a nice bit of outreach.

Tom, for those not in the know, is the OpenJDK ambassador. He talked a bit about governance and, in a graceful move, plugged the Classpath developer room and our various sessions.

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.