June 30, 2003


Sunday was our first trip to a real ballgame: Sea Dogs roundly beaten by Altoona Curve. I have no idea what happened. "4-for-5 with four homers and a double, four RBIs and four runs"? Whatever. Nobody seemed to mind.

Sun, sports, relaxed entertainment. All in all, a great family day out.

June 25, 2003


Breakage likely over the next day or two... site is moving to a new server. Cabezal.com email will hopefully be working again shortly.

Well, that was straightforward enough. This helped.

News to Groove

Wildgrape NewsDesk now posts to Groove. Select a news item, press Ctrl+G, and the item is posted to a Groove discussion space. Very very neat. Download it and give it a try!


Kudos to Daniel and David for making this happen!

June 24, 2003

SOAP 1.2

is a W3C-Recommendation. The Primer has today's date. It's been under development for a while (somewhere near three years, I think).

Important new things: value-adding intermediaries; a REST pattern; and more. This is actually a really nice concise description of REST:

One of the most central concepts of the World Wide Web is that of a URI as a resource identifier... For example, a very important - indeed predominant - use of the World Wide Web is pure information retrieval, where the representation of an available resource, identified by a URI, is fetched using a HTTP GET request without affecting the resource in any way. (This is called a safe and idempotent method in HTTP terminology.) The key point is that the publisher of a resource makes available its URI, which consumers may "GET".
More of that under BeesAndAnts.


(No, not that pie). This is important, necessary, timely. As Tim Bray says:

in some circles “RSS” has become a synonym for “Reliably Spiteful Squabbling.” Kofi Annan and the Dalai Lama might be able to achieve consensus, particularly if they could get Don Rumsfield to credibly threaten peacemaking backup with the 3rd infantry, but life’s too short...

Those VB types

Sean Neville:

The value here is not so much in attracting Visual Basic developers to Java... The real value is in giving non-Java developers and those who are not going to learn any programming language the power to create applications and services through simple tag and script-based development models and highly-customizable components and services that can be imported, integrated, and managed within simple lightweight tools (as opposed to full enterprise IDEs)... these folks – you know, the people in the world who aren’t geeks like you and me – ought to have a better baseline option than Visual Basic and VS.NET.
Right on. Some random data points from my POV: InfoPath, Squeak eToys, Notes, Hypercard. DHTML.

June 21, 2003


Tash has some good pictures.

Patterns for language

Christopher Alexander on patterns:

The idea that materialized in the published pattern language... was done in a way that would allow this to happen on a really large scale. And, what I mean by that is that we wanted to generate the environment indirectly, just as biological organisms are generated, indirectly, by a genetic code.

Architects themselves build a very, very small part of the world. Most of the physical world is built by just all kinds of people. It is built by developers, it is built by do-it-yourselvers in Latin America. It is built by hotel chains, by railroad companies, etc., etc...

One of the characteristics of any good environment is that every part of it is extremely highly adapted to its particularities. That local adaptation can happen successfully only if people (who are locally knowledgeable) do it for themselves.

(via Jon Schull)

Dates And Such

Dave Winer points to Brad Choate talking about RSS 2 Dates and Such.

Proof that brilliance in software development is orthogonal to brilliance in software specifications development.

Java as a language for the masses

Carlos Perez: Java Is a Language for the Masses. Fascinating. With Java, there's apparently been a conscious design decision to reduce language malleability. (And the same would apply to .NET: the namespace becomes a shared vocabulary). Quotes Willam Grosso saying

The single best measure of whether a programming language is worth using is: how well does it support communities. The social aspects of the language dominate the technological aspects of the language
If "worth using" equates to "widely deployed", that would be likely true. Certainly "worth learning" does correlate with "being the default programming language", if only for economic reasons.

Do download Grosso's presentation for some more arguments.

On some level I totally, completely agree: when I'm thinking about building a "platform" level of APIs (which isn't really part of my day job, but I kinda stray onto that territory sometimes). If you're building a platform, the only sensible thing is to build it for the greatest possible, longest lived, most approachable developer familiarity (above, say, performance). One of the reasons that Web Services APIs are a Good Thing.

Brad DeLong: "When I worry

Brad DeLong: "When I worry that America's politics may come to look like Argentina's, I'm worrying about what will happen a generation hence when voters say, 'You never told us that the tax cuts meant that it was unlikely we would get our social security benefits. We want our social security benefits. Now you politicians figure out a way to give them to us.'"

June 20, 2003

Toucan Collaborate

From Virtual Methods: Toucan Collaborate

Toucan Collaborate is a suite of productivity applications for Groove Workspace.
It contains tools for task management, event planning, enhanced discussion, risk management and collaborative document production.
All applications have search, print, spell checker, import and export, bookmarks and advanced word-processing tools built in.
Very nice too. Take the tour.

"Friends are the ultimate exploit"

The Sopranos Meets EverQuest - Social Networking in Massively Multiplayer Online Games:

The offline ties between players also serve as an important component in the enjoyment of the game... Sometimes the offline/online similarities mesh even more, as when a gaming society in a small Swedish town decided to take on EQ. It is not at all unusual to find groups of friends move from one game to another. In such situations the game simply becomes a new environment for a preexisting social network to inhabit.
If you want to see smart mobs in action, MMOGs are a great place to look.

June 19, 2003


I haven't used SVG for ages, although there's a demo-type thing I want to build with it sometime (a "coordination navigator" with GWS->DOM->XSLT->SVG, hopefully about twenty lines of "actual code"). Anyhow: last I looked, SVG was incredibly super-powerful, hence you'd only expect a small handful of conformant-or-very-close implementations (eg. Adobe, Batik).

Nooooo. Things have changed somewhat. Implementations abound. There's SVG support not only in Illustrator, but Maya and even Visio. A major-looking Corel toolset ("dramatically speeds up the development and maintenance of data-driven, enterprise-class graphical applications for Extranets and Intranets").

And, most surprisingly, a standard (W3C Rec) mobile subset (actually two, "mobile" and "tiny") suitable for small devices: J2ME mobile phones, say. Wow.

Historical addendum: SVG was used for the first-ever third-party Groove tool (RAG, injectable version at Cabezal, minor revisions since the original Agora version of Oct.2000 - screenshot here).


These are over twenty years old, so I wonder why I never came across them before. Good aeroplane-trip reading.
A Layered Approach to Software Design (Ira Goldstein and Daniel Bobrow, CSL-80-5, Xerox PARC, December 1980) 1.9 MB PDF

Following the receipt of contributions from a collaborator, the need arises to select some of these proposals and combine them... A design environment should make it easy to examine overlapping designs and to select pieces for combination into a joint design. A layered design facilitates this since coordinated sets of change have been localized into layers.

And then some more:
An Experimental Description-Based Programming Environment: Four Reports (Ira Goldstein and Daniel Bobrow, CSL-81-3, Xerox PARC, March 1981) 3.18MB PDF

June 18, 2003

Groove and Microsoft

Peter O'Kelly:

Microsoft's SharePoint products and technologies... collectively represent the new foundation for Microsoft's collaboration strategy. But Microsoft also has a relationship with another collaboration tool vendor, Groove, and that relationship is worth examining.
The makers of Groove and SharePoint designed them to address different customer needs, and their resulting architectural differences are more complementary than competitive... The exact nature and implications of the Microsoft/Groove relationship are still a bit mysterious, but here are some of the many common elements of the companies' collaboration visions.
A good survey of some of the touch-points. He doesn't go into ehough detail about the awesome practical synergy of the Groove/SharePoint mix (heh, it's true!), nor about how we'll pull InfoPath, Exchange and RTC into a dizzying out-of-the-box realtime KM dance (ohwait, I just made that bit up).

June 17, 2003

There and Back

I've spent a couple of evenings exploring There, and still don't know whether it'll be just huge or just a pictureque backlot with really cute chat-bubbles and conversation-gestures.

There is to Croquet as DisneyWorld is to, say, Stonehenge. There's a certain economic imperative which you just can't ignore - Julian Dibdell's article in Business2.0 gives a really good overview.

Jessica Hammer has a nice observation: "if you plop people down in an environment that's too open-ended, most of them won't enjoy themselves". Maybe that's true, but surely in the long run, scalability will win out.

Two aspects to scalability. One, as Alan Kay says of Croquet, "the key to the idea would be to have it be scalable, without requiring servers". Second, to not lay landmines for unwary users by encouraging them in unsustainable beliefs (privacy or ownership, for example).

Mobile phones' killer app

Russ has found the "killer app" for mobile phones, and it's IRC. Y'know, he could be right.

I never yet owned a cellphone. In the USA that's not so unusual - but in the UK it was becoming downright antisocial not to carry around at least one.

But, well, what are they good for? Ha.

June 16, 2003

More Performant

In my recent JavaScript performance epiphany, I realized just how bad JScript performance can be. I thought I had two options: choose a better language, or resign myself to being a couple of years behind the Moore's Law curve.

There's a third way, and it's interesting enough to tell. .NET. Watch out: I think I just took the red pill.

Thus far, I've managed to avoid the wonders of .NET; I did install the runtime, and even the IDE, but never worked with it in earnest.

The .NET framework includes "JScript.NET": a (fairly complete) implementation of ECMAScript on the .NET common-language runtime. And if you just install the runtime, you do get the compiler. Still the ugly duckling, but it's way faster than the old cscript/wscript.

My anagrams code now runs in 7 seconds. And the arraytest code stressing "for(key in table)" is very dramatically improved:

RunsArray Sizesum1() mssum2() ms

Maybe this really is the best of all worlds: a dynamic language, compiled, with a rich class library compatible across environments. That class library is the learning curve ahead; now, there's no chasm to cross before I start climbing.

Office 2003

Here we go. Office 2003 Refresh on the Horizon:

Technically, the Technical Refresh is not a Beta 3, as in past instances of such a major refresh. Testers should plan on some hefty downloads of the update, which Microsoft does not plan to update widely on CD. The main 'refresh' for Office 2003 is about 139MB, 77MB for InfoPath, 53MB for FrontPage and 27MB for OneNote.

That should choke the pipes for a while, then...

June 15, 2003

Anagram kata

Here's my JavaScript approach to PragDave's Kata 6: Anagrams. Quite an eyeopener.

(Updated version with a threefold performance boost. But still slow!)
(Updated again with some more measurement numbers)

Performance is just awful. Seventy seconds (on my P3/700 laptop). Am I doing something really wrong? Is there an order-of-magnitude improvement to be had with a clever algorithm?

After mulling on it, I don't think so.
Each word from the wordlist needs to be added into a hashtable; the "base" word form, here being the word sorted by its characters, is really just a convenient hash key. I tried a few other types of keys (one literally counting the occurrences of A through Z, and a couple others trying to make a "weaker" but faster hash, thinking to resolve collisions later), and honestly it made no real difference. Slower.

In the end, I have to just conclude that JScript's hashtable implementation (which is fundamental to the language, since it's the basis for method dispatch) totally sucks. Some associated timing (spurred in part by Tim Bray's recent article): JScript "for( key in table )" turns out to be really really slow. Stunningly, incredibly slow:

RunsArray Sizesum1() mssum2() ms

If you can build an array (keyed by number) instead of a hashtable (sparse), it's many orders of magnitude faster to count "for( x=0; x < array.length; x++ )".

In desperation, I turned to Google, and found that Alan Green has a close-equivalent Python implementation running near one second. It's a relief to see that I'm not obviously a dumb programmer. But is JScript performance really this awful? Please, someone, say I'm missing something...!

June 14, 2003

PragDave's Code Kata

These are good. PragDave has a running series of 'Code Kata':

A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer.


Evolutionary SharePoint - Peter O'Kelly takes a quick tour through the past, present and future of Microsoft's SharePoint product suite.

WSS is presented in a nicely integrated Office 2003 interface. Outlook users, for instance, don't need to be aware of WSS details; they'll simply work with the new meeting workspace and shared attachment features as natural extensions to Outlook, much as the users of the earlier OSE could use Web Folders in a conceptual model very similar to the one used for local hard disk folders.

June 13, 2003

Dead Languages Society

On the trail of generators (that's definitely recommended reading if you ever use Python or process XML), I happened on a dissection of SNOBOL. The code sample is, um, interesting. As the author says,

Snobol 4 is a dead language in the same sense that Latin is a dead language. i.e. there are still folks out there who use the language in various ways.
Snobol 4 was a testbed for new ideas. Some of these ideas, like the near total lack of control structures, didn't work out.

June 11, 2003


Who's there?


I've spent the last couple of days at home, one foot swollen twice its normal size. Weird. Can't drink, can't walk anywhere, so I'm cooking up some code.

A couple of years ago, I looked at XSLT, and quickly put it down again: too verbose, too difficult to debug (all that declarative stuff); waaay too slow. But now I revisit it, things aren't so bad. InfoPath (and FrontPage, apparently?) are XSLT-wizards; you get a "90% HTML, 10% XSLT" mix. On the other extreme, my play app's stylesheet is "95% XSLT, 5% HTML" - and still really concise and readable.

The stylesheet is working against a (reasonably big) DOM object model which dynamically updates itself from a variety of web services. That's fun.

Question, for anyone (remember, this is just a back-burner stewing in the corner): if you had a command line interface to Groove, what should it be able to do? What sort of commands would you look for? What shell-type facilities (pipes, etc)? Assume that the main UI is "tail -f" over a stylesheet over a DOM.

InfoPath development

New on MSDN: Introducing InfoPath Development. A good introduction to the object model and development environment.

There are plenty of neat things about InfoPath. A few which aren't mentioned in this overview:

  • The taskpane - HTML, which can interact with your form (to guide users through form-filling, or give other context).
  • The ability to attach event handlers to any part of the DOM, by adding <xsf:domEventHandler> declarations in the XSF...
  • Ditto, for custom validation (although you get UI to do this, too)

June 05, 2003

Design patterns

Ned points to Peter Norvig's site which is chock-full of great things.

Here's one: Design patterns in dynamic programming. There's an astounding amount of depth in there - much of it up to page 50 or so really resonates with why I like JavaScript (I'm still not sure there's anything I'd rather use, although Icon has some very nice concepts, and I'm sure Ruby would grow on me).

June 02, 2003


Here's one of those "wow" moments. Excel and Groove.

Ashok has been working towards this for a long while - building custom data-oriented tools in Groove, edging towards more generic data structures, then a tool presenting a spreadsheet-like grid, then a subset of a real spreadsheet... and, finally, the real thing. Excel, groovy.

This means you can share any spreadsheet, securely and immediately, with others in a space. Changes made by any one user are directly applied to all the others. Such immediacy! Such flexibility!

Nice work. And I have no idea how it's done. Must be magic.