Frysk

I got easily addicted to Phil’s frysk blog. Now when he doesn’t post I get angry. Irate. Enraged, really… lucky thing he doesn’t live nearby.

Write faster Phil!

While in Toronto I wanted to get a demo of the new ftrace utility, but that never happened. I think Cagney thought it was weird that I would ask, since really the output just looks like strace and it isn’t like there’s a nice wobbling window or dizzying 3D effect to be had. In any case the point of ftrace isn’t that a replacement for strace is super-cool, but that it is very, very simple to write using the frysk libraries. (I’m going to install rawhide on this laptop so that I can try it for myself… I have a couple other frysk-related things I want to play with as well.)

A Scanner Darkly

I went through a Philip K. Dick phase shortly after college. I still have all his books sitting on a shelf here at home. I’ve been generally disappointed by the films made from PKD’s books, with the exception of Blade Runner — though that really doesn’t resemble the book much and should be considered as a completely separate work of art. (Oh, ok, “Barjo” is also a reasonable adaptation, but it is not one of PKD’s better-known — or even science fiction — stories.)

A Scanner Darkly is an excellent adaptation. It is very close to what I recall of the original book. The choice of turning the film into a kind of animation works very well for this story. The story deals with addicts whose view of reality slowly skews, and the animation sometimes lets us feel this, as objects occasionally float oddly against their backgrounds.

Robert Downey is great in this movie. But as I’ve said before I love the crazed raconteur style. He excels at it here; some scenes (like the bicycle scene) had me laughing and rocking back and forth in my chair. (It was mildly awkward since I was sitting between a coworker and a coworker’s friend, and I didn’t know them very well…) Maybe this stuff is only funny if you knew a bunch of stoners back in the day.
Overall though I didn’t connect to the movie as well as I did with the book. (Lesson to filmmakers: it is probably better not to stick to closely to the book. These comparisons rarely go in the film’s favor.) While the comedy scenes were great, the more serious parts of the film seemed a bit flat. Also it was a bit hard to get inside the characters’ heads, so even though I knew what was going on, it still didn’t quite add up.

Nevertheless I’d recommend it.

Back

I’m back home now. I already miss Toronto — I had an excellent time there. Andrew Overholt, Ben Konrath, and Tom Fitzsimmons showed me around town, thanks guys.

If you’re ever in Toronto, be sure to try Fressen, a great vegetarian restaurant. As far as I know there’s nothing like this in the Denver metro area. We also went to another great vegetarian place near U of T, but I forgot its name.

Ben and a couple of his friends took me out to Toronto’s island park on Saturday. Anthony had told me about the island a long time ago, but I had never been. Most of it is a big park but there is a funky residential area on one end… looks like a great place to live for a summer. Maybe someday.

I spent most of my time there talking. I’m surprised I didn’t lose my voice; I talked more last week than I do most months.

Toronto

I’m in Toronto this week, visiting the office and talking with co-workers. It is as great here as always; I love the occasional visit to a big city, riding the subway, etc — doing the kinds of things you can’t do in Boulder. Seeing folks face-to-face occasionally is also very helpful for my morale; brainstorming and discussing what we’re doing is energizing.
Someone posted a link to the bumptop video on Mugshot today. I’m always entranced by these gee-whiz desktop ideas. This one is no different, I loved watching the video and then I made Andrew Overholt watch it too. Unfortunately he pointed out that if you watch it you may notice what you don’t see: any actual use of an application. And, it is pretty hard to see how this would improve my productivity at all. For one thing I barely even use Nautilus, so improvements to abstract document manipulation are not likely to do much for me.

I also read The Six Dumbest Ideas in Computer Security recently. This is interesting and easy to read. I often think that the most important frontier in programming is reliability, which is similar to his points about designing in security. Unfortunately this area isn’t sexy enough, so language and platform designers tend to focus on productivity and ease of hacking, rather than ease of getting things right. Java, IMO, started off with a nice reliability boost over C, but these days it is also headed down a bad road, what with AOP (which I really dislike) and the forthcoming XML-in-the-language thing.

kernel config

I ran across the Eclipse kernel configuration plugin today. I haven’t tried it — and I assume, forgive me, that it isn’t actually useful yet — but nevertheless I think this is a cool idea. First of all, any connection to the kernel is like magic dirt to rub on programs (in this case Eclipse) to make them more interesting. Second, the whole point of an IDE is to integrate the various development tools with an eye toward lessening the pointless drudgery that seems to typify programming. This seems like a natural fit.

Naming

I went to the local print shop today.  It turns out that they are switching to Linux.  I asked why and they said “because we hate Microsoft”.

“Great,” I thought.  So I told them I worked at Red Hat… blank stares.  Elyn asked what distro they’re installing (way to go Elyn!) and they said Kubuntu — which, I learned, is cool because it has a Japanese name.

I made a comment about Shuttleworth being an astronaut.  More blank stares… this kind of thing is funnier at OSCON.

Mac versus CUPS

Today I finally set up my printer so that Elyn can print from her laptop. This turned into a long struggle and now I remember why I quit being a sysadmin.

First I made a little hole in the firewall so her Mac could access the appropriate ports. This actually is fairly easy — just a config option in a GUI somewhere.

This wasn’t enough, though. It turns out that the default CUPS setup here (I’m using FC4 on this box) needed to have ServerName 192.xx.xx.xx added to it. Without this the Mac seemed to think that the CUPS server was on 127.0.0.1.

During all of this I messed with the Mac config a bit too. At one point I got the cryptic message: get_printer_attrs: resource name '/' no good. Most of the google hits for this seem to be people asking about it but not finding an answer. My fix was simple: delete the printer I had added by hand and have the Mac re-scan for printers. The bug here seems to be that a printer added by hand has a path of ‘/’, where actually it should be something like ‘/printers/Pravda’.

Web Pages

I’ve been looking at moving my blog to something less lame —
right now I can’t blog while I’m traveling, which is why I still
haven’t written about my trip to the Red Hat Summit. I’ve also been
looking at other software for creating web sites.

While exploring I ran across the Open Source CMS site.
This site lets you play with many different CMS, blog, photo gallery,
etc, installations, so you can try them out before committing to one.

So far my experiences with these programs haven’t been very
positive. I’ll write more about that later.

A Couple libgcj Updates

I’ve been working steadily on replacing gcj’s front end with the
Java compiler from Eclipse. This is largely working now. I have a
new main program for the Eclipse compiler, and I have gcc set up to
invoke this (via the magic of gcc specs — an evil little ad hoc
scripting language that you should hope you never have to learn).

The new driver is a little funny. When ecj compiles a file, it
writes the classes to a jar which gcj compiles. This way we don’t
have to have an arbitrary number of temporary files for communication,
e.g. for all the inner classes. This takes advantage of java’s
built-in ability to make jars, and gcj’s existing ability to compile a
jar file all at one. I thought this was amusing, anyway… maybe I’ve
been working too much.

I thought this would be very simple, but I should have realized
that this would reveal every bizarre class file compilation bug in
gcj, some of which can only be seen if you are compiling the core
class library this way. For example, the bytecode verifier needed a
special case to handle the constructor in Object.

In any case, I can now build all of libgcj this way. I’m
debugging a few runtime failures now.

LLVM-based JIT

Aside from the whole exception handling mess — which experts more
expert than I are, hopefully, busily hacking on — the JIT seems to be
working reasonably well. I’m just about ready to clean up the API and
check it in (as an experimental preview), I don’t think any more
changes in that area will be needed in the near future.

There are still a few lurking code generation bugs. Nothing too
hard, just mishandling jsr a little.

I recently added the first bits of recompilation to the JIT. Now
it will realize when it resolves a constant pool entry, and mark the
method as ready for re-jitting. The idea here is that before linking,
a constant pool reference requires a method call to incrementally link
the class, whereas after linking, a constant pool reference is simply
a constant. Another similar optimization is that when we initialize a
class, we mark the method as ready for re-jitting — the code to lower
from bytecode to LLVM will check a class’ state and avoid emitting
initialization calls as needed.

This still hasn’t seen much testing. And, to really do a good job
here we have to add profiling code of some kind. I really need to
read the literature here. If only there were time.