Archive for the ‘software’ Category

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.

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.

Emacs 22

This weekend I upgraded to Emacs 22 from rawhide. This was painless — and thank goodness, since the new gnus updated my setup, so there is no going back. So far it looks awesome.

Gnus is noticeably faster. That alone was worth the upgrade.

Now that emacsclient supports --eval I went ahead and configured Mozilla to use Emacs for mailto: URLs — no more avoiding those. There’s a HOWTO here.

There’s a new image-viewing dired-like mode. That’s kind of silly but I imagine I will end up using it.

diary-from-outlook-gnus looks like a cute addition. There’s also some icalendar code in there. I don’t calendar much, and I doubt that anybody sends me outlook-formatted appointments. Too bad, really; machine-readable things like this are, one supposes, part of the basic promise of computers.

These are just a few random things I noticed… the NEWS file is 200k, and this is a major release. I haven’t really had an opportunity to use it in anger.

Emacs Update

I know you couldn’t possibly get bored by another Emacs post.

Emacs is really the one thing I come back to when I want to hack joyfully. Other things are interesting or relevant, but I find Emacs fun.

How could I have missed goto-address for so long? This command will buttonize URLs in a buffer; I enable it by default in change-log-mode, but I’m considering just enabling it globally. It isn’t perfect — it doesn’t recognize URLs as you type. But this is probably fairly easy to fix, and in the meantime it is still handy.

Second, my calendar (really appointment) code to use the notification area worked for the first time today. This is still a bit fragile, I don’t quite know what is going on. But, it does mean I am very close to not ever using Evolution. (Speaking of which I finally set things up so I can easily send email from my various personal accounts via Gnus. This was an incredible pain, involving writing elisp functions, etc. No wonder this stuff is so unpopular.)

I wrote a little hack over the weekend to emulate the Gnome sticky notes applet. This was pretty simple, a couple hundred lines of lisp. But, I didn’t like the result very much. Instead I think I am going to finally upgrade to Emacs 22 (which is something of a pain since I’m using some RPMs that aren’t updated) and use linkd, which looks pretty cool.

Work proceeds on package.el, but it isn’t quite ready for the next release.

I’ve been working steadily on project.el, a way to encapsulate project-specific settings in a simple data structure. The idea is, a project like GCC can publish a set of settings, and when you hack on that project, Emacs will automatically set the correct C style, correct new-file copyright template, correct tabs setting, etc. I’ve seen various projects do this already — they publish little .el files, usually bad ones, for their users. I really don’t understand why this functionality isn’t already in Emacs… right now everyone has to roll their own.

ELPA Update

I rewrote the ELPA web page the other day. Now it should be clearer about how to get your Emacs Lisp packages into the archive. I’ve also added a news section and uploaded a few more useful major modes.

Emacs Lisp package authors, please send me your code. I will upload it right away (I have an Emacs macro to upload a single .el file to ELPA directly from Gnus :-).

This code has already made my life nicer… I installed modes for javascript and CSS (for my js game) on both my machines in a few seconds.

Cool GCC Patch

This is the most intruiging GCC patch I’ve seen for a while. It adds a customizable static checker to GCC, based on the mygcc work. I haven’t read the patch yet, or tried it out, and it went by on the list with little fanfare… much less than it deserves. Static analysis in the compiler has great potential.

Cool Emacs Trick

I looked around for valgrind integration into Emacs recently but I didn’t see anything out there. I had a great idea! — compilation-mode should integrate with shell-mode so I can run valgrind and then next-error will walk through the problems.

Well, it turns out this idea is so great that it has been implemented already. Yay Emacs! Unfortunately the feature is rather obscure; I had to dig around in the source to find it, and it wasn’t obvious that it handled valgrind — it does, but the valgrind error regexp is the same as one for the JVM, so it is misleadingly named “java”.

To enable this, enable compilation-shell-minor-mode in your shell-mode buffer. It will automatically start highlighting the appropriate messages, and mouse-2 will go to the source file.

I’m pretty happy about this idea of using shell mode in this way. It has that nice, integrated, “plastic” feeling I’ve come to associate with the joy of Emacs. I’ve always liked the idea of a “notebook-like” shell, where commands and structured, or even graphical, output are intermixed; this feels a little like that

What’s left? Two things I think… first, Emacs should automatically enable this minor mode when you type “make”, “valgrind”, “ant”, etc, in a shell mode buffer; meanwhile I’m just going to enable this from the mode hook.

Second, I think it would be awesome if running gdb in shell mode somehow auto-started Emacs’ gdb mode. I generally find it a pain to start (but not use) gdb in Emacs, since typically I have a complicated setup on the command line — a particular directory, command line, sometimes an environment; Emacs could simplify this. I wrote a minor mode last night that will recognize when you type “gdb” in the shell and will automatically run it in Emacs instead… I’ll post it soon, or send email if you want it.

Web App Musings

Recently I’ve been tinkering with my little Javascript game (not quite ready for public release, sorry), and other web apps.

While aspects of Javascript suck, and the platform variance definitely sucks, it is a reasonable language overall. Given current implementations I think it still would not be my language of choice for writing a big application — even my customized Google home page makes the web browser crawl — but I suppose with the commoditization of JIT technology this can be fixed.

Offline access seems like a new frontier for these apps, and I was pleased to read about the Dojo Offline Toolkit via Dan Moore’s blog.

I’m also interested, somewhat independently, in this idea of running applications on local web proxies. I suppose the cool kids all do this kind of thing with greasemonkey instead, though.

Unfortunately web apps seem like a step backward for free software. As far as I know most of the existing ones aren’t really open source — and since in large part they are running on my computer, they really ought to be.

BarCampBoulder Saturday

Saturday I spent at BarCampBoulder.

Going to this event “isn’t really like me”… I generally don’t do that well with groups of people where I don’t know anybody. I did recognize a face or two from the local LUG, but no one I’d actually talked to before. I always feel a bit pulled out of myself in these situations and then, later, spend a lot of time picking apart various discussions and interactions and generally thinking that I’ve been an ass. Bleah.

But, nevertheless, I had fun at BarCamp and I learned a lot as well. It was in an awesome location on West Pearl, sponsored by endoze.com. Excellent coffee was provided by Veloce Coffee.

Most of the folks in attendance did web development, with a fairly large subset running their own companies. I think there was one Java programmer, the rest working mostly in Ruby, it seemed, plus Javascript for the client side. There were also some Python folks and various people who knew PHP, though nobody who claimed to like it.

A long time ago I wrote here about wanting to calendar-ify various places in Boulder, like the public library, KGNU, etc. One of the attendees, Neal McBurnett, is a volunteer at KGNU and so I pestered him about this. Also Dan Moore was interested enough in this, at one point, to have registered a web site for it; so maybe together we can solve this problem. (The KGNU bit looks easy since they seem to use a Python CGI script to register events, and there is a Python library for the Google Calendar API out there.)

I also met Ashish Jain from PingIdentity. He gave a nice rundown on OpenID and CardSpace, and the strengths and weaknesses of both. He also said that Novell recently announced an open source CardSpace client. This talk got me thinking, that it would be nice to have an identity registrar for the open source world, so that I could, for example, make a single account and not have to log in to any bugzilla anywhere. This, I think, could be done with today’s technology. Ashish was extremely knowledgeable. He also pointed us to The Laws of Identity.

There was a session on CMS which was pretty interesting. Folks in attendance have tried most existing major CMS systems. Current favorites are WordPress (for simple sites), Typo3, TextPattern, and Radiant. I also found out about CMS Matrix, another site for letting you compare CMS systems.

Also I found out about Colour Lovers, for all you palette freaks out there. I had some fun browsing here.

We also played a fun game of “half baked”, and I met tons of other people… overall it was great, and I’ll definitely be going to the next one. And, after that, hopefully not feeling like an ass for a change.