Belgium / followup

A friend once told me: "The most complex object is the user". This is true.

I just told this same friend, who shares my frustration with Belgian paperwork, and a somewhat militant attitude:

If you want to invade Belgium, you have to fill out form "Inv-10-A", and attach annexes confirming compliance with international law, acknowledgement of the ICC, prove that the soldiers (and their translators) are fairly divided between French and Flemmish speakers, and agree to start the process of an economic impact assesment report (and have it reviewed approved by an invasion steering committee), after which (assuming the report is approved) you must obtain permits for the use of heavy and armored vehicles in built-up areas, permission to break the speed of sound over populated areas, conduct background checks and psychological assesments on your soldiers in order that they may obtain weapons permits, and notify the police so they can help ensure that falling rockets don't hit civilians. Then your invasion can commence, but only for 38 hours a week, and no fighting may be done on bank holidays or weekends.
I'm sure I've missed some steps. Probably all the steps involving lawyers and accountants. Oh well...

It's TRUE!

Business processes:

Having seen a couple of approaches to codifying BP's I've formed the following opinions:

a) Less code is better. Business processes evolve. Software delivered in waterfall doesn't. In XP, adding features etc. sucks when your data model is shifting under your feet. (see also: why BP's should be expressed in (e.g.) a scripting language, not in compiled files.)

b) More freedom is better. People will ask "why can't I do X" where X is "attach an Excel file to the approved version of a final report, if the accountant signed the books in the last weekly meeting" - and coding that in Java or even a scripting language is stupid.

c) Less structure is better. Structure should be emergent, then inferred, not imposed. Evolved structure is seamless. Imposed structure is rigid and inflexible.

d) The more users, the better. Network effects increase an organizations net investment into a solution, and therefore (hopefully) increase its net benefit.



I saw an interesting sculpture in this gallery by a guy called Russel West. It was as follows:

Thousands and thousands of keys had been fixed pointing outwards on a wireframe in the shape of a long cylinder. The appearance was as of a dense coat of metal scales on a serpent, which was accentuated by the shape of the cylinder, curving like the shape a snake makes with it crawls along. However, the curves were quite regular, like a sine wave, and as I recall, the ends were un-tapered, so the idea of a snake may just be me.

Nevertheless, the idea of a snake of keys, a key snake, has half a dozen different interpretations. That one is making me think a bit.

Quality/trust metrics in multi-user websites.

You have Karma, mojo, XP, etc. Wikipedia is an organic meritocracy. When it comes down to it, there are only two metrics on the web that make sense.

- Time. Time devoted to the site, online presence, GTKY, etc.
- Money. Subscriptions etc.

Money is difficult. People who subscribe to get special features creates separation. Ads get blocked, and reduce coherence. I think the solution is found in what the subscription represents. It says "I value the site such that I give $xx a month to make sure it stays around". In exchange for that, the site should value them right back, acknowledging the compliment and returning it somehow, for example listening to their feature requests, feedback etc. The subscription shares some features with owning shares in the site, just in reverse. The dividend the user gets from the site is what made him subscribe.


Aaaargh: please, no:

So, this GoogleWatching article on Fortune is pretty good, right up until it says this:
Certainly the search game is still in its infancy. Only a fraction of the content available online is actually searchable. For instance, even subscribers can't search current and archived issues of the Wall Street Journal or most other publications with a search engine; you have to go to the publication's site. This suggests that the search engine that can get the world to list premium content on its platform will have a leg up on the competition. Microsoft has plenty of money to buy the rights to such content; it also owns powerful digital-rights-management software, which helps copyright holders control who uses their products and how often. Those should be advantages in negotiations with companies worried about losing control of copyrighted text, music, and video on the Net.
That is so wrong. (a) Google Desktop already searches your cache, whereupon all the web-based content to which you subscribe (and have surfed) may be found.

B) Most importantly, take one look at the hoops that MS, Sony and Apple have had to contort themselves into to make the content cartel happy. For what? Strategic positioning, and in Apple's case, first mover advantage.

But the idea that yet another successful hi-tech company should kow-tow to content owners to maintain a competitive edge is completely wrong. Google has and maintains it's edge through bona-fide innovation. As Cory says, when's the last time you saw an innovative DVD player?

I'm incoherent right now, but this is not funny.


Thoughts on AOP

Not that I've used it or anything.

I've read up in the C2 wiki and looked at various examples. I believe I understand the theory relatively well, and beneath all the new terminology AOP appears to do two things:

1. Adds a transparent event model for access/modification of methods, variables & objects. I believe that Ruby can do this without the after-the-fact style of bytecode modification, and AOP applies this to 5GL's (or whatever you want to call Java, C# etc.)

2. As per the promotional material, provides a new way of separating cross-cutting concerns. Of course, multiple inheritance could do this :-) As has LISP and it's progeny. I imagine the relevant newsgroups are overflowing with scorn at the world of Java for having re-invented yet another feature LISP has had since the Epoch and before.

Anyway, my point is, that AOP is clearly accomplishing two different things here. (Maybe these concerns should be separated :-) The first is obviously valuable, and something that pure Java misses. The second is also valuable, but as per Koppen and Stoertzer, is ideally accomplished without resorting to meta-programming and code weaving, which are cool techniques, but render affected functions unfaithful to the source code from which they were compiled, which is never cool.

Right now, AOP is an add-on to Java, but I'd like it to become more fully integrated with the language before using it heavily. PCDiff is very cool and the 2nd plugin I'd install (after ajdt) if/when I start doing AOP.