Older blog entries for sab39 (starting at number 71)

Let us think the unthinkable

"Come," he said, sweeping through the door to where Miss Janice Pearce sat glaring at a pencil, "let us go. Let us leave this festering hellhole. Let us think the unthinkable, let us do the undoable. Let us prepare to grapple with the ineffable itself, and see if we may not in fact eff it after all."
-- "Dirk Gently", "Dirk Gently's Holistic Detective Agency", by Douglas Adams.

One of my favorite Adams quotes, and the reason for the new tagline on my homepage. According to Google I'm about the 14,101st person to use the phrase, but I don't think Mr. Adams will mind.

Syndicated 2007-08-07 00:44:53 from sab39 ... Blog

Curse you, thermodynamics! You win again!

It's well known that the laws of thermodynamics forbid the creation of a "perpetual motion" machine - that is, any device that can run forever without any external power source. Many attempts have been made to get around this, but they've all proven to have some fatal flaw.

Many creative thinkers believed that the problem had finally been solved for good with the design of the CBTD, or Cat Buttered Toast Device. I first heard of the CBTD at least fifteen years ago. This ingenious creation is based on two laws of nature even more inviolable than those of thermodynamics:

  • A piece of buttered toast, dropped on the floor, will always land buttered-side down.
  • A cat dropped on the floor will always land on its feet.

The CBTD consists, quite simply, of a piece of buttered toast strapped buttered-side up to the back of a cat and dropped on the floor. By the laws of the universe, it cannot land cat-side down because then the toast would be buttered-side up, but it can't land toast-side down because then the cat would not be on its feet. The CBTD must therefore hover above the floor, spinning endlessly trying to resolve the dilemma.

Many scientists have pondered the CBTD over the years and almost all have come to the conclusion that it is indeed flawless - the holy grail of a perpetual motion machine has finally been discovered. (Animal rights activists have, sadly, succeeded thus far in preventing any experimental verification).

In the past 24 hours, however, research into the matter by a new entrant in the field has led to an extraordinary breakthrough, proving indisputably once and for all that the CBTD is doomed to failure. Careful observation of many cats has led to confirmation of the radical notion that cats like the taste of butter. Therefore, when strapped to a piece of buttered toast, the cat (possessing as it does considerable flexibility and a keen sense of smell) would inevitably lick the butter off the toast. Thus, the CBTD can only spin a few dozen times in mid-air before the toast, deprived of butter, becomes free to land either way up.

Thermodynamics has foiled us again! But it will be defeated eventually. After all, it was widely believed that nothing could travel faster than light, until that was firmly disproved - to the disappointment of scientists and normal human beings alike - by the discovery of PHSVT (Paris Hilton Sex Video Theory).

Syndicated 2007-08-06 17:44:37 from sab39 ... Blog


My blog is now running on cmScribe 5.0. This will mean nothing to most people reading this, but it's a big deal to me, because in 5.0 I managed to achieve a whole lot of things that have been goals of mine for cmScribe since before it had a name, and before anyone else who still works at NetReach now was even employed there. Except for Will but he cheated by leaving and coming back.

The upgrade process is fairly seamless but under the hood everything's changed. As well as running on .NET 2.0 (we could run on 3.0, but since the two are identical, why bother?) we're taking full advantage of the new capabilities of the 2.0 version of the framework: every ArrayList and Hashtable in our code has been replaced by a List<> or a Dictionary<> and our custom-coded nullable type wrappers have been replaced by the framework's Nullable<>. Instead of a kludged-together build process, we integrate nicely into Visual Studio's build process using msbuild. We've moved from SourceSafe to Team Foundation internally. And taken advantage of the fact that msbuild and tf are true managed applications by replacing all our hacky vbscript, perl and bat scripts for branching, upgrading and pushing with a single C# application.

The change that's most interesting to me is that in 5.0 we've managed to make cmScribe truly modular. We had something like modules before, but everything got compiled in one go into the same assembly, so there was no way to enforce rules about what code depended on what (except for me going over to people's cubes and saying OMGWTFBBQ at them). We also had a nasty habit of adding customizations to individual customer installations of cmScribe by changing files that were part of cmScribe itself; this was expedient but always caused issues when it came time to upgrade to a newer version.

Today, each module is built separately; dependencies are declared explicitly (and circular dependencies are impossible). And we've added - and enforced the use of - mechanisms to customize the behavior of cmScribe panels by adding extensions to them, rather than changing the original. The extensions typically live in a separate module from the panel being extended, so the base cmScribe modules are used unchanged.

The end result being that cmScribe modules are strictly separated from each other, and customer customizations are strictly separated from core cmScribe code.

Next up: trying to convince the Powers that Be that building a community of developers around some of the cmScribe core modules is possible and valuable and that liberty is the best way to achieve that :)

Syndicated 2007-06-09 20:57:47 from sab39 ... Blog


I once got a tan in Reno, cos the sun was in the sky.
I once ottoman in Reno, so my legs were held up high.
I'm a Potter fan in Reno. WHY DID PADFOOT HAVE TO DIE?!?!


Syndicated 2007-04-17 01:28:10 from sab39 ... Blog

10 Downing Street responds - "software already unpatentable"

At least, that's how I read the Prime Minister's response. While there's a degree of weasel-wordage as would be expected from a politician, the gist definitely seems to be anti-software-patent. As opposed to parroting the industry party line of "patents are good for innovation"...

Syndicated 2007-02-27 02:50:33 from sab39 ... Blog

A rant about blind spots

This post by Miguel articulates very well something that I've been hoping for a long time that someone would say in the debate regarding ODF and Microsoft's OOXML format: that "ODF good, OOXML bad" is a GROSS oversimplification of the situation. Mainly because ever since it's release, ODF has been content to rest entirely on its laurels as the "Open" and "ISO Standard" office file format specification - completely ignoring the fact that on a technical level it just plain SUCKS.

Isn't the Open Source movement supposed to be all about making software that doesn't suck? Isn't Free Software supposed to be about the freedom to FIX problems? Aren't we supposed to be a meritocracy?

A spreadsheet format "standard" that doesn't define formulas? What the hell? How ANYONE with a straight face can claim that the problem of standardizing office file formats is "solved" by ODF and all we need to do is get people to use it, is beyond me. Maybe it's the best starting point - but where's the group working to fill in the glaring holes and get that standardized too? Free Software interprets sucky standards and glaring holes in standards as damage and routes around them... by forming other groups to specify the behavior, or by moving to other standards that don't suck. See WHATWG. See CORBA on the desktop. See XML Schema. Perhaps OOXML is that better standard, perhaps it isn't, but I don't see anyone on the ODF side even admitting there's a problem to be solved [UPDATE: Apparently there is such a group, called OpenFormula, working to fix that particular hole. That's great and I wish them every success, but it's mostly irrelevant to my main point. See the comments for more...] As long as that attitude persists, OOXML has a better chance of being that better standard than ODF does of evolving into it.

We take pride in the fact that our licenses will never discriminate against any person or organization or field of endeavor. Any licence that passes the DFSG or OSD is GUARANTEED to ensure that the software may be equally used by an evangelical Christian group or an abortion clinic or a gay rights group or a pornographer, by the United States government or by islamist extremists, by the EFF or by patent lawyers, by pacifists or by the military, by spammers or by antispam organizations... I could keep going, but you get the idea. But this isn't just a minor point, this is the CORNERSTONE of what Free Software is all about. Freedom means nondiscrimination. Including against people we as the developers of the software find distasteful.

So why is it that we make a point to treat pornographers, extremists, spammers, and even evangelicals ( ;) ) with fairness and equality, but the moment Microsoft is mentioned we forget all about that freedom and fairness and meritocracy, and immediately object vociferously and almost unanimously, EVEN when what they're doing is RIGHT?

Why is it that Groklaw, the site that earned a reputation for fairness and objectivity by making a point to give SCO's claims every possible benefit of the doubt and patiently examine every one of their claims including any time there was the ghost of a chance they might have some semblence of a real point - why is it that Groklaw had a fit when someone wanted to submit a Microsoft license to the OSI for evaluation, when by all accounts the license in question DOES pass the OSD and DFSG?

Why is it that Groklaw reported the MS-Novell deal with the headline NOVELL SELLS OUT - long before there was ANY chance for ANYONE to have examined the nature of the deal to know whether it was actually problematic or not? Why are otherwise reasonable people like Bruce Perens claiming that Novell is the next SCO, when it's completely obvious that Novell's lawyers simply made a mistake and are working with a perhaps intransigent group of MS lawyers to figure out a way to fix the problems? Even one of MS's lawyers has come out and said this outright.

So why are we vilifying Novell and treating them as outcasts, rather than recognizing that they, like IBM with patent lawsuits, like Sun until very recently with their Java licensing, like Canonical with binary drivers, and even I'm sure like Red Hat although I can't think of a blatant recent example - are a company that does a lot of good things but have made a bad decision?

And why are we treating Microsoft as the embodiment of pure evil rather than a company that does a lot of bad things but in the case of OOXML is actually doing the right thing - coming up with a file format that is by all accounts a vast IMPROVEMENT over ODF, is freely licensed including patents, independently implementable, doesn't have any HUGE GLARING HOLES in it, is actually documented and specified in detail, and being submitted to ISO for standardization.

Yes, there are problems with OOXML. It's stupid to standardize options for backward compatibility with old proprietary software when you've gone to all this trouble to invent an extensible format with all sorts of ways to embed extra proprietary information. Using that extensibility to support the legacy crap should be a no-brainer, and I hope this will be fixed in the ISO comments period. I'm sure there are other issues too. Maybe lots of them. But at least it's (almost) fully specified, open, and freely implementable - of which ODF manages only two out of three.

If you want a child to learn good behavior, it isn't enough to point out and punish the bad behaviors. You have to point out and reward the good ones too. It's well established that rewarding the good behaviors has a vastly greater effect, in fact. And punishing the GOOD behaviors is OBVIOUSLY counterproductive. Microsoft obviously isn't going away any time soon; to ignore them or think we can make them irrelevant is delusional. If we ever want them to be a good citizen, if we ever hope for them to become a productive MEMBER of the Free Software community, we should be pointing out the - perhaps small and rare - good things they do and making a HUGE deal about them.

I'd bet quite a large sum of money that in ten years time Microsoft will be the largest producer of Free Software in the world; that Windows and Office will both be released under Free, Open Source, DFSG-compatible licenses by that time. We can bring that day about sooner by working with the elements within Microsoft that are pulling in the same direction as us, or we can delay it by treating Microsoft as the enemy which only strengthens the elements within Microsoft that think of US that way. I know which future I'd rather see.

As a footnote: Microsoft just released the ASP.NET AJAX client libraries under a DFSG compliant license. I don't know if that will be the first package in Debian main with Microsoft as the upstream, but I am completely sure it won't be the last...

Syndicated 2007-01-31 15:33:08 from sab39 ... Blog

Japi New Year!

Thanks Casey for tackling the 7 java.security.cert issues. 1/1/10+2!

Syndicated 2007-01-01 19:31:43 from sab39 ... Blog

A Deathly Hallow is definitely...

... another name for a Horcrux.

You can quote me on that.

Syndicated 2006-12-30 02:36:39 from sab39 ... Blog

Japi Holidays to all!

Nearly a month since I blogged about Japi progress. I must be slipping.

Since then with respect to 1.4:

  • As Andrew mentioned in that chat log, he fixed the remaining beancontext issues on December 1st. As far as I know he's still looking for anyone, anywhere, who actually has any code that uses those methods.
  • Roman implemented two in datatransfer and one in print on December 11th.
  • And two in imageio.stream on December 12th.
  • On Christmas Eve Andrew eliminated the last two java.io errors.
This brings us down to 1/1/17+2 missing methods versus 1.2, 1.3, 1.4. That's almost cut the 1.4 errors in half again this month! They break down as follows:
  • The 1.2/1.3 error is in java.text. Mario is working on this one, I believe. As I understand it, it exposed some deeper Unicode-related issues that need to be addressed first - and will presumably result in improvements elsewhere too.
  • Seven in java.security.cert. Not a clue.
  • Six more in javax.imageio.stream.
  • Two methods, two constructors (and three serialversionuid minor issues) in javax.security.auth.kerberos.
  • One more to go (drag'n'drop related) in Swing.
  • And since I'm mentioning minor issues, even though I'm not including them in the count: a few more serialversionuid issues in external code that we inherit from the upstream distributors, specifically dom and sax. I believe these have been reported to the upstream suppliers of the code with no results, which is disappointing. Perhaps these won't be fixed until OpenJDK code can be pulled in...
Why am I still so fixated on the 1.2/1.3/1.4 results even though the current version is now JDK6? Because I like the idea of being able to say something is finished. For a long time - embarrassingly long, in fact, especially if you tried to advocate Classpath to a Java developer - we were "nearly 1.1". It doesn't matter if you also say "and a whole lot of 1.2, 1.3 and 1.4, and some of 1.5", the fact that we couldn't claim that even 1.1 was finished was what (a certain subset of) people heard. Now we're "nearly 1.2, nearly 1.3, nearly 1.4". Coverage of 1.5 and 6 are making good progress, but those things would sound a lot better if the sentence started with "1.4 is finished".

There are certainly also things from 1.4 that lie outside of API coverage that aren't finished. I'm not sure whether there's any definitive list of those things; it's a lot harder to know what they are when you can't write an easy tool like japitools to list them. I think those things are important too - I'm just not in a position to blog what they are. One I encountered in my own development was jks keystore format support.

None of that, though, detracts from the fact that excellent work is being done on 1.5 and 6 support as well, by Andrew and others. The percentage changes don't seem terribly impressive (at the beginning of the month Classpath's generics branch was at 95.5% good, 4.4% missing versus 1.5, and 88.72% good, 11.03% missing versus 6. Now Classpath IS the generics branch and those numbers are 95.56% good, 4.31% missing versus 1.5 and 88.93% good, 10.87% missing versus 6). However, the Java platform these days is HUGE. An improvement of 0.21% reflects quite a lot of work, especially considering that it was all methods in existing classes, and the way Japi weights things, those don't count for much compared to a whole new class, even if the class is small.

Syndicated 2006-12-30 02:32:48 from sab39 ... Blog

Making a Japi face - Classpath hackers are awesome

(03:15:01 PM) mjw: BTW. I am going to create the 0.93 branch now.
(03:15:22 PM) mjw: Unless there is something that really, really, really needs to go in in the next 30 minutes.
(03:15:46 PM) sab39: mjw: well clearly we really really need those last 6 beancontext methods and the one in java.text ;)
(03:16:19 PM) mjw: sab39, That is OK. You still have 28 minutes.
(03:16:40 PM) sab39: mjw: well my way of fixing japi errors is to poke other people until they do it
(03:16:52 PM) sab39: mjw: so... wonder how long till my new blog post hits planet ;)
(03:17:03 PM) ***mjw adds a note to keep out of reach of sab39
(03:17:14 PM) sab39: mjw: you're not immune, remember RCSID? ;)
(03:17:20 PM) mjw: sab39, It's there now
(03:17:31 PM) ***sab39 must have timed posting it well
(03:17:36 PM) tromey: your blog showed up on mugshot just now
(03:19:13 PM) neugens: sab39. ping
(03:19:23 PM) neugens: hehe, I've read your blog
(03:19:33 PM) sab39: neugens: pong
(03:19:43 PM) neugens: sab39: I'll try to take care of the missing error for the text package
(03:19:52 PM) sab39: neugens: cool :)
(03:20:00 PM) neugens: sab39: not sure it will be in the 0.93 release though :(
(03:20:06 PM) rkennke: sab39: hey it works!
(03:20:16 PM) sab39: rkennke: never fails
(03:20:31 PM) sab39: neugens: what, you can't get it working in 30 mins? ;)
(03:20:40 PM) neugens: 30 minutes?
(03:20:41 PM) neugens: ouch!
(03:20:50 PM) neugens: I need to push a fix for decimal format first!
(03:20:54 PM) ***neugens rush
(03:20:59 PM) ***neugens is away: I'm busy
(03:21:10 PM) rkennke: lol
(03:21:34 PM) sab39: :)
(03:21:34 PM) mjw: O boy.
(03:22:09 PM) mjw: I can pick up fixes on the release branch later also.
(03:24:01 PM) gnu_andrew: sab39, the problem with fixing those beancontext ones is that I've not seen any real testcases
(03:24:15 PM) gnu_andrew: sab39, I can throw something in but won't be 100% as to whether it's right
(03:24:37 PM) gnu_andrew: sab39, e.g. the proxy ones would intuitively suggest that you have a provider which you call
(03:25:35 PM) ***sab39 is giggling like an evil maniac right now. It really does never fail ;)
(03:26:01 PM) rkennke: sab39: haha
(03:26:23 PM) rkennke: gnu_andrew: I'd say throw it in. As long as noone complains ... B-)
(03:26:50 PM) robilad: rkennke: you're talking to the guy who talked me into starting to merge in classpath into kaffe back in 2003. ;)
(03:27:14 PM) sab39: gnu_andrew: I imagine if there are problems with an implementation you're more likely to get decent bug reports if it's an attempted implementation than if it's just entirely missing, too
(03:27:59 PM) sab39: I don't know whether to feel proud or guilty that the net effect of my gently and not-so-gently nudging other people to do stuff is so vastly disproportionately higher than the amount of actual work I've done myself ;)
(03:28:26 PM) tromey: sab39: arguably motivating other people is harder and more useful than doign the actual work :)
(03:28:26 PM) rkennke: robilad: hehe
(03:29:11 PM) gnu_andrew: sab39, good point, I'll hack something together and stick it in
(03:29:17 PM) sab39: robilad: well your starting that also prompted me to un-abandon japi after 2 years of not having touched it... not that that compares with the amount of work you did of course :)
(03:29:24 PM) gnu_andrew: sab39, no-one has even cried about them being missing yet...
(03:29:30 PM) mjw: sab39, The trick is to create your own reality-distortion-field in which you actually believe all the work was really yours anyway.
(03:29:36 PM) sab39: gnu_andrew: I have ;)
(03:30:00 PM) sab39: tromey: thanks, that's a heck of an ego boost ;)
(03:30:59 PM) robilad: sab39: you're good, and we like you ;)
(03:31:10 PM) sab39: mjw: I'm not sure even steve jobs could create *that* big a reality distortion field
(03:31:14 PM) sab39: robilad: aww, thanks
(03:31:19 PM) robilad: we also like casey very much, but he seems to not be around tonight.
(03:31:31 PM) sab39: <robilad promiscuous=true>/me hugs</robilad>
(03:31:46 PM) sab39: (that never gets old ;) )
(03:32:21 PM) gnu_andrew: sab39, I meant in terms of actually using it of course... ;)
(03:32:33 PM) gnu_andrew: seems sab39 is the Classpath cheerleader... :)
(03:32:43 PM) ***robilad hugs sab39 back .. thanks god it's friday! and heads out for a beer
(03:32:51 PM) robilad: later, mates
(03:32:52 PM) ***sab39 waves his pompoms
(03:32:59 PM) sab39: (now there's a disturbing picture)
(03:33:16 PM) sab39: bye robilad
(03:33:36 PM) sab39: (I'm so blogging this conversation btw)
(03:34:21 PM) Stephmw: I'm sooooo happy I didn't make any sarky comments then
(03:34:25 PM) Stephmw: wooops.

Syndicated 2006-12-01 20:46:23 from sab39 ... Blog

62 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!