... indistinguishable from magic
effing the ineffable since 1977


When a lot of things are happening that would be good to blog about, there's never enough time to blog about them. And when nothing particular's happening and there's time to catch up on the stuff you didn't blog about earlier, it all seems like old news, so why bother?

I've been in my new apartment now for a few weeks and am settling in nicely. It's strange to have nobody to answer to but myself - I'm still getting used to that. It's even stranger to have entire days when the only criterion determining what I do is what I decide needs to be done. This entire weekend, in fact, has been like that: there were things that needed to be done, but not because anyone else said so.

On September 30th I went to see a midnight showing of Serenity. I'd hoped to win a Jayne hat in the trivia, but unfortunately (a) the Jayne hat turned out to be the prize for best costume, and I wasn't in costume, and (b) the only trivia question I got my hand up in time to answer, I answered completely wrong. My hand was working faster than my brain, clearly. I knew the right answer, just not quickly enough. I did have the foresight to ask whether it was okay to take a plastic dinosaur - but not the foresight to take two so that I could actually enact the scene... guess I need to buy a second one for myself. Still it was a lot of fun, as expected. And hopefully contributing to making Serenity profitable so that a sequel, or better yet a new series, gets made... please?

In the meantime I'm working my way through Buffy, which appealed to me in absolutely no way whatsoever until I discovered Firefly by the same guy (Joss Whedon, for anyone living under a rock - who also wrote the script for Toy Story). After falling head over heels in love with Firefly I had to forget about my preconceptions and give Buffy a chance, and of course it turns out to be as good as you'd expect from a Joss show. Season 1 is good, but things are really picking up in Season 2, and I'm told it only gets better from there.

I wonder if my posts describing Japi progress on a regular basis were actually helping the numbers to go down as fast as they did. Work on Classpath is proceeding as enthusiastically as ever, but since around the same time I stopped giving regular Japi updates, it seems more focused on bug-fixing and polish and other "make things work right" aspects than on pure API completeness. Japiwise, progress is being made, but not as fast as it was.

The status right now is that Classpath is API-complete for 1.1 again (it was, then the ability to mark methods as not-implemented came along; they're all now implemented). For 1.2 and 1.3 the status is almost identical: one class (javax.swing.text.html.HTMLWriter - work in progress, I believe) and 62/63 methods missing. (The discrepancy, for what it's worth, is the eloquently named javax.swing.text.html.HTMLEditorKit.InsertHTMLTextAction.insertAtBoundary method - just be glad I didn't include all the parameters too). The missing methods are mainly concentrated in java.awt.font, java.beans.beancontext and javax.swing.text.html. There are also a few in java.awt.datatransfer, java.awt.dnd and java.text which might be low-hanging fruit. 1.4 completeness isn't that much further away - only another 25 or so methods scattered across various packages. Amazingly, while nobody was looking the generics branch has snuck past 95% completeness against 1.5. Not so long ago it was below 90% - that's incredible progress!

With the divorce and the moving and my own general lack of organization I've been a very lax maintainer of Japitools - and my other open source projects - lately. When I was on vacation in England back in June (!) I received two very useful contributions. Firstly, from Jaroslav Tuloch of Sun I received an Ant task for Japize, some JUnit tests, and a patch for allowing Japize to process packages non-recursively - that is, include a package but not its subpackages. This last one could be enhanced to provide something I've wanted for ages - the ability to extract lists of packages from Javadoc documentation, so that my nightly scripts would no longer need to hardcode the list of packages for each JDK version, but could pull them from Sun's docs. I finally got around tonight to actually taking this code, compiling it, checking it into cvs and doing minimal testing on it. Currently one of the ant task tests fails, but I'm not sure why. In an ideal world I'd test it more, but holding out for perfection will just lead to another 4 month delay. So it's in now, and if I broke anything, we'll see the results in the nightly runs.

The other contribution was from Andrew John Hughes - a script to go to Sun's website and identify the filename of the latest JDK1.6 beta release, and download it. I'm just looking at that for the first time tonight too, and I have a dilemma. Sun helpfully provide the JDK only in self-extracting ".bin" format. I'm sorry, but I have no intention of downloading and executing arbitrary code unsupervised from a nightly script. Especially since it's not an https server, so there's no protection against DNS spoofing. Does anyone know of a tool which can extract this "bin" format without running it? They do provide the JRE in a jar file, but the JRE generally doesn't include any indication which methods are deprecated, so the Japi results would give erroneous errors about deprecation.

Anyway I'm hoping that by shaming myself publically by admitting how terribly slow I was to respond to these great contributions, I'll be more motivated to not do that in future. Maybe.