BPEL Adoption Thermometer

Paul Brown @ 2004-12-31T11:07:00Z

John Evdemon (one of the OASIS WS-BPEL TC co-chairs) posted a pointer to an informal survey on Web Services Pipeline. When he posted around two weeks ago, the "What's BPEL?" percentage was an even 50%, and even now, it's only down to 40% with 28% of the respondents saying that they have a BPEL implementation in-house and 23% planning to implement. A little more information about the sample would be interesting, e.g., which BPEL products (FiveSight, Microsoft, IBM, Oracle, ActiveBPEL, Twister, etc.), which BPEL versions (1.0, 1.1, pre-2.0), how many processes, what size and type of organization, etc., but it's still an interesting thermometer.

If you're looking for information about BPEL, take John's advice and go straight to the source. If you're looking for vendors, you can find a list of the people who've been shaping and refining the specification. "Prospective member" means that they're relatively new; "member" means that they've been around for a while, and the 33 founding members are listed in the proposal.

(comment bubbles) 0 comments

Prevayler, Festivus, and Holiday Whup-Ass

Paul Brown @ 2004-12-27T11:02:49Z

Mike Spille opened a can of Holiday whup-ass for Prevayler. (For old-timers, that's pronounced "batch with restart"...) Given the airing of grievances, maybe Mike is celebrating Festivus, complete with wrestling... I have a few grievances of my own, but I haven't had the time to write them up.

Products and projects should have a simple, objective statement of their functionality and target use cases, and lacking that, they deserve scrutiny and scorn, even on Christmas. This sort of thing needs to happen more often, and it can be -- but seldom is -- accomplished without eviscerating the subject. (In this case, there was already a Prevayler "thread" going over on Ward's wiki.) Hopefully, in the end, discussion and exploration root out the kernel of truth and value for all, and sanity reigns.

For open source projects with digestible code bases, it's reasonable for a suitably inclined individual to sit down and make a critique of the architecture and implementation. But what about more complex projects or commercial products and industry specifications? It's technically not an industry analyst's job to rain down scorn on deserving software vendors, but with consolidation running through the IT analysis industry and many analysts deriving a substantial portion of their revenues from vendors, who's out there to keep vendors honest or make meaningful comparisons? For the vendors, is it better to take the high road or to stoop to the lowest level of marketing among competitors?

(comment bubbles) 0 comments

SnipSnap Overload Corrected

Paul Brown @ 2004-12-19T21:55:54Z

Thanks to some helpful suggestions from "leo" (aka Matthias), an upgrade to the latest 1.0b2-uttoxeter version from 0.5.2a appears to have cured the system load behavior for the SnipSnap that hosts the old pbblog. With SnipSnap 0.5.2a running against a 1.4.2_04 JDK on Debian 3, the load on the server would regularly spike up over 4 and almost never dip below 1 and sporadically segfault, so something was definitely wrong. Now that the cache is built, the server with the SnipSnap 1.0b2-uttoxeter instance is humming along at a much happier 0.08.

(comment bubbles) 0 comments

GAP, Bad Shuffle, and Playing with Permutations

Paul Brown @ 2004-12-15T17:50:50Z

crazybob pointed me to a discussion from MaryMaryQuiteContrary's blog related to an unfair random permutation generator:

import java.util.Random;
public class Puzz {
    private static Random rnd = new Random();    
    public static void shuffle(Object[] a) {
        for (int i = 0; i < a.length; i++)
            swap(a, i, rnd.nextInt(a.length));
    }
    private static void swap(Object[] a, int i, int j) {
        Object tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }
}

The unfairness, as the discussion points out, should be obvious, because there are n! permutations and nn equally-likely possible outputs from the shuffle method. (n! does not divide nn unless n=2.)

One can naturally wonder just how unfair the shuffle method is. For example, how often does it produce the identity permutation? Somewhat out of nostalgia, this is just the kind of thing that I love to spend (i.e., waste) a little time on.

The first thing to do is to work some examples. For this kind of thing, there is a programming language called GAP, complete with an interactive shell, for working with permutations -- along with finite and infinite groups, rings, algebras, vector spaces, and combinatorial structures. (I used GAP and some other packages extensively for my PhD dissertation, and it definitely beat implementing the classic algorithms by hand...) One of the useful things about GAP is that it treats permutations and permutation groups as first-class constructs:

gap> (1,2,3)(4,5) * (4,5,6,7)(1,2);
(2,3)(4,6,7);
gap> g := SymmetricGroup(7);;
gap> s := Centralizer(g,Subgroup(g,[(1,2,3,4,5)]));
Group([ (6,7), (1,2,3,4,5) ])
gap> Size(s);
10

And this makes it relatively straightforward (if a bit brutish) to compute the probability that shuffle produces a trivial permutation:

gap> twocycleorid := function(i,j,n)
>      if i=j then return Identity(SymmetricGroup(n));
>      else return (i,j);
>    end;
function ( i, j, n ) ... end
gap> f := function(n)                                                 
>      local x,s;                               
>      s := [];
>      for i in Tuples([1..n],n) do                        
>        x := Identity(SymmetricGroup(n));
>        for j in [1..n] do                                
>          x := x * twocycleorid(j,i[j],n);
>         od;
>         if x = Identity(SymmetricGroup(n)) then Add(s,i);fi;
>      od;
>      return s;
>    end;
function( n ) ... end
gap>List([2..7], x -> Size(f(x)));
[ 2, 4, 10, 26, 76, 232]

GAP is a very useful tool, but silicon isn't as good as carbon for this sort of thing -- doing anything meaningful with a O(nn) computation will require (wo)man as opposed to machine. Even so, GAP and its ilk can still be useful as substitutes for hand computation when performing experiments. The key, of course, is to use the computer to do things some combination of faster, more accurately, or with more data than you could be hand; I do believe that the skills to compute by hand are the source of the intuition that creates assertions worth testing by machine... In regards to the current problem, consider the following simple obervation for n=7, which is the largest practical value for n on my PowerBook:

gap> g := function(x,y)
>      return x and y;
>     end;
gap> Iterated(List(f(7), x->Iterated(List(x, y-> y=x[x[y]]),g)),g);
true

The same holds for smaller values of n, which would lead one to ask whether every n-tuple that produces the identity permutation also is an involution. By involution I mean that if you were to have, e.g., the sequence of random indices 1, 5, 4, 3, 2 in shuffle, then you would have the permutation defined as:

1 -> 1
2 -> 5
3 -> 4
4 -> 3
5 -> 2

This is an involution, and as expected, (25)(34)(43)(52) (which is what shuffle produces) is the identity permutation. Conveniently, there is a well-known formula for the number of involutions on an n-element set, so the assertion would be that the number of times that the trivial permutation occurs is defined by the formula:

w(1) = 1
w(2) = 2
w(n) = w(n-1) + (n-1) w(n-2)

I don't have any jobs or backpacks to give away, but I'll invite any budding combinatorialists out there to prove the assertion about involutions. (It's not that bad.) If you think you have a proof (or counterexample), drop a comment here, and I'll let you know if it's right or wrong.

(comment bubbles) 0 comments

Orchestration Patterns

Paul Brown @ 2004-12-14T08:39:00Z

Dragos Manolescu's orchestration patterns site now has draft content on-line and an RSS feed. Dragos is taking a high-level pattern-oriented view of orchestration, including runtime, design-time, management, and philosophical considerations. Orchestration, as services from services, will pick up speed as a prerequisite for reuse and recombination in service-oriented architecture, so I'm looking forward to seeing this body of work evolve and expand. (I might even find the time to contribute a pattern or two.)

Note that Dragos's work on orchestration patterns is not to be confused with the work of Wil Van Der Aalst on so-called "workflow patterns" (which would be more correctly called control-flow patterns). Wil's work takes an internal view of control-flow in process description languages with an eye to classifying existing languages (like BPEL) and finding a triple point where the expressiveness and efficiency of process description languages is simultaneously maximized.

(comment bubbles) 0 comments

Thoughts on Free and Open Source Software and the Next Bubble

Paul Brown @ 2004-12-12T22:06:00Z

Albert Einstein is credited with saying that "Compound interest is the most powerful force in the universe." True or false, compound interest and its exponential brethren are certainly among of the most inscrutable forces in the universe, as evidenced by Ponzi schemes, flower frenzies, and most recently the Internet bubble.

Free and open source software (FOSS) is fascinating stuff, but it's also a red herring for the same reason that the Internet was a red herring during the bubble:

No technology or technique permits the suspension of fundamental economics for an infinitely long time.

Someone, at some point, has to pay more for something than that something cost to produce. There are a set of natural questions for the FOSS entrepreneur to answer, and the basics are the same as for any other business:

What do you sell? What does it cost you to manufacture or procure it? To whom do you sell it? By what means? For how much? How many potential customers are there? How do you generate repeat business or other recurring revenue? Who are your competitors? What are the barriers to entry?

The questions about competitors and barriers to entry are the most challenging for a would-be FOSS business -- What would prevent someone from creating something more free or more open and otherwise replicating your business model? How do you prevent a "commercial" business from profiting from your efforts without supporting them? The psychology of the customer is one of the keys to FOSS, so the challenge is that any defensive measures must be implemented in a way that does not topple with any of the pillars of good FOSS citizenship. The naive solutions aren't going to fool any of the faithful. For example, using traditional intellectual property protections like patents (in traditional ways) would be unthinkable, offering a low-end freebie under a GPL license as a lead-in to a traditionally licensed product would be heresy, and asking people to register for downloads or access to documentation would be in exceedingly poor taste.

So, where will the FOSS Amazon.com or Yahoo! come from? There are plenty of interesting case studies out there: RedHat and MySQL are well-enough studied that there are business journal articles about them, and companies like Sleepycat and Zope are a little more off the beaten path but still accessible. Venture capitalists appear somewhat willing to spend money on FOSS business strategies, and people steeped in the community (e.g., Bob) are thinking about the practical challenges in FOSS.

Personally, I don't think there's any big money to be made in FOSS. (In an analogy with the Internet, it's like being a bandwidth provider or hosting company...) People will become well-known and may be financially comfortable running lifestyle businesses, and some people may even become rich; but no one is going to get wealthy directly. (I'm using the Chris Rock scale of money here — Shaquille O'Neal is rich, but the guy who signs his paychecks is wealthy...) The FOSS Amazon.com or Yahoo! will have a business model based secondarily on open source, whether it's support, services, management, or (hopefully) something more creative, only time will tell.

(comment bubbles) 0 comments

Little Differences

Paul Brown @ 2004-12-12T14:11:11Z

You know what the funniest thing about Europe is? It's the little differences...

My wife and I spent the Thanksgiving holidays in Paris, which was a welcome break from work and all things American after the election; the Musée national Picasso Paris and a big SNCF protest which kept us from visiting Musée Rodin de Paris were a couple of trip highlights.

We flew over on SAS (the powered seats were cool, but no wi-fi until next year), and on the way back, I asked one of the Norwegian flight attendants what a danish is called in Denmark. The response was "Wienerbrød", which loosely translates to "bread from Vienna". Go figure.

(comment bubbles) 0 comments

All Posts contains 397 items in 57 pages of 7 items each:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57