Tuesday, October 31, 2006

Topics of the day

First, in the world of intellectual property abuse, we have coffee farmers attempting to trademark coffee beans, tax accountants attempting to patent tax avoidance strategies, and Yahoo attempting to patent "interestingness". Not quite all the same thing; Starbucks is trying to eliminate competition while the other two are attempts to milk money out of the competition, but it's all still corporate greed at work. A not-quite-the-same-thing issue, but related again to intellectual property rights, is the use of bad-faith DMCA claims by organizations against their critics in an effort to ferret out the identities of the critics, or alternatively to shut them up entirely. The DMCA requires service providers to disclose such information on the receipt of a properly-formed request even if the request is patently meritless, and several organizations have lately gone to the trouble of using the DMCA's identity-disclosure provisions for reasons not legitimately related to the legitimate prosecution of a copyright interest.

On the Wikipedia front, the "webcomics are evil" people are going after Ubersoft now. Here's Christopher Wright's take on it. And while we're talking about webcomics on Wikipedia.... More generally, the Chronicle of Higher Education ran an article on Wikipedia's general respectability with academics (or lack thereof), and why it's not as good as some people might like it to be. Meanwhile, a local student was arrested apparently for making threats against his high school on Wikipedia. The threats themselves appear to have been deleted by admins, which led the Tribune to mistakenly report that they were "never posted". Sloppy reporting, there, Mssrs. Ford and Meisner.

Meanwhile, Jimbo Wales and Jason Calacanis have been trading barbs over advertising on Wikipedia. I truly think that Calacanis simply does not get it; like so many web marketers, he only sees readers as sellable inventory. Calacanis simply doesn't understand that Wikipedia is about content, not about traffic; once you get past this, understanding why he doesn't see why his proposal won't work is easy. (Parse that!)

Elsewhere, Credit Slips muses on whether student loans create a form of debt slavery for students who obtain degrees in lesser-valued fields. As someone who will be paying off student loan debt for the next 25 years, I definitely see where they're coming from. And in the "stupid legal tricks" category, a man in Ohio has been paying child support to his deceased wife since April, and will have to continue doing so possibly until at least January, even though he has custody of the children and the money is going to "nobody in particular". (In theory, he will get the money back when the order is finally dissolved. Let's hope.)

We have been watching a lot of Robot Chicken lately. Although not as much as we might like, because Robot Chicken is definitely not "family-friendly" so we can only watch it when the sprog is asleep, which is not often.

NASA declared its intent to repair the HST, a pleasant reversal of course over the previous NASA administration, which had elected to let the telescope die. The HST is a singular instrument; its value to cosmological research is difficult to overstate, and to let it die without prospect of replacement would be terribly irresponsible.

And, finally, for those of you in Cook County, don't forget to vote. Early voting ends Thursday, so if you want to vote early, do it quickly. Otherwise, you have to vote at your normal polling place next Tuesday.

Update: corrected misstatement regarding the coffee beans.

Sigh. Wikipedia needs better admins. Really.

This evening an editor came to me and asked me if was an admin. I told him I wasn't, but asked him why he asked. He proceeded to tell me how he had been blocked for 96 hours for being "too argumentative" and his talk page protected in order to keep him from continuing "personal attacks". I looked at the incident. The individual in question is certainly being argumentative, but his arguments appear civil, if emphatic, and certainly are not personal attacks unless one considers a statement that "you are abusing your authority as an admin" as a personal attack. (Hint: it is not.) Furthermore, the event which apparently earned him his block was his declaration that he was going to gather evidence for an RfC. So, apparently, a group of admins blocked this individual (and substantially curtailed his ability to appeal that block by protecting his talk page) simply because he declared his intent to avail himself of Wikipedia's formal dispute resolution process.

Even if this guy really does deserve to be blocked -- and I am certainly not convinced of that -- conduct such as this just stinks. If someone says "I'm going to sue you" you do not shoot them in the knees, or hire thugs to tackle him should he make a move toward the courthouse. And yet this is basically what has been done here. What saddens me even more is that several of the parties involved here are people who I thought were reasonable admins. By blocking this guy after his declaration of intent to file an RfC, you effectively tell this guy "no, dude, you won't do that. We control you. You will do what we say, or you will leave. Get it? Good." That might not have been the intended message, but it certainly is the delivered message.

I hope this guy gets the chance to actually file his RfC, and I hope that it's not another one of those silly mutual backscratching sessions that most RfCs filed by combative but well-meaning editors turn into, where the target of the RfC gets all of his friends to pile on comments about how he's the best admin in the history of Wikipedia and the complaintant is nothing but a whiny troll who is just upset because X didn't go the way he wanted it to. Editors get upset for all sorts of reasons. Admins should try to make them less upset, not beat them up because they are upset. Nice job, guys. Now not only is the editor still upset, but now he's mad at being blocked, in his opinion unfairly, and he wants vindication.

When the hell will these people ever learn?

Monday, October 30, 2006

A Group is its Own Worst Enemy

I set up the del.icio.us bookmarking tool for Firefox, just to experiment with it, and as a result have been looking at some of my old saved bookmarks. And I ran across this one, an essay by Clay Shirky on group dynamics in online groups from 2003. And it is remarkable how much of what it says is relevant to Wikipedia today.

Three patterns in online groups:
  1. Sex talk. Anybody who spends much time on any of the wikipedia-related IRC channels will notice this.
  2. Identification and vilification of external enemies. Check, got lots and lots of that. Sollog, Wik, Lir, Daniel Brandt, Karmafist, Willy on Wheels, you name it, Wikipedia has lots of identified and vilified enemies -- whether or not they really deserve it. In most cases, the enemies have earned at least some of their ill repute, but it invariably gets blown up to epic proportions to the point where even contemplating whether the enemy du jour should be considered an enemy is grounds for sanctions within the group. (Part of me wonders how long before I become identified as an "enemy" of Wikipedia....)
  3. Religious veneration. This is quite evident in the IRC channels too. Jimbo as Godking. Danny as his right-hand man. There are lesser cults around other prominent figures, such as Raul654, Geogre, SlimVirgin (while this one mostly avoids IRC, it's very active in email), and even myself (although, thankfully, that one is breaking up now that I've left Wikipedia).
The author (a psychologist named Bion) who originally noted these patterns noted them in his group therapy sessions for neurotics. However, they seem to apply to nearly any group. What Bion noticed is that these behaviors actually work to undermine the purpose for which the group exists, by subverting the group's ostensible goals and replacing them with goals related to basic urges of human dynamics. Shirky goes on to suggest that groups have to have rules and structures to protect themselves from themselves.

Shirky later mentions Wikipedia positively in the article -- but it should be noted that he wrote this in 2003. Wikipedia was much smaller then and did not have the disordered group dynamics it does not, or at least they were still in a very juvenile state. The current state of Wikipedia very much resembles the anecdote he tells of Communitree, an online intentional community that was overrun by teenagers and destroyed, because their community was too open to assimilate the teenagers into a structure that would channel their activity into the goals of the group.

Shirky lists three things that must be accepted. First, that one cannot separate the technical and the social. I think his main point here is that technical solutions to social problems may (and generally will) have unintended results, either failing to solve the original problem, creating new problems, or both, and that one must not rely on purely technical solutions to resolve social issues, or vice versa, for that matter.

Second, that members are different from users. (This is one Wikipedia sadly gets very wrong.) Any successful group, says Shirky, is going to have a core group that "gardens effectively". The obvious group to be doing this in Wikipedia is the administrators -- but administrators, as a group, do not do this. Administrators on Wikipedia are far from homogenous. Wikipedia does have a group of gardeners, and certainly a great many of them are administrators, but not all. One of the problems that the gardeners are having is alluded to in Shirky's article: such groups tend to establish alternate communication channels (such as the "Old Hats" list from a.f.u) in order to communicate in a lower-noise environment. Other people in Wikipedia are objecting very strongly to such channels, and doing everything they can to undermine them.

These same people also object to the third point: the core group has rights that trump individual rights. The same people who object to "backchannels" routinely make accusations of cabalism -- and essentially that is what is going on. The problem, as I see it, are people who complain about the gardeners forming a cabal, while at the same time doing no gardening themselves. (I'm sorry, but writing featured articles, reverting vandalism, or really most of the actual work on the encyclopedia itself are not "gardening". Gardening, from this point of view, is maintaining the community, and more specifically conveying the norms, expectations, rituals, and practices of that community to newcomers so that they may know what is expected of them. It is something that Wikipedia does not do a very good job of, and it is why most Wikipedians today have little or no sense of community.) This is exactly what Shirky (and Bion) are talking about when they talk about letting base instincts override sophisticated goals.

Shirky identifies four things to design for. Two of them seem especially relevant to me here, the third ("establish barriers to participation") and the fourth ("protect the group from scaling"). Wikipedia suffers badly from the lack of both of these design characteristics. Wikipedia does have barriers to participation, but they are terribly low and easily gamed. And its conversational systems scale terribly, as anyone who has been involved in a heated policy discussion on the wiki can testify. It is small wonder that so many groups have retreated to other communication channels (IRC, email, whatever) for their discussions: it is impossible to hold them in the wiki itself because there are simply too many potential participants.

Reading this article (written over three years ago) really reinforces my belief that Wikipedia's culture has headed off in the wrong direction and is not only ill-suited to serve its main purpose, but will become increasingly more so until major corrective action is taken. I don't know what that action is, or even if any action is possible at this point (the current community norms have become quite soundly entrenched and there is nobody with the power to alter them significantly in any sort of smallish timeframe) short of forking, but I'm quite certain that the horse is definitely not still on the track.

Sunday, October 29, 2006

How to make progress by shoving problems under the carpet

I just commented out all of the loadbalancing code in the java port, on the grounds that it makes far more sense to develop loadbalancing at a JDBC driver level (the same place one normally does connection pooling). Once I get the application working with a single server, I'll come back to the problem of loadbalancing, which should, if done correctly, be almost completely transparent to the application anyway.

I'm certain that this problem will prove to be challenging, but I think it makes far more sense to reengineer it than to try to perpetuate an implementation which is designed for a totally different environment (specifically, one without a database abstraction layer).

No daily linkspam, so I made it live instead

I can't get del.icio.us's daily linkspam posting functionality to work, so I added it as a sidebar to my blog template, instead. Enjoy.

I have been having terrible problems with headaches all day today. However, the headaches are manageable as long as I stay sitting. So I've been hacking. I made significant progress on the java port today, and just committed a rather large set of changes.

I have discovered a new liquor!

In the course of making holiday fruitcakes, we macerated pecans with brandy. This morning, I happened to taste the residual liquor from the jar in which the pecans were macerated. It is absolutely delicious. It is what Frangelico wishes it were. I am going to have to start making this myself, by macerating pecans (with a bit of candied citron, probably) in brandy for about seven days, then filtering off.

Saturday, October 28, 2006


An equivalence relation, as many of us already know, is defined as a relation which satisfies reflexivity, symmetry, and transitivity. This afternoon, I was musing about an "antiequivalence relation": a relation which is irreflexive (for all a, a R a is never true), antisymmetric (for all a and b, if a R b, then b R a is false) and intransitive (for all a, b, and c, if a R b and b R c, then a R c is false). And, after some thought, we came up with one: "a is the biological mother of b".

For some reason, I felt the need to share this.

Friday, October 27, 2006

iTrip makes unlikely bedfellows

Apparently Christian broadcasters and National Public Radio both agree on the same thing: iTrips are evil. These devices, which have been banned in the UK, act as little FM remodulators so that you can listen to your satellite radio (or iPod) in your car even if your car only has a wimpy little FM radio, by (re)broadcasting the signal at a supposedly low power such that your car radio will pick it up. The problem, according to NPR, is that a substantial fraction of these devices exceed their FCC-mandated power restrictions. These systems are often set to use channels at the lower end of the FM band (most commonly 88.1 MHz), which is principally occupied (per the FCC's licensing plan) by community and non-profit radio stations, a space mainly occupied by Christian broadcasters and public radio stations. The Christians presumably aren't happy by having their worship services randomly interrupted by someone else's gangsta rap, or by Howard Stern, just because one of their listeners drove by someone with one of these devices set with the power higher than it should be. NPR is bothered enough by this that they've petitioned the FCC to recall the devices. The FCC has already said that many of XM's devices exceed the legally mandated power limitations, a finding that could easily lead to a required recall for XM.

(From TechDirt.)


I was looking forward to getting some work done tonight on celeritas (my interim project name for the Java port of MediaWiki), but shortly after dinner I got hit first by an attack of extreme tiredness (which is actually pretty common; I often crash around 6-7 pm) and then after that by a rather nasty headache. I did manage to get a tiny bit of work done, but not much, and the current tangle of code I'm looking at is sufficiently ugly that I doubt I"ll be able to make headway on it while only operating on two cylinders mentally. I might be feeling better later on, once the caffeine and alcohol have had a chance to work (I usually have one cup of coffee with a shot of Bailey's in the evening), but I'm not counting on it.

At least I got to watch two Robot Chickens and part of a Psych (hopefully we'll watch the rest later). Maybe I'll do some reading; I've managed to put a few pages behind me in A Game of Thrones lately.

I've also started doing del.icio.us tagging again, and there should be a daily linkspam post in here later tonight when the autoposting thingy fires. And I'm testing using SEMagic to post to Blogger, just to see if it works.
Froosh, over at HipMojo.com, estimates that Wikipedia is worth about $580 million, based on traffic, advertisement rates, and industry valuations of similar ventures.

Of course, this analysis assumes that adding advertisement would not chase off contributors, which it likely would. But there would be so much extra revenue that it would likely be possible to pay contributors enough to make up for the loss of volunteers.

Wednesday, October 25, 2006

Another compilation unit completed, although tonight's (LinkBatch.java) is really quite small. Latest commit is always here. WebSVN even allows you to subscribe to an RSS feed now, which you can find here.

In other news, current polling data suggests that the Dems will definitely take the Senate, 52-48. Sadly, I suspect this is more because of Mark Foley than because of the suspension of habeas corpus, even though the latter is what will make Bush go down in history. People are apparently more influenced by the rumor of simulated sex with teenage boys than by the revocation of a centuries-old legal right to not be imprisoned arbitrarily. How sad.

Quote of the day: "It is said that if you place a million monkeys in front of a million keyboards, they will eventually produce the works of Shakespeare. This is simply not true. They cannot even produce an encyclopedia."

Quote #2 of the day: "A wok is wot you thwo at a wabbit when you havwent got a wifle."
I said in my last post that I didn't get any work on my java port project done tonight. Well, I lied. My headache got better and not only did I finish FileStore.java, but I got websvn set up on my SVN server, too. This means that, for example, you can see my last commit with ease now. If there is actually anyone out there watching me do this silly project, well, I just made it easier for you. I've also nearly decided on a name, but that won't show up until I finish with the first pass (since I don't want to try to do the refactor by hand).

I've also been thinking about how to handle MediaWiki's handling of quotes in the parser. The approach currently used by MediaWiki is such that it makes the language require arbitrary lookahead/lookbehind, which is bad. However, I think I can avoid that at the cost of making certain nonstandard markups parse "differently". Mainly, sequences of either exactly four quotes, or more than five quotes. I would make two quotes be one lexeme (call it 2Q), three quotes another different lexeme (3Q), five quotes yet another lexeme (5Q), and sequences of four or six or more probably be syntax errors. I might allow for four quotes and six quotes to also be lexemes (4Q and 6Q) that are basically treated as null strings, since they can conceivably occur during template expansion and when they do the user's intent was probably to output nothing. There is no excuse for seven or more quotes; that should be a syntax error.

The downside is that I don't think I can easily enforce pairing at the grammar level; it will have to be enforced at the conversion layer instead. I'm not sure this is really a bad thing. The problem is that 2Q ... 3Q ... 5Q is semantically valid, as is 2Q ... 3Q ... 2Q ... 3Q, and 5Q ... 3Q ... 5Q ... 2Q. But 3Q ... 5Q is not. It might be possible to enumerate all the possible combinations and do so in a way that doesn't break LL(1)/LR(1), but I'm not sure about this yet.

Tuesday, October 24, 2006


Another day with little to show for it... Got called into work early because the cooling system in our server room conked out again; we clearly have a refrigerant leak but we don't know where yet. They left us a bottle of R-407C so that the next time it happens we don't have to wait for them to go back to the shop to get one (the shop is a half hour away from the office, and that means an hour wait for them to get a reload). Now if they'd just leave me a charging manifold... I've watched them do it enough times that I can probably do it myself now, and I know both the total charge and the normal operating head and suction pressures for this unit as well as they do. Anyway, it's fully charged again, this time with a fluorescent dye load so hopefully we'll be able to locate the leak and fix it.

As a result, I missed lunch. When I miss lunch, I usually get headaches. And today was no exception. Came home with a splitting headache, which has not let up much at all. On top of that I am sore from trying to bring order out of the upstairs chaos on Sunday and Monday. I think tonight will be an early night, so no coding for me; what little time I had this evening was spent on the Sims. Maybe tomorrow. At least the last few days up to now have been relatively productive.

Monday, October 23, 2006

In case you hadn't heard, the United States has apparently banned vegemite, a yeast extract which is extraordinarily (one might even say unreasonably) popular in Australia. This appears to have happened six months ago. Recently, however, US Customs has apparently started interrogating travelers with Australian passports at the border to ensure that they're not sneaking little jars of salty yeastiness into the country. You see, Vegemite has folate, a vitamin that the FDA already requires to be added to flour and bread product, and which is a major component of the prenatal vitamins that we push so hard on pregnant women (and for good cause). And, apparently that's bad. Getting your folate from a salty yeasty paste instead of from a pill is bad, because if you eat an entire jar at once you'll get so much that you might not notice that you have vitamin B12 deficiency.

I have some vain hope that our customs agents have better things to do than search travelling Aussies to make sure that they're not sneaking any jars of salty yeasty contraband, but apparently not. Then again, Customs put a lot of effort into stopping rogue Beanie Babies in 1998, too. Now if they could just do something about the terrorists...

Sunday, October 22, 2006

Programming pet peeves

First, a pet peeve: using a language's internal array types as an ad hoc structured type. This occurs most commonly in languages like Perl and PHP (which have easy to create array types) for functions which need to return "more than one value", for whatever reason. The correct thing to do is to declare a class to hold the necessary values and return that object. Instead, many lazy programmers instead pack the values to be returned into an ad hoc array. MediaWiki is full of instances of this. (I am guilty of it myself, having done so many many times in throwaway code.)

Second, a grouse about languages that allow code to manipulate the (global) symbol table. For example, PHP has a function called "extract" which instantiates new global symbols on the fly. Such techniques make for difficult to maintain code -- they cause variables to appear out of nowhere. This makes static code analysis very difficult (in many cases impossible) because there's no way to know what variables will exist without actually running the code. All great ways to make code difficult to maintain -- and even harder to convert to languages that don't allow for runtime alterations to global or local symbol tables, which is most of them. A similar, but slightly different, nasty behavior is PHP's mysql_fetch_object, which creates an anonymous object whose instance variables correspond to the fields returned by the database query, which (again) cannot be absolutely known without running the code.

Both of these are examples of convenience techniques that surely make life easier when writing quick and dirty throwaway code, but should never be used in any application intended to be maintained over time and especially by more than one or two programmers.

Saturday, October 21, 2006


I haven't made a lot of progress on the MediaWiki port this week. I blame this mainly on two things. First, Sims 2 Pets came out recently and I have been wasting a lot of time on exploring the new features this expansion pack gives.

Second, I have been perfecting my economic strategy over at Londinivm, which is one of those vaguely silly online MMORPGs that happens to have a somewhat interesting economic model. I think it was Luigi30 on #wikipedia who introduced me to it. Anyway, I've finally got enough of the details of the economic system down to navigate it in a manner that at least most of the players I talk to seem to lack. If you do happen to find your way there, look me up; I'm karynn there (id 19564) (and, yes, my tribe is accepting recruits). And yes, I know, the player image is male; I'm not overly happy about that. Player images there are determined by class, and the only two classes with female pictures are classes that don't fit with my style of play. Grumble, oh well, I don't care that much. :)

I am also starting to think about writing more automated PHP to Java conversion software. There are some sticky wickets that would probably make doing generalized conversions nearly impossible, but I suspect that I can automate 80% of the conversion process without too much effort. Still musing this possibility. If I go that route, I might just start over on the MediaWiki port.

Tuesday, October 17, 2006

Completed the rough port of another module (Language.java) tonight.

PHP arrays are more annoying than I originally thought, and the number of odd functions which I deferred to later implemention by stuffing them into the MW module was annoyingly large for this compilation unit. Also, it's quite obvious to me that I'm going to have to infer an interface for LanguageConverter and apply that to both LanguageConverter and FakeConverter as the two have incompatible constructors, yet are clearly intended to be interchangeable otherwise. But I can't use eclipse to infer an interface until the compilation unit is compilable, which means I have to get through cleaning up LanguageConverter first. Oh well. I suppose I could infer the interface by hand, but what fun is that?

I am getting much faster at converting foreach() constructions into Iterator .. while (hasNext) .. next() constructs.

Sunday, October 15, 2006

A great deal of the complexity in MediaWiki's language support appears to be related to PHP's relatively poor support for Unicode. Java's "near-UTF-16" support is a lot less complicated to deal with (although not entirely perfect; it will treat a character represented by a surrogate pair as two characters, at least with 1.4 JREs; fortunately there are relatively few such characters). Another large hunk of it is to deal with transitioning between older MediaWiki databases and current Unicode-based databases; I can reasonably insist that the database be UTF-8, UTF-16, or UCS2. (UCS4/UTF-32, not so much...) and not have to worry about on-the-fly conversion of outdated database formats. I don't expect the schema to survive intact, either, although I've not made any schema changes, yet; the most I promise to provide is some means to make a one-time nonreversible conversion of a MediaWiki database to whatever I end up naming this thing in the end.

The other thing that makes this irritating is that, in MediaWiki at least, the same datatype is used for both byte streams and strings, even though one is a stream of bytes (which may or may not be a string encoded in some character set) and the other is a string (a stream of encoded characters). It's therefore rarely obvious what encoding (if any) the contents of a given PHP string are going to be in in MediaWiki, which means I will probably have some errors in that regard down the road.

Friday, October 13, 2006

"It is a good rule in life never to apologize. The right sort of people do not want apologies, and the wrong sort take a mean advantage of them."

P. G. Wodehouse, The Man Upstairs (1914)

Wednesday, October 11, 2006

New book coming up!

I finally finished the Baroque Cycle tonight. I've been working on this book for ages now. Now I'm on to something else. Probably George R. R. Martin's "Song of Fire and Ice" series, or at least the first book thereof.

Here's another Keith Olbermann video that is definitely to be seen. I may have to put his show on season pass on the TiVo so I can watch these without having to futz around with MSN's annoying behavior on the web; as of today, it seems, I am unable to watch these in Firefox -- simply because I have Flash 9 instead of the expected Flash 8 (which I do not appear to be able to download). Annoying.

No progress on the MediaWiki port today; I have not been in the mood. I have tomorrow off, however, so maybe I'll catch up some during the day.

Tuesday, October 10, 2006

Impeach Antonin Scalia : CafePress.com

I had completely forgotten about this silly little shop I set up a couple years ago in a fit of boredom (or whatever). Apparently it sold a sticker today. Totally unexpected. It also sold one back in May, but I don't recall getting an email for that one (perhaps my antispam ate it or something). Anyway, amusing.

No code written today; just wasn't able to get into the headspace for it. I did die several times at Nethack, though.

Update: After posting this I went on to finish off JobQueue.java. More loose threads launched by this file; the number of "TODO" methods has grown a bit more. I think I'm going to have to work to eliminate the PlainArray and AssociativeArray classes relatively quickly, for they are a pain in the ass. PHP arrays are somewhat weird.

Monday, October 09, 2006

Finished off DifferenceEngine.java today, along with HTMLCacheUpdate.java. Now working on JobQueue.java. The database code still needs a lot of refactoring, and some of the stuff in JobQueue is showing this off. The switch statements for choosing subclasses in JobQueue make me twitch.

I've had a roaring headache most of the evening, which has hampered productivity. Still, I am pleased with the progress I'm making.
Nearly done with DifferenceEngine.java; probably only one more evening's work to go on it.

At the rate I'm getting through this stuff, I'm hoping to have a fully compilable (albeit probably nonfunctional) version in maybe ten to twelve weeks. I am limited as to the amount of work I can do on weekdays. There are only so many hours in the day, after all. Once it all compiles, then I get to the real fun: making it work at all.

Sunday, October 08, 2006

According to Greg Beck (and as reported today on Techdirt), the doctrine of first sale is no longer valid for shampoo bottles, or at least according to some company called SalonQuest, who wants to make reselling your shampoo bottle online illegal.

SalonQuest isn't really seeking to defend its copyright here; they're just using copyright as the stick to beat someone whose actions dilute their market. The real "right" that SalonQuest is seeking to control is the right to control the market: they want to ensure that they and only they control the conditions under which their product is sold, probably to ensure that they don't lose the (highly valuable, to them, at least) marketing data that goes along with each transation.

Yet another example of copyright law being used as a lever to defend illegitimately-claimed "rights". The ability for copyright owners to leverage their copyrights into a monopoly in other areas cannot be understated, and yet our courts and lawmakers have done such a poor job of even recognizing this, let alone successfully curtailing it.
I figured out how to get SVN working, and so it is now set up, at http://svn.pyrzqxgl.org/svnroot/jmediawiki/. I will eventually change the product name (that name is unsuitable for publication because of trademark issues), but I want to wait to do that until I have the code sufficiently syntax-valid to use Eclipse's refactoring methods.

Substantial hints on getting SVN working within Apache2 were garnered from this howto at Sourceforge. My thanks to whoever "bertheymans" is.

Saturday, October 07, 2006

The End of Fossil Energy - an interesting commentary on where we're going as a world in the next century or so. The author doesn't seem to mention fusion power, but otherwise I think he's probably pretty much right on track.

Also, I wasn't aware that Keith Olbermann had been on SportsCenter. Not that it really matters, of course; he's clearly an excellent journalist, and the fact that he started out in sports in no way detracts from it. It is refreshing to see a member of the Fourth Estate fulfilling his duty by reporting, and then meaningfully commenting upon, the news, instead of feeding propaganda disguised as entertainment disguised as news the way people like Sean Hannity do.
I do not like dismissal automatic,
It seems to me to be traumatic.
I do not like it in this case,
I do not like it any place.
As a judge I am most keen
to understand, What does it mean?
How can any person know
what the docket does not show?

(click here for the rest)
A special comment about lying

Another must-see commentary video from Keith Olbermann.

The question now is not, will the Democrats take the House in November; it is whether the Democrats will take both the House and the Senate. And, if so, just how badly the Republicans will be willing to trash the nation in the lame duck weeks that follow in order to blame the brewing recession not on their own incompetent direction during the past six years, but instead the two years of Democratic leadership that will follow, in order to have some hopes of electing whatever evil pretender-king will be chosen as the Republican nominee come 2008. I have little doubt that Karl Rove and Company are totally willing to completely trash the United States in an attempt to regain control in 2008. "The object of power, is power", after all. Here's hoping that the damage done by the 108th in its upcoming lame duck session can be mitigated early enough in the 109th.

Thursday, October 05, 2006

Anybody spare a cup of R-407C?

After spending most of last night reinstalling Eclipse (which is now working much better), I was hoping to get some work done on Database.java today. Such was not to be, though; at 2:19a.m. the Liebert refrigerated cabinets we have at work blew a compressor. We had a combination of a freon leak (hence the cup of R-407C) and a blown device called a "power head" that took six hours to rectify. This dragged me into the office before I could even shower, let alone have breakfast. We didn't fully resolve all issues until 4:55 p.m. So after spending the entire day in crisis mode, I am too blown out to even think about code.

The only consolation is that today is Thursday; that means I only have one more day this week to worry about and then I get a weekend where I hopefully won't have to think about work all that much.

Wednesday, October 04, 2006


Anybody used Hibernate? I'm considering using it for the MediaWiki port. It'll probably be difficult to maintain the existing table designs unchanged, but I'm not really that concerned about that.

I am exceptionally tired too night, too tired to code. I was hoping to finish off Database.java, but I don't think I'll make it. Rewriting it to use JDBC instead of PHP's mysql support has been more of a challenge than I expected, precisely because JDBC is a lot smarter than PHP's mysql support. MySQL, as we all know, does not support parameters or prepared statements, and so neither does PHP. MediaWiki gets around this by a half-assed implementation of the same in its database module. JDBC, on the other hand, does support parameters in the MySQL driver. So I can chop all that code out and replace it with the JDBC native support. That, and there's a lot of PHPisms in this code that are more than a little challenging to deal with, including arrays that contain both associative and nonassociative elements (ugh!). A pox on the use of arrays as ad hoc structured types! PHP has a class system; use it!

I am utterly perplexed at the number of people who will blithely stand by and defend a libeler. The lies that are being uttered about me in the arbitration process are so blatant and so transparent (even to the point today of an accusation that I filed the request for arbitration myself; a claim which appears to rest on the plainly outrageous belief that InkSplotch is my sockpuppet) that there is no way that any reasonable amount of "good faith" can be mustered by a reasonable person. I have, at this point, given up much hope that the English Wikipedia's community will be redeemable at any time in the near future. I hold forth hope that I may be able to patch up matters with some (although certainly not all) of the people whose ire I have raised in recent months, but I suspect that there is no way in which I will be able to interact with the English Wikipedia community in any way that does not introduce excessive toxins into my life in the near future. At this point, I have a list of people whose reformation (or departure) will be required before I will consider returning. I won't bother to publish it; anyone familiar with the situation will know who they are.

I am even more bothered by the fact that calling these people on their lies is somehow wrong. That someone of purportedly high standing can use his standing as a pulpit to spread scurrilous falsehoods, refuse to provide evidence to support his false accusations (as presenting evidence is somehow a task too base for his great luminousness), and have his minions then shout down anyone who questions his good faith, is evidence of a great sickness that must needs be purged before it kills the community entirely. Then again, killing the community might be for the best; as I have observed many times before, the community doesn't write the encyclopedia. Losing them would be inconvenient, but a new community would form and take over. The problem is going to be in arranging the transfer of power. I don't believe that can happen from within, and the few entities with the power to effect it from without are not, in my estimation, likely to do so.

But enough about the decline and fall of Wikipedia civilization. I still hold some hope that I might find a home at Commons (and it is hard to resist the siren calls of someone as mindbogglingly irresistable as Bastique, after all). But I fear that the vile nastiness from the English Wikipedia will simply follow me there and soon enough ruin Commons as a place where I might contribute. So I am more likely to simply lay low for a time, working instead on software projects and on statistical studies of the Wikimedia projects (which I find utterly fascinating). Perhaps something interesting will eventually come of all this.

But, on to the real reason I left the English Wikipedia. My main reason for leaving is that I did not wish to bring the toxicity from there into my house. We are going to have another child, in May 2007, and that means that we are going to be even more busy than usual with prenatal visits. We found this out some time ago, but I have refrained from any public statement because, well, you don't announce these things until you see the heartbeat on the ultrasound (which we saw today). Lee's last pregnancy was hard on her, and I simply don't need the added stress of dealing with the idiots in Wikipedia in my--or her--life right now. Maybe once young Evan (or perhaps Morgan, or David) is six months old or so things will have calmed down enough that I'll once again have time and energy to brave the insanity. So expect me to be gone at least a year, at least from community activities (I may edit articles from time to time, but if that brings down ugliness I will quit that too; it may be necessary for me to use a sockpuppet simply to avoid the vindictive). The health and well-being of my family is simply too important, and I certainly do not wish to spoil the joy that this new child will bring with any form of ugliness at all, and I believe that, at this point, Wikipedia has nothing to offer me but ugliness.

So, Wikipedia is now my last project; there is nothing more useful to be accomplished there by me. I now have two new ones, one big and one not so big, and I'm sure they'll occupy my time quite handily for the next six months to twenty years.

Finally, to the person who asked: I need help in gluing SVN into Apache2. I have both installed on one of my webservers, but I have yet to figure out how to tie one into the other. Any suggestions -- even a pointer to a howto -- would be useful.

Tuesday, October 03, 2006

The Grand Folly

I've actually made significant progress on my port of MediaWiki to Java. The Article class is now free of syntactic errors. So is CacheManager. I'm working on Database now, and swearing constantly at PHP's crappy database support. PHP remains one of my least favorite languages of all time.

MediaWiki has a gazillion global variables. The container class (MW) I created to hold all of them (as statics) keeps getting larger and larger. Fortunately most of them will get refactored out later, into either system configuration classes or into the Request wrapper class (depending on whether they're system-wide or merely request-wide variables).

The nice thing is that PHP's syntax is "close enough" to Java's that I can simply paste the .php file into a .java file and usually get it "close enough" for Eclipse to identify methods without too much additional editing. (Getting them syntactically valid is another story.) It took me about two evenings and two weekend days to get Article into a state where (a) it was internally syntactically valid and (b) all of its external references existed in a state that would allow them to resolve. So that means I've also cleaned up quite a few other things, and also created several new auxiliary classes to deal with various PHPism, especially PHP arrays (plain and associative). There's still several spots that are likely semantically broken because of egregious use of mixed types (that is, returning results of different, nonhomologous types depending on the situation, which is peachy in a late-binding loosely-typed language like PHP, and total anathema in Java). So far I've had two instances of reflection in Database that I sincerely hope I will be able to get rid of.

Once I get all the code through this first-pass translation process, then I will go through and try to harmonize what's there and start refactoring. A large part of this process is simply so that I can familiarize myself with the code, so even if I never bring this completely to fruition, I'll still have gained something out of it.

Now I just need to get SVN working so I can share this evil thing with the rest of the world and maybe even invite a few people to Join the Fun. Any advice on that would be appreciated.

Monday, October 02, 2006

A Proposal for Adminship on the English Wikipedia

It is broadly accepted that the Requests for Adminship on the English Wikipedia is not working well enough. Most of the proposals I've seen so far involve either (a) restricting who can participate in the process or (b) trying to place restrictions on how people participate (usually in order to avoid the process turning into voting). Solutions in the (a) group raise (wholly reasonable) objections of cabalism; those in the (b) group are doomed to failure because they will eventually mutate back into voting.

I think the real problem, however, that everyone is trying too hard to protect adminship. What if, instead of treating adminship as such a big deal, Wikipedia actually embraced its oft-repeated claim that "adminship is no big deal" and treated it as such? In addition to simplifying and detoxifying the adminship process (by making it much lower stress), it will help to undermine the appearance of adminship as a high-status position. If virtually everyone is, or can be, an admin, then the prestige associated with the position is diminished. And since all administrative actions are now reversible, the risk is a lot lower.

So, instead of doing things to make getting adminship harder, I instead propose to make getting adminship easier -- but impermanently.

The basic proposal: Any editor with one month's experience (that is, one month during which the editor has been consistently active) may request adminship. If nobody objects to the application during a five-day period, that editor shall be sysoped. If, however, anyone objects, then a discussion, not to last more than seven days, shall be initiated. Unless a consensus is formed why this editor shall not be an admin, at the conclusion of the discussion that editor shall again be sysoped. That is, consensus not to promote is required; it is not enough to have a lack of consensus to promote. Candidates for whom there is consensus not to promote must wait one month before trying again (and should in that time seek to remedy the defect that were identified in the discussion, if possible).

All administrators serve for a fixed three month term. After those three month, the editor is desysoped, and must sit out a month as a non-sysop before he or she may reapply using the above process. (This would not apply to admins explicitly exempted from this process by the Foundation, who would remain admins for as long as the Foundation says so.)

Finally, one final check: you can only object to one candidacy every three months. That is, if you object to someone's candidacy, thereby forcing a discussion, you can't object to anyone else's for three months.

My thanks to Triona, who discussed this idea with me, and offered several suggestions, some of which made it into this proposal.
Lying primadonnas

I've noticed that one of the primadonnas running amok on Wikipedia has taken to claiming that I wasn't even an editor when I was still there. I'm not sure what purpose he has to repeating this lie -- other than to evidence his own poor connection to reality -- but in the interest of setting the record straight, the following is an incomplete list of the articles I made nontrivial contributions to in the past year (that is, since October 1, 2005):

Polar exploration
Bubba (fish)
Rest area
Dallas Austin
Interstate 55
Dan Ryan Expressway
St. Louis, Missouri
Max August Zorn
Galesburg, Illinois
Bass guitar
Target Corporation
Public library
Galva, Illinois
U.S. Route 34
Roger Taylor (college president)
Stephen Colbert
Ear X-tacy
USASA Field Station Augsburg
September 11
Jack Ruby
Paper marbling
Chancellor (education)
Andrew Sobel (professor)
Andrew Sobel (author)
Andrew Sobel
Computer and video games
Addressing mode
Junichi Kakizaki
Delon Dotson
Michigan Avenue
Wright Amendment
United States v. One Package of Japanese Pessaries

This is in addition to contributing spelling corrections, markup corrections, or other minor adjustments to literally thousands of articles. It also does not count articles I touched in the course of handling copyright release notices, copyright infringement notices, vandalism management, or special requests from Brad or Danny.

But apparently the above list, or the over 7000 mainspace edits I'd made in the past twelve months (my critic having made barely 1000 mainspace edits in the same timeframe), were not enough to make me an editor.

And to think that the person making this claim is not only considered by many a "valued member of the Wikipedia community" but is being held forth, by himself and by others, as a paragon of virtue that others should emulate. I wasn't aware that raving on spewing forth falsehoods (which in his case I shall call "lies"; this is my blog and I am not required to be "civil" and assume that his lies flow merely from ignorance of the facts) was considered virtuous. If these are truly the moral standards of Wikipedia, Wikipedia is in far darker trouble than even I had envisioned.