... indistinguishable from magic
effing the ineffable since 1977


Recent Posts



I got two books and a couple of bookstore gift certificates for Christmas so I've read three books in the last three days. I enjoyed all three very much; however, I wouldn't be me if I couldn't find some nits to pick. So here are my comments on the three books I read, in order - both the good points and the bad.
  • The Full Cupboard of Life, by Alexander McCall Smith. The latest (and, I suspect, last: most of the loose ends now seem tied) book in the "No. 1 Ladies Detective Agency" series, this book was more of the same, in a good way. Mma Ramotswe and Mr J.L.B. Maketoni's lives in small-town Botswana continue with the same mixture of drama, laid-back introspective insight and understated humor ("In her mind, her shoes always addressed her as Boss, which was good. Shoes should know their place.") as the previous books. The only nit I have to pick with this book is that it is "more of the same" and was more of a comfortable revisiting of old friends than a riveting page-turner. Not that there's anything wrong with that.
  • The Sunday Philosophy Club, also by Alexander McCall Smith. The start of a new series, this one is set in Scotland and the protagonist is Isabel, the part-time editor of a philosophy journal who obsesses over crossword puzzles and theoretical questions of morality. I initially found Isabel rather pretentious, but as the book progressed I began to recognize aspects of my own personality in hers, especially her desire to reduce things to abstract general principles and her need to occasionally remind herself not to be condescending. The humor in this book is in the same vein as the Ladies Detective Agency series, but perhaps a little less subtle; I found this to be an improvement. The principal weakness in this book lay in the plot - some events were blatantly obvious well in advance (at one point it was almost painful to watch Isabel fail to realize the obvious for several pages) while others were unpleasantly jarring. I have no problem with unexpected plot twists in general, but usually I'd expect them to be surprising only in advance - in hindsight you wonder how you didn't see them coming. In this book I was more inclined to wonder how I could ever have been expected to. The greatest cardinal sin of the book, though, was the introduction of two crossword puzzles in the second chapter - "Excited by the score (7)" and "Vulnerable we opined desultorily (4, 4)" - to which the book did not reveal the solutions. Surely I'm not the only reader who is now going crazy trying to figure these out? (If you do, please let me know the answers in the comments of this post.) If nothing else, the author deserves to be hung over a pit of scorpions for that one, although if the answers turn out to be clues to the plot I would be prepared to consider that a mitigating circumstance. All in all, I have bridled enthusiasm (Click the link. Trust me. It's worth it.) for this book.
  • The Bad Beginning, the first in the Series of Unfortunate Events by Lemony Snicket. I had heard that these books were akin to Harry Potter, but I disagree. Unlike HP, this was unquestionably a children's book. The plot was transparent to any adult reader and the characters were mostly caricatures of stereotypes. This didn't stop it from being a very enjoyable read, though, and the humor of the writing style had me laughing aloud on several occasions. One thing I did find extremely annoying was the habit of explaining words to the reader, which came across as patronizing (a word which here means "treating the reader as if they did not have a basic knowledge of English that even a child ought to possess") and left me feeling rather persnickety ("persnickety" means "annoyed", while also being a clever pun on the author's name). See what I mean? I found these forgivable when the explanation was also a joke, but just irritating the rest of the time. Still undecided on whether to buy the rest of the books and/or see the movie.


A day for good news


So the release date for Harry Potter and the Half-Blood Prince is officially July 16th. People who know me will realize that I consider this a momentous event. I'm so addicted to these books it's not funny. I think that if I were a crack addict shaking from withdrawal, and there were two tables in front of me - a dose of the drug on the left-hand table, and Harry Potter and the Half-Blood Prince on the right - I'd dive to the right without hesitation, and thereafter be so engrossed in the book that I'd completely forget about the drug, not to mention food and drink and sleep (until I finished the book of course). Since my birthday is July 11th, I'm getting a nice birthday present this year. Now to plan my reading regimen for June and July to make sure the first five are maximally fresh in my mind for that date, and investigate the possibility of getting to a midnight opening somewhere...

Another excellent piece of news is that Poland has once again stood up for the democratic process in the European Union and refused to let software patent advocates push their version of legislation through under the radar. Take that, patent pushers - once again, You Forgot Poland! (Yes, I'm the 47,948,368th person to make that joke, but it's still funny)

Finally, a bit of technical good news of interest to probably very few people, but it's been announced that generics in Whidbey will be CLS-compliant. This should make life for IKVM a little more interesting... it becomes far more necessary to have some level of generics support, but perhaps the new CLS restrictions will make the implementation easier. No information yet (that I can find) on whether MS gave any consideration to interoperability with Java generics - I strongly suspect that they didn't. Jeroen may need to pull off another miracle to get the mapping right. I have no doubt he's up to the task.


IE users rejoice

I figured out how to make the transparent PNGs on this site display reasonably well for IE users without needing any complex hacks like IE7, which I was previously using but seemed to be able to crash the browser entirely in some cases, killed performance in all cases, and actually made the rendering of PNG backgrounds worse. I still think IE7 is a great idea, but it needs some of the kinks worked out before I dare inflict it on people.

In case you're interested, the workaround for transparent PNGs was to realize that I do actually know in all cases what color they will be displayed against, so if I save them from the GIMP with the background color set to that value, they'll display correctly.



Wow, I'm syndicated :) It's a strange feeling - knowing that someone might actually read this makes me rather self-conscious about what people might think of me from what I write, especially since some of my personal free-software heroes are on Planet Classpath. Especially when I post a pointless content-free introspective entry like this one ;)


To Do Lists and Free Java


When faced with a large problem to solve, the only way I am ever able to successfully tackle it is to break it down into a list of smaller tasks, and work my way through that list. When the list is really long, even that seems intractable, and I need to find ways to break it down further, by identifying a subset of the list to tackle first, get all of that done, and then work on the rest.

Even though I'm not actively working on the GNU Classpath project any more (I barely ever did, to be honest - I contributed a few classes but I think they all got replaced with brand new, better versions) I figured that it's possible that some of the people who are working on it might tackle problems the same way I do, and if I could automate the creation of the list of tasks, it might help them in the same way it helps me. That's the chain of thought that led to the creation of japitools.

I've watched and cheered from the sidelines as Classpath, Kaffe and company have come from nowhere to the astonishingly high japi scores they show today. It doesn't seem so long ago that even compatibility with Java 1.1 was miles away, and completing 1.2 barely conceivable. But now the Free libraries are consistently reaching 70% of 1.4 compatibility, which is unbelievable. They're so close that it's possible to list the "big holes" (against 1.4 at least) and still have fingers left over on one hand.

1. Swing (only swing.text and swing.plaf though)
2. CORBA (the org.omg packages)
3. Imageio (Mostly done, but missing a few bits)
4. Kerberos (one single package missing from

Literally every other package in 1.4 now has at least 80% API coverage in some form of Free implementation. The last two are small, and work on filling the remaining holes in Swing is proceeding at an unbelievable rate.

Japi results with JacORB included have been produced which at first led me to believe that good coverage of the CORBA packages was within easy reach too. After all, those results have a lot of green on them. But despite JacORB's claim to be under the LGPL, people kept mentioning license problems so I decided to investigate, and the results were somewhat depressing. A little perl script I wrote to identify the license of files in JacORB led to this result:

LGPL pkgacc: 76
LGPL public class: 603
LGPL public interface: 79
Unlicensed (org.jacorb) public class: 147
Unlicensed (org.jacorb) public interface: 6
OMG public class: 199
OMG public interface: 144
Unlicensed (OMG) pkgacc: 1
Unlicensed (OMG) public class: 90
Unlicensed (OMG) public interface: 8
Unlicensed (HTTPClient) pkgacc: 23
Unlicensed (HTTPClient) public class: 23
Unlicensed (HTTPClient) public interface: 7
Unlicensed (demo) pkgacc: 7
Unlicensed (demo) public class: 102
Unlicensed (demo) public interface: 1

The "Unlicensed" files are files that the script couldn't identify an explicit license in, but the ones marked "(OMG)" seem likely to be under the OMG license based on other files in the same directories. The OMG license grants unlimited use and distribution, but does not allow modification, which renders it non-free and unacceptable for Classpath and Kaffe. So at least 290 classes and 152 interfaces are under this unacceptable license, which is small compared to the thousand or so that are or appear to be under the LGPL, but still pretty large in absolute terms.

(As an aside, I can make a strong argument that the interfaces aren't actually a problem because it's legal to generate them from japi files, since japi files don't contain any copyrightable information. The same might be true of some of the classes if they were purely abstract, but I tested for this - the vast majority aren't abstract at all.)

Things got even worse when I correlated these results against a japi file of the JDK, to get an indication of how many of the problematic files were part of the public API:

InJapi OMG public class: 168
InJapi OMG public interface: 85
InJapi Unlicensed (OMG) public class: 77
InJapi Unlicensed (OMG) public interface: 5

In other words, every single class in the public API is under an unacceptable license. Every single bit of green in the CORBA packages in those oh-so-encouraging Japi results is worthless. JacORB may still be very useful to back up the CORBA packages with some actual implementation, but as far as API coverage is concerned, it seems we're on our own.

Next Page