"I have a mind like a steel... uh... thingy." Patrick Logan's weblog.

Search This Blog

Saturday, October 16, 2004

Email and stardecisions.com is back

My domain as well as email to stardecisions.com has been down and in transition (really limbo) for quite a while. If you've sent email to patrickdlogan at stardecisions.com in the last month or so, I probably haven't seen it.

But now I have the domain running on a hosted user-mode Linux box at linode.com. Postfix is running and email is flowing again, for better or worse.

User-mode Linux is a great way to run at least a low-traffic server where you want full control over the systems you run. And webmin is a convenient way to administer all the typical services you'd want to run.

Going Upriver

The documentary "Going Upriver" is available on-line.

Friday, October 15, 2004

Playing with Fire

Dave Winer writes about the Valerie Plame case, in which one or two senior Bush officials very likely broke significant laws...

If it's true that Bush Administration is using dirty tricks to silence critics, playing with people's lives for crying out loud (something that as far as we know even Nixon didn't do), doesn't the electorate deserve to know?
There is significant evidence the Nixon campaign in 1968 played with lives by interfering with peace talks held by the Johnson administration that might have ended the war half a dozen years than what turned out to be the case. The Nixon campaign apparently was sending backchannel messages to the enemy that if they held out for a Nixon victory, the new administration would cut them a better deal. There is also evidence that Johnson and Humphrey were onto the covert operation, but perhaps did not have enough evidence to go public before the election.

Nixon probably played with about 20,000 American lives with this one since the adminstration found it more profitable to continue rather than end the war. Who knows how many Vietnamese, Cambodians, Laotians, and others would not have died had the peace talks ended the war in 1968.

Should anyone complain I am just an ardent Democrat (I'm not even a registered Democrat!) I will also state the obvious that Johnson also played with tens of thousands of lives (at a minimum), through events the least of which was not the Gulf of Tonkin.

Fascism

Fascism: [n] a political theory advocating an authoritarian hierarchical government (as opposed to democracy or liberalism)

From Bend, Oregon, via the Associated Press...

“We chose this phrase specifically because we didn't think it would be offensive or degrading or obscene," said Tania Tong, 34, a special education teacher.

Thursday’s event in Oregon sets a new bar for a Bush/Cheney campaign that has taken extraordinary measures to screen the opinions of those who attend Bush and Cheney speeches. For months, the Bush/Cheney campaign has limited event access to those willing to volunteer in Bush/Cheney campaign offices. In recent weeks, the Bush/Cheney campaign has gone so far as to have those who voice dissenting viewpoints at their events arrested and charged as criminals.

Thursday’s actions in Oregon set a new standard even for Bush/Cheney – removing and threatening with arrest citizens who in no way disrupt an event and wear clothing that expresses non-disruptive party-neutral viewpoints such as “Protect Our Civil Liberties.”

It's time to choose, Americans. Do we move closer to fascism or not?

Lisp T-shirts

Get your Lisp t-shirts now. John McCarthy on the front, and a cons cell on the back.

Here.

(Via Lemonodor.)

Thursday, October 14, 2004

Angels in America

Chris Sell's started Angels in America and did not go for it. Early this morning as a matter of fact I just completed the second of two DVD's.

I thought it was an amazing script presented by several powerful actors (playing multiple roles), produced and directed beyond belief.

Chris did go for Emma Thompson. She plays more than a classic angel, actually something like a hierodule.

Angles in America is a play simultaneously ancient and modern, set in the 1980's, and created with production values from the 21st century.

Daily Zen

Deep among ten thousand peaks
I sit alone cross-legged
A solitary thought fills
My empty mind
My body is the moon
That lights the winter sky
In rivers and in lakes
Are its only reflections.

- Han-shan Te-ch’ing (1546-1623)

Toward a Discipline of Coordination and Action

Don Box on verbs...

I completely agree with the first two paragraphs.

As for the last paragraph, I would argue that HTTP POST is a "coordination" verb and that WSDL is typically used for defining "action" verbs. It's not clear from Patrick's post whether we agree or disagree.

I don't have a large set of examples of SOAP systems, but I've not seen any except for Ruple (PDF) that distinguish between coordination verbs and action verbs. The uses of POST are typically many clients to one server, where the server coordinates the sessions to perform each request. So I don't see a clean distinction there either, in practice or intent.

A new set of verbs or a new discipline (like this one from Vanessa Williams) will be required to achieve the distinction. Again, Ruple is an example of a new set of verbs for coordination. (Was it just ahead of its time, or would it have been more successful if the implementation was more open?)

WS-Transfer (PDF) , like Ruple, appears to be a set of SOAP verbs for coordination. The intent is not as clear to me (it's new without much to go on save the spec itself), at least not as clear as with Ruple. Assuming the intent, I am then not sure about the relative value of WS-Transfer vs. Ruple. For example, Ruple (based on Linda) uses content-based addressing via XML patterns and queries, while WS-Transfer uses direct addressing, WS-Addressing (PDF).

Is this a problem, given a separate query mechanism that yields a direct address that becomes the target of a transfer method? I would argue that (but experience will tell whether) this complicates the coordination responsibilities of the participants. Consider a query-then-delete sequence. In Ruple this is one atomic method. In WS-Transfer a mechanism or convention outside of the specification itself is necessary to coordinate this sequence.

As referenced above, Vanessa William's Restful Tuple Spaces is such a convention using HTTP methods. As she writes...

Clearly, this isn't as simple as sending a few SOAP messages back and forth over some reliable message service.
Maybe there is a need for one more WS-xxx. (Did I say that out loud?)
BTW, Patrick, I hope you'll be at the SellsCon next week.
I can't make it this time, and the location is perfect. I've stayed there, it's great, so maybe this will become its new home.

Tuesday, October 12, 2004

Micro-Workflow: Separating Coordination and Action

Dragos Manolescu's Micro-Workflow is another example of separating "coordination verbs" from "action verbs".

Paradigms of Coordination

What I would consider paradigms of coordination: CSP, Linda, Erlang/OTP, and OVAL, nee Object Lens, nee Information Lens. I'm sure there're some good ones I've omitted.

One thing each of these have in common: the separation of verbs for coordination from verbs for action.

Number 24

Three Days of the Condor is 24th on the Netflix Top 25 in Classics. I have to watch this movie several times a year, but I had no idea of its overall popularity.

His name is Joe Turner -- code name, Condor. In the next 24 hours, everyone he trusts will try to kill him. Robert Redford stars as the CIA researcher who returns from lunch to find all his co-workers murdered. Double-crossed and forced to go underground, he kidnaps a young woman (Faye Dunaway) and holds her hostage as he unravels the mystery. Conspiracy films don't come any better.

Monday, October 11, 2004

Verbs for Coordination, Verbs for Action

This is a restatement of the previous item...

I think the fundamental problem is we need to distinguish between verbs for coordination and verbs for action. Verbs for coordination should be a small fixed set that describe the putting of messages into (and taking of messages from) a shared space.

Verbs for action (e.g. to reboot some machine at some time) by their very nature will be larger and less stable. Certain domains have more stable sets of verbs than others, and many others would be expected to stabilize with increased use.

Requesting an action of another participant in the system consists of putting a verb for action in a message, and using a verb for coordination to get that message to the participant. Overloading POST or creating new WSDL definitions are examples of conflating these two kinds of verbs, those for coordination and those for action.

Verbs for Doing One Thing Well

One "take away" from this essay by Bill de Hora on the problems is there are significant problems with overloading POST in HTTP as well as falling back to defining new verbs beyond those in WS-Transfer.

Here's the root of the problem with these vocabularies.

I wrote last year...

Every web site that implements custom behavior using forms with GET or POST is an example of the open ended nature of HTTP per se. The architectural style of REST supports the HTTP transport protocol underlying these forms moving across the web, but the application protocol, that is, the behavior of the forms on the client and especially on the server is defined (at least in code) by each specific instance.

Distributed systems wishing to use HTTP, or more generally REST, to perform coordinated work will therefore require some more specifically defined application interface than that provided by REST, or that provided by HTTP.

(Of course I no longer refer to HTTP as a *transport* layer protocol!)

The problem I believe is that the verbs in HTTP as well as in WS-Transfer are attempting to accomodate not only message coordination, but also participant behavior. The problem is developers, if not the specification authors themselves, are thinking of these protocols as communication between a second-class participant (the "client", if you will) and a first-class participant (the "server", if you will).

Our habit is to attempt to overload the verbs of these protocols with our desired "server-side" behavior. This is what happens in the current Web (Web 1.0) where the client is the browser and the server is assumed in most cases to be a database-backed web site. The web site essentially provides the illusion of trees of static pages, but we allow for dynamic update, mostly through forms.

This does not translate cleanly to Web 2.0 with dynamic networks of peers coordinating nearly autonomous actions through semi-structured messages. Overloading verbs such as POST or extending "fixed" vocabularies such as WS-Transfer, as Bill and others have shown, is not "loosely coupled".

The more clean solution I think is to allow each verb in a small fixed set to do one thing well. And that one thing should not be overloaded. Ever.

A good way to do this is to separate message coordination from participant behavior. This requires at least the conceptual or logical separation of the message store (i.e. what was the tree of pages in Web 1.0) from *all* participants, including that participant we want so much to call "the server".

Again, a tuple space is a model for this separation of concerns. The tuple space is the message store. The verbs for coordinating messages into and out of that store never have anything to do with the behavior of any participant. Each verb does one thing well with no overloading and no extension. (There has been a good deal of research into what's the right set of verbs, but the core is pretty solid.)

In this world, the decision of what verb to use for rebooting a machine is moot. The message store is merely a location for storing messages participating in a conversation. If one of those participants choosing to reboot (or reboot something else) then that is the responsibility of the participants in the system.

This side effect is decidedly *not* the responsibility of the verbs used to coordinate messages!

Sunday, October 10, 2004

Ingredients for Post Modern Computing

Quoting Sean McGrath from another item...

JVM + dynamic languages + XML + servlets + asynchronous messaging, which, to my way of thinking, are most of what is needed for flexible, scalable Web Services at least for the next century or so.
Let's look at these ingredients:
Asynchronous Messaging
Yes, this is the foundational paradigm.
XML
Well, yes, because that's what's expected. OK.
Servlets
OK, if you take this generically to mean some kind of simple framework for plugging in responders to external requests (e.g. see the design of SmallWiki in this PDF).
Dynamic Languages
Of course. Goes without saying.
JVM
Huh? Nope. I draw the line here. Why is the JVM necessary or desirable, even for cross-platform languages?

Patterns of Rest in Action

Sean McGrath writes...

I'm very dubious about Don's assertion, mentioned by Mark, that once you get (no pun intended) uniform interfaces based on verbs, you see the benefit of creating domain-specific, verb-based interfaces.
Verb-oriented developers should read a couple of foundational books (i.e. this and this) to see "rest-like" counter patterns and examples.

Sunday, October 03, 2004

On WS-xxx, CORBA, and DCOM

After demonstrating the simplicity of CORBA under Smalltalk, James writes...

The main reason that WS* is succeeding where CORBA failed? Port 80
I would agree that WS-xxx succeeded in capturing the imagination of the industry because of port 80. I am not sure WS-xxx could be considered a technical success at all yet. (If you think it is, then I'd like to see the list of success stories to judge for myself.)

I'm not crazy about CORBA, but implementations were getting good performance, less expensive, and open sourced before WS-xxx came along. (Note that IIOP did not come along until late in CORBA's history.) There is no reason CORBA could not have worked on port 80. WS-xxx is simply a more successful (broader) diversion than DCOM, because technically DCOM was even worse. As Don Box pointed out, would have been hell to get running on Unix. (They tried.)

But WS-xxx has a long way to go to be a technical or industry success.

Friday, September 24, 2004

Uniter or Divider?

Maybe we should determine the request of another term from Mr. Bush on the answer to one question. In 2000, Mr. Bush clearly claimed to be "a uniter, not a divider."

Well, is he a uniter or a divider? (Arm twisting shouldn't count.)

Thursday, September 23, 2004

Kingdomality

Another survey is making the rounds. Here I am...

Your distinct personality, The Dreamer-Minstrel might be found in most of the thriving kingdoms of the time. You can always see the "Silver Lining" to every dark and dreary cloud. Look at the bright side is your motto and understanding why everything happens for the best is your goal. You are the positive optimist of the world who provides the hope for all humankind. There is nothing so terrible that you can not find some good within it. On the positive side, you are spontaneous, charismatic, idealistic and empathic. On the negative side, you may be a sentimental dreamer who is emotionally impractical. Interestingly, your preference is just as applicable in today's corporate kingdoms.

Daily Zen

Daily Zen...

Because you grasp labels and slogans,
You are hindered by those labels and slogans,
Both those used in ordinary life and those
Considered sacred.
Thus they obstruct your perception
Of objective truth,
And you cannot understand clearly.
- Linji (d. 867)

Not Innocuous

Mark Baker responds...

"innocuous"? I wouldn't say that. I think it's actively harmful as a name for an architectural style. As I see it, "SOA" means different things to different people...it does nothing to constrain how one might go about building distributed systems.
Fair enough. I've not seen the harm yet, but there's still time. 8^/

Wednesday, September 22, 2004

REST and SOA

Mark Baker writes...

Gartner's claim that REST proponents rag on SOAP is backwards; we like SOAP, mostly. We just don't like SOA.
I consider myself a REST convert, to the extent I think I understand it and its incarnation in HTTP. Though I don't understand the position above. Is there even a concrete definition of SOA with which to make this statement?

I thought SOA was a fairly innocuous term, being so vaguely defined that an SOA could be built using REST and HTTP.

Deleted Post

Radovan Janecek writes...

Patrick's post looked like I don't like criticism or discussion. Btw, it seems he removed his 'Criticism', entry. Hmm.
Yes, I was in a hurry, saw your comment that I misinterpreted you, and took the fast route of just deleting the post, leaving no trail. Worked in a pinch, rather than leaving my misrepresentation up on the site for a day.

Tuesday, September 21, 2004

MBF and WinFS: a False Dichotomy?

Tim Brookins writes more about MBF and WinFS. This pleases me because I want to like MBF and WinFS. But it concerns me because I'm uncomfortable with the direction they're taking. I should say I like the high-level intent to support building domain-driven designs and flexible databases. But...

Wouldn't it be fantastic to finally let users see their Customers and Orders in the shell?
I think these days they want to see them easily from any device, any location. That would mean the Internet browser rather than the Windows shell. Why the shell? That's outdated. I don't even want to see the shell, period.
ISVs really need one combined platform which merges the best of the WinFS and MBF data persistence stories.
Most ISVs are building world-wide web applications these days, aren't they? They need a simple user interface and a flexible database. In tomorrow's mobile world, a flexible database will not have a single location...
While WinFS synchronization is great for keeping your pictures synced across machines, it really isn't going to be viable to build a multi-user business application. So you need the server-side N-Tier capabilities that MBF provides.
This seems to be a false dichotomy. I've seen too many domain-driven systems become prematurely obsolete from built-in dependencies on specific underlying mechanisms. We need objects that can live a dozen years or more. This is demonstrably *not* the way to do so.

MBF should be an arms distance from WinFS, Indigo, Avalon, SQL Server, etc. I've already stated WinFS should be a more flexible database rather than an elaborate file system.

Nukes

Ted Leung points to a rosy article in Wired about pebble-bed nuclear reactors as a "safe" way out of the energy crisis.

Even if this approach is safer, is it safe?

The article does not address a couple of, well, problems:

  • Security ("dirty" bombs, anyone?)
  • Waste Management.
Oh, the article *does* address waste management...
And with the fuel sealed inside layers of graphite and impermeable silicon carbide - designed to last 1 million years - there's no steaming pool for spent fuel rods. Depleted balls can go straight into lead-lined steel bins in the basement.
Looking around at our world's politics, not to mention science, I have to sigh just a little at the phrase "designed to last 1 million years". We have no true concept of this.

Monday, September 20, 2004

Python and Code Blocks

Hans Nowak is wondering about code blocks in Python. While Python's anonymous (lambda) functions are fairly awkward, Python does do a kind of "Currying" over self. The following code shows the simpler mechanism Hans is looking for...

Jython 2.1 on java1.4.1_01 (JIT: null)
Type "copyright", "credits" or "license" for more information.
>>> class FooBar:
...   def foo(self):
...     print self
...     print "OK?"
...
>>> fb = FooBar()
>>> fb.foo()
__main__.FooBar instance at 17493979
OK?
>>> fb2 = FooBar()
>>> fb2
__main__.FooBar instance at 24940415
>>> fb2.foo()
__main__.FooBar instance at 24940415
OK?
>> fb2.foo()
__main__.FooBar instance at 24940415
OK?
>>> fb.foo
method FooBar.foo of FooBar instance at 17493979
>>> fb2.foo
method FooBar.foo of FooBar instance at 24940415
>>> 

Saturday, September 18, 2004

WS-Transfer Comments Elsewhere

Update: Other useful quotes from Tim Bray...

I’m deeply suspicious of “standards” built by committees in advance of industry experience, and I’m deeply suspicious of... multiple layers of abstraction that try to get between me and the messages full of angle-bracketed text that I push around to get work done.
And Sean McGrath writes...
The whole WS standards thing has more moving parts than a 747. Much of it recently invented, untested and unproven in the real world... there are no exceptions to Gall's Law:
"A complex system that works is invariably found to have evolved from a simple system that worked."
Originally I quoted jeff schneider writing...
I am of the opinion that the WS-* spec teams are doing a severe disservice to the community by releasing these specifications without also identifying the best practices. In my opinion, it is no longer acceptable to release paradigm changing specifications without also releasing an implementation or best practice guide to go with it.
I could not agree more. The argument could be made there is a good bit of experience with these particular verbs. I think that argument is implicit (read below). But such an argument would be invalid. By far the majority of experiences with these verbs is unrelated to the kinds of systems this spec is intended for. Clearly this kind of a shift should be accompanied by references, examples, and best practices.
Standardizing verbs is good. I was a bit curious why the group didn't create a 'verb extension' or 'verb introduction' mechanism, but rather just 'hardcoded' a handful of verbs.
I am thankful they did not. Better to get experience with a fixed set and expand on that later if warranted.

Friday, September 17, 2004

WS-Transfer

Web Service Transfer (WS-Transfer)

Sorry. For some reason MSDN decided not to put tags inside the page. If you scroll down a few screensful, you will find the definition in a PDF and this abstract...

WS-Transfer defines how to invoke a simple set of familiar verbs (Get, Post, Put, and Delete) using SOAP. An application protocol may be constructed to perform these operations over resources.
Why, yes, these verbs do seem familiar. This makes them easier to adopt into a brand new spec, I guess. But does that make them the right set of verbs?

These verbs are workable in HTTP. But are they desirable when starting over? Do they facilitate automated coordination of distributed, asynchronous resources as well as any other set of verbs?

This spec looks to me like the easy way out of the job of hypothesizing, discovering, and validating something potentially more useful. Curious HTTP is not listed in the references. Neither are any landmark writings in the history of coordination mechanisms.

Sigh. While this could be seen as a simplified path out of the deep, dark woods of the WS-xxx, instead it is a cheap short cut avoiding or at least lacking much evidence of deep thought. Typical for WS-xxx then.

Wednesday, September 15, 2004

Florida Power & Light and Gemstone

A story from Charles Monteiro about FP&L's use of Smalltalk and Gemstone in their call center and trouble management systems.

I was pleased to know that the call center systems I had helped build were still standing and so was the trouble call management system among others.
Me too, then, I guess, in a smaller way. I wrote the Gem multiplexor that removed the "1 user / 1 OS process" restriction, to scale up the number of client connections to numbers approaching those claimed by the sales people years before. FP&L was one of the first customers to use it. Supposedly there was one situation where the Gemstone system kept running on Unix while IBM had to come in and patch the TCP/IP stack on the mainframe part of the system. Gemstone then cranked back up to full speed.
I am glad that so far those systems have weathered the Java marketing hype hurricane.
Yeah, that's great. Unfortunately Gemstone had barely developed federated Stones, multiplexed Gems, and better DB connections just before putting those efforts on the shelf in favor of the Java grail which not surprisingly never materialized. They continued making money from Smalltalk.

GNU Smalltalk and GTK+

From OS News...

"Hey - did you know that GNU Smalltalk now has GTK+ bindings? This is pretty sweet."

Saturday, September 11, 2004

Wandering About in the Past

I miss the Greater Boston Chapter of the ACM, in particular their in-depth workshops like the one coming up on Parrot.

About twenty years ago, Adele Goldberg was president of the ACM. She gave a talk to the GBC-ACM, and a Saturday before or after someone held one of those all-day Saturday workshops on Smalltalk. That was my first exposure to Smalltalk and circuitously led to the Mainsail programming language being ported to the Data General 32-bit Eclipse CPU.

The Alto was based on the DG Nova, and Data General was one of the first licensees of Smalltalk, but I never saw Smalltalk running on any DG hardware. Mainsail (a "managed runtime" in today's dry terminology) almost became the primary application development language for DG's workstations. Unfortunately C and Unix had captured a lot of imagination in the early 1980s and DG followed that road, ultimately to destruction, as HP did to Apollo.

Hmm... Synchronization

Steve Gillmor wites:

Hmmm…synchronization. That rings a bell. Oh yes, the Alchemy stuff that Adam Bosworth was working on at BEA before he left to join Google. The Alchemy framework establishes an intelligent cache layer between the server and the browser client, allowing robust support for transactions and off-line support within standards-based browsers, just what Google needs to extend Gmail and other services to enterprise customers to G-Spot.

And Starring Pancho Villa as Himself

I recently saw "And Starring Pancho Villa as Himself" on DVD. The movie is good, I'd like to read more about Pancho Villa now.

The main disappointment was the DVD's extras. I would have wanted more historical background on Pancho Villa. Larry Gelbart's running commentary is interesting.

Services and Data

A pretty good exposition of services and data within and across service bouindaries from Microsoft. Something is lacking though...

SQL makes a great tool for representing data on the inside of services. These strengths are inextricably linked to the bounded nature in both space and time of SQL, which make it fantastic for representing data on the "inside". Unlike XML, SQL has strong querying capabilities. SQL's makes comparisons between almost anything within the bounds of the database. Because of SQL's bounded nature, however, it is incapable of the strengths of XML in the "outside". SQL does not offer independent definition of schema as it depends heavily on a centralized and tightly coupled DDL.
What's wrong with this? It's out of focus.

At some point though developers will have to address data models as opposed to data notations. What are good models within and across service boundaries, whatever the notations used to representation and query? I have some ideas, but I'd like to see these ideas addressed more broadly and deeply.

Friday, September 03, 2004

Daily Zen:
Over the course of centuries, Zen has branched out into different schools With individual methods, But the purpose is still the same- To point directly to the human mind.

Yuan wu (1063-1135)

How Absurd!

Nelson captures the absurdity...

I give the Bush campaign credit for their evil powers. There's a debate about the war record of Bush and Kerry. Whose service are we questioning? Are we talking about the Texas Air National Guardsman who flitted off to Alabama where no one can tell if he he really showed up for duty and he even lost his pilot qualification before leaving early to go back to school? No, we're debating the record of the the man who went to Vietnam and was awarded many medals for his leadership and service.

To win an election, the first thing you have to do is control the terms of the debate.

Daily Zen:

Let go of all your previous imaginings, opinions, interpretations, worldly knowledge, intellectualism, egotism, and competitiveness; become like a dead tree, like cold ashes. When you reach the point where feelings are ended, views are gone, and your mind is clean and naked, you open up to Zen realization.

After that it is also necessary to develop consistency, keeping the mind pure and free from adulteration at all times. If there is the slightest fluctuation, there is no hope of transcending the world. Cut through resolutely, and then your state will be peaceful. When you cannot be included in any stage, whether of sages or of ordinary people, then you are like a bird freed from its cage.

Yuan wu (1063-1135)

Back to the Future

Ralph Johnson writes:

Do you want to know what software will be like in ten years? In twenty years? Learn Smalltalk.

Wednesday, September 01, 2004

Tuple Spaces Again

Tuple-spaces represent an extreme in loose coupling.

A tuple space is an extremely flexible set of shared data structures (semi-structures?) with a simple pattern-based API for reading and writing that data.

The referenced DDJ article is about tuple spaces and grid computing, which is a match made in heaven.

True Advances?

I pointed out that the single most important productivity tool in modern languages is intellisense... without it, he can't hope to pull the language into the '90s.
Intellisense?

What made me most productive in the 1980's was Lisp and Smalltalk. What made me most productive in the 1990's was Smalltalk. After the Java "revolution" (which made me less productive) what made me somewhat productive was the Internet search engine (Hotbot, then Google, IIRC).

How so? Javadocs. Looking up API information was faster on the net than on my hard drive once the spiders had indexed so many Javadocs.

I've used Intellisense-like features in Lisp environments since 1981. They *are* handy. I don't think I ever used anything like it in a Smalltalk tool. For one thing, Smalltalk uses keyword messages, which are in themselves descriptive. I think this reduces the need for Intellisense.

Frankly though the other aspects of Lisp and Smalltalk environments were more productive than Intellisense per se in a Java-like language. Primarily, the languages themselve are just simpler *and* more expressive. Secondarily, the source to the systems is present at the click of the mouse. (Or Meta-dot key stroke.) Thirdly, all the other sorts of browsers, workspaces, inspectors, debuggers.

Software Engineering vs. Marketing

Miguel de Icaza:

Complexity: The Avalon API has a very large surface area. To get an idea, the Button class is number 11 on the inheritance chain with ButtonBase, ContentControl, Control, FrameworkElement, UIElement, RetainedVisual, Visual, DependencyObject, UIContextObject and Object as its base class.

My prediction is that Avalon v1 will be a throw-away: it is not really the foundation on which you will build applications: V2 will likely not be backwards compatible, they will have to re-architect bits of it: which means that people will end up with two frameworks running side-by-side: Avalon V1 and Avalon V2.

I do not think I could have solved a problem of this magnitude, am sure the complexity is huge and the Microsoft folks are doing their best, but maybe a change in the way that features are interlocked and how those are delivered to users must be rethought.

Monday, August 30, 2004

Shoehorning a Post-modern MSFT

Shoehorn := Longhorn - WinFS

I maintain, with more evidence, that WinFS is a bad idea.

The intention is good. The choice of delivery vehicle (i.e. a "file system") is not so good. Once again, the problem seems to call for a simplification of dynamic, semi-structured, shared databases rather than a shoehorning of these concepts into a future Longhorn file system.

The advantages of the database approach has engineering merit as well as marketing.

Perhaps there was marketing merit in moving O/R mapping and business domain frameworks into WinFS. I didn't see it, and I certainly don't see the engineering merit.

Will we see ObjectSpaces and MBF pulled back out into cross-MS-platform capabilities? Avalon has joined Indigo in this regard. Why not the rest?

MSFT should make WinFS a across-MS-platform-or-wider improvement on *databases* rather than file systems, and all the Longhorn components make engineering sense, probably marketing sense.

And MSFT should make this an opportunity (along with IronPython) to continue down the path of a post-modern approach to systems development.

Sunday, August 29, 2004

Electronic XPlorations

I taught Extreme Programming for the first time in about four years. A couple weeks ago, the class was made up mostly of an intact team, about 15 people in all. The interaction was lively.

Last week there were 32 people mainly from three teams. That's the largest single class I've had. For one reason or another (many of them were embedded systems developers, for example) the first day the whole class participation had some skepticism and generally was just quiet. (The small group break-out discussions were lively.)

I went home concerned that first day. Fortunately the remaining days were primarily full of activities. The whole class discussions were more typically lively in spite of the class size.

And now here's the point of this post. I found an interesting on-line tool, Electronic XPlorations, which turned out to be a great device on the last day of the second class. I wanted the class to talk to each other in review. This tool is a simple Java applet for four teams playing "problem" cards and applying "solution cards" and "value cards" to collect points. (I hoped, intended, and realized the goal of making the awarding of points fun rather than competitive.)

The great aspect of the game is that for a team to win points, they must explain the play they're making to the other teams. The others may challenge the explanation, and eventually accept or deny it.

Try it out.

Thursday, August 12, 2004

Courtesy Implementations

Martin Fowler discusses Courtesy Implementations in Java-like languages. (Oddly he uses Ruby, which is capable of the solution presented in Smalltalk below.) These are more easily done in languages that trust you to extend the "system" classes. Moreover...

What if the Box can contain other kinds of objects that don't inherit from Node?

Object>>elephantCount
    "This is only installed in your boxed elephant application."
    ^0

Elephant>>elephantCount
    ^1

Box>>elephantCount
    ^children inject: 0 into: [ :count :child | count + child elephantCount]

Wednesday, August 11, 2004

May the best VM win?

A good deal more information on pycore, the Python implemented in VisualWorks Smalltalk. The good news is based on a fairly simple implementation, not on the performance-oriented ideas still in design. So is the race on for comparing the performance of pycore and IronPython? IronPython is more complete, but performance-wise, pycore is showing more potential at this point.

Quoting from the pycore item...

The interpreter is currently complete, except for 'exec'; the simple translator is substantially behind; and the optimized translator is only at the design stage. Nevertheless, some Python programs run faster even with the pycore simple translator than with CPython, for example:

  • Recursive fibonacci function, 9x faster
  • Iterating over a large list of integers, 5x faster
  • Creating a list element-by-element, 2x faster
  • Accessing an attribute by calling a method, 2.5x faster

Not "what", "water"

And Bill is an enzyme, while I am water... Water
You are water. You're not really organic; you're
neither acidic nor basic, yet you're an acid
and a base at the same time. You're strong
willed and opinionated, but relaxed and ready
to flow. So while you often seem worthless,
without you, everything would just not work.
People should definitely drink more of you
every day.

Which Biological Molecule Are You?
brought to you by Quizilla

Mmm

I'll take just the Bailey's and the Kahlua.

Why...

Why Societies Need Dissent

How *much* hippie?

Blaine is 34% hippie, but with pride...

I AM 55% HIPPIE!
55% HIPPIE
I am not a child of the 60’s but my heart is true to the cause, man. I realize that being a hippie is not just bell bottoms and tie-dye. It is also about the drugs and smelling bad, too!

Tuesday, August 10, 2004

Clearcutting in search of the truth

The Guardian...

In an interview with the Associated Press, McCain called the ad "dishonest and dishonorable." Asked if the White House was behind it, McCain said: "I hope not, but I don't know. But I think the Bush campaign should specifically condemn the ad."

White House spokesman Scott McClellan declined to do so and instead criticized the financing of the ad, saying the president "deplores all the unregulated soft-money activity." McClellan said the Bush campaign had nothing to do with the ad or the group behind it. "We have not and we will not question Kerry's service in Vietnam," he said.

Jim Rassmann, an Army veteran who was saved by Kerry, said there were only six crewmates who served with Kerry on his boat. Five support his candidacy and one is deceased.

Eschew Special Case Languages

Another example of languages with special cases causing conflicts.

Another reason "constructors" should just be a regular message sent to a regular object. You already understand the simple, regular rules...

In the Smalltalk language, everything is an object. This includes not only numbers and all data structures, but even classes, methods, pieces of code within a method (blocks or closures), stack frames (contexts), etc. Even if and while structures are implemented as methods sent to particular objects.

Monday, August 09, 2004

YMMV

The Eclipse IDE makes language choice irrelevant?

I'm dubious. I've not used Eclipse in depth, or in a year or so, but I think this may be overstated unless Eclipse is using Java as a target notation for a more expressive source language!

Some kind of a showdown: But what kind?

I am not exactly sure what Jon is asking for in his Showdown at the VM Corral.

What I think we need is a way to connect lightweight processes from multiple runtimes and distributed runtimes as easily (and simultaneously as *robustly*) as lightweight processes can be connected in Erlang.

We need to think less about the VM (and even less than that about the OS) and more about (sometimes distributed) interprocess communication. But we need to do this without the heavy burden of the WS-* ice field.

Sunday, August 08, 2004

Python in even more places...

Bill lists the platforms Python runs on.

But Python is also at least embryonic on the PLT Scheme platform and Peter Deutsch, ACM Fellow and one of the best VM engineers on the planet, is leading the pycore effort to get Python running on VisualWorks Smalltalk and perhaps Squeak.

Apparently pycore has a small number of tests running significantly faster than CPython.

Saturday, August 07, 2004

Oregon may regain its conscience

Rather than follow Missouri into ignorance, a new poll suggests a measure to put a gay-marriage ban into the Oregon constitution could be in trouble.

Ignorance must be bliss.

Tuesday, August 03, 2004

Creative Thinking

"I once asked Ivan, 'How is it possible for you to have invented computer graphics, done the first object oriented software system and the first real time constraint solver all by yourself in one year?" And he said "I didn't know it was hard."
-- Alan Kay on Ivan Sutherland.

Magnificent

I'm back from two weeks in Jasper and Banff, in Alberta.

Friday, July 16, 2004

Bush is a Word Weasel

Bush says Kerry does not support the troops and "There is nothing complicated about supporting our troops". But does he walk the talk?

In spite of this simplistic sound bite, Bush has actually cut support for the troops in terms of pay, veterans' benefits, and, oh, yeah: even meals available to active troops in Iraq.

And what's that issue about lack of sufficient armor?

The word weasel also weasel'd out of serving appropriately during the Vietnam war. What did Kerry do? Oh, yeah, earn several earn several purple hearts and a silver star.

I would not hold avoiding service against anyone because, based on my beliefs, I would have to be a conscientous objector and serve in a non-combat role. But Bush did not take this approach... he weaseled.

Bush is a lying weasel that clear thinking Republicans should not tolerate. Kerry and Edwards (again despite the rhetoric) have very moderate voting records in the Senate. They are in actuality much closer to a moderate Republican's beliefs than is Bush.

The lying-dangerous-to-the-world-and-our-troops-weasel Bush.

Thursday, July 15, 2004

Software that Lasts

Dan Bricklin's essay on software that lasts 200 years reminds me of s similar idea from Ward Cunningham on software lifecycles...

First, the notion of a program life cycle admits failure from the start. If we are to have a life cycle, let us make it long. One hundred years cannot be beyond reason. Second, analysis as an activity to be conducted independent of implementation [see correspondence] again presumes implementation artifacts to be short lived and of little value. These ideas have become self-fulfilling prophesies. Although they apply in the current circumstance, they have become barriers to change from that circumstance. They impede progress in object-oriented programming.

The cause of flexibility will not be served by merely discrediting life cycle or independent analysis. To make progress we must examine the system of practices that have lead to these principles, discard those practices justified only by habit, construct new practice where human nature alone is insufficient, and then describe the whole with metaphor that implies useful longevity for the programs we make.

Of course we want and embrace change if for no other reason than that change is inevitable. So a great component of a realistic response to these challenges will be addressing what it may mean for software to both *last* and *change* at simultaneously.

What OOPSLA Has Become

Twenty years ago, the monthly Communications of the ACM was something to look forward to. Fifteen years ago, I guess, it had morphed into something not much better than Dr. Dobbs.

Fifteen years ago, OOPSLA was something to look forward to. Recently it has morphed into something not much better than SD West.

My first clue was the last time OOPSLA was in Vancouver. The first night's social activity was to have some celebrity OOPSLAer's name taped to your back and you had to go around asking questions to guess the name. A small group of us immediately hit the bars and had a blast. Don't know how the game turned out.

More recent evidence.

Wednesday, July 14, 2004

Boo hoo

I guess it's pile-on time from the dynamic language zealots, including me!, around Boo, a language that may have some promise. This post does not pile on Boo, rather, on its critic at http://www.panopticoncentral.net

I will add that one major problem with our compilers today is that entirely too much information is locked up in them. We've started exposing compilation information through mechanisms such as the Visual Studio code model, but we need to go a lot further to enable more advanced and extensible tools. It's certainly possible to expose a lot more information about what exists in the code that's being compiled without having to make that information modifiable outside of the compiler, and I think that's something that's unquestionably worth pursuing in the long run.
Complexity begets complexity. Rigid languages are the foundation of a "langauge priesthood" just as humongous mainframes were the foundation of a "computing priesthood" before the personal computer.

The author is apparently against "extensible languages". Arguing against "extensible languages" while promoting C# is an oxymoron. It's just that C# has crippled the extension mechanism and will be reinstating them over time in slightly incompatible syntaxes.

Tuesday, July 13, 2004

Understanding Continuations

Ian Bicking has an operational, concrete description of how continuations work.

Here's another way of explaining that sometimes works...

  • Imagine running some code in a (good, hypothetical) debugger.
  • Step through the code at the finest level of detail.
  • The "step" command is what the code will "do next, atomically, then stop".
  • The "continue" command (continue without stopping again) is what the code will "do next and thereafter".
  • The "continue" command is the debugger's way to access a continuation.
  • The Scheme function call-with-current-continuation is like the "continue" command of this hypothetical debugger.
  • The difference is rather than having the debugger get access to the continuation, your code itself gets access to the continuation, "disguised" as a procedure rather than as a debugger command.
  • Like any Scheme procedure, this "continuation procedure" can be called over and over again.
  • Like any impure language, though, Scheme side effects like assignment and I/O are not purely functional and so subsequent invocations of the "continuation procedure" take place in the state of the system resulting from earlier side effects.

What's a Data Warehouse for?

Peter Nolan, esteemed DW'ist, writes in the venerable dwlist mail list (subscribe, archive) what he thinks a data warehouse is for...

Instead of making the right data readily available to the people who really need it with tools they can really use to do what could make a really big difference to the business we gave everyone a pretty dumb browser interface and we gave lots of people access to data that they have barely any earthly use for other than to fill up their 8 hour working day fiddling around with it. Oh, but these dumb web interfaces have nice pretty charts and buttons and things and that makes all the difference.....hhhmmmmm.

...in any organisation, there is only a very limited set of decisions to be made which drives only a very small number of 'questions' compared to the set of 'all questions that could be asked'. If a DW project concentrates on 'the set if possible questions that will make a major difference to the organisation' and collects the data for that rather than 'any possible question' and collects the data for that, the project is far more likely to be successful.

More of his thoughts along these lines are in an Intelligent Enterprise article from 2001.

Monday, July 12, 2004

Reason #42

"Scientists horrified by Bush's Bad Science"

What started as a group of 62 scientists fighting what they saw as Bad Science being practiced by the Bush administration has now bloated to a body with more than 4,000 whitecoats calling for change.

Sunday, July 11, 2004

Jesus' General on Suspending Elections

The General speaks...

I understand that you have a tough sell. I'm sure there are many who have pointed out that elections have never been suspended before, not even during the Civil War when our very existence as a nation was in danger. These people fail to understand the nature of the threat today.

Bottom feeding with style?

James Robertson and Michael Lucas-Smith will be presenting in Canberra.

Why is this a particularly interesting combination for a presentation? Robertson's BottomFeeder is a fairly popular aggregator written in Smalltalk. Lucas-Smith's WithStyle is a new, interesting web-oriented, yet "rich" user interface technology also written in Smalltalk.

What could come of applying the WithStyle user interface approach to the BottomFeeder aggregation engine? That's one reason why.

Testimony

From KBM's weblog...

Kent Beck... said... 'I program at a third of my Smalltalk speed in Java.'

Bran Selic (RealTime UML guru, built the tool that is now the RT part of Rational Rose) said... 'Smalltalk was the only language in which I noticed a real difference in my productivity'

Interesting VMs happen elsewhere

Ted Leung points out the interesting feature and proven results of the Squeak Smalltalk VM that are apparently not apparent in the state-of-the-industry JVM or CLR.

I learned a few things about Squeak. The Squeak VM runs on about 30 platforms and runs the same (bit for bit) image on all of them. Apparently the VM is auto-generated in some fashion. Given the effort required to port the Java VM to a different platform (I did some of the work to get Java running on the Newton at Apple), this is pretty impressive.
Here's a description of how the Squeak VM is "auto-generated"...
The key to both practical performance and portability is to translate the Smalltalk description of the virtual machine into C. To be able to do this translation without having to emulate all of Smalltalk in the C runtime system, the virtual machine was written in a subset of Smalltalk that maps directly onto C constructs. This subset excludes blocks (except to describe a few control structures), message sending, and even objects! Methods of the interpreter classes are mapped to C functions and instance variables are mapped to global variables. For byte code and primitive dispatches, the special message dispatchOn:in: is mapped to a C switch statement. (When running in Smalltalk, this construct works by perform:-ing the message selector at the specified index in a case array; since a method invocation is much less efficient than a branch operation, this dispatch is one of the main reasons that the interpreter runs so much faster when translated to C).

The translator first translates Smalltalk into parse trees, then uses a simple table-lookup scheme to generate C code from these parse trees. There are only 42 transformation rules, as shown in Table 3. Four of these are for integer operations that more closely match those of the underlying hardware, such as unsigned shifts, and the last three are macros for operations so heavily used that they should always be inlined. All translated code accesses memory through six C macros that read and write individual bytes, 4-byte words, and 8-byte floats. In the early stages of development, every such reference was checked against the bounds of object memory.

Our first translator yielded a two orders of magnitude speedup relative to the Smalltalk simulation, producing a system that was immediately usable. However, one further refinement to the translator yielded a significant additional speedup: inlining. Inlining allows the source code of the virtual machine to be factored into many small, precisely defined methods, thus increasing code-sharing and simplifying debugging, without paying the penalty in extra procedure calls. Inlining is also used to move the byte code service routines into the interpreter byte code dispatch loop, which both reduces byte code dispatch overhead and allows the most critical VM state to be kept in fast, register-based local variables. All told, inlining increases VM performance by a factor of 3.4 while increasing the overall code size of the virtual machine by only 13%.

What's really interesting about this is the ability for anyone to extend Squeak using the same technique. Do you want to try making a stretch of your Smalltalk go faster? Write it using the subset language and generate the C, essentially extending the "VM" in an application-specific way.

Lisp Lives Some More!

Back in May, Lispmeister posted on a Lisp Lives! article at SD DevTalk.

The article is now in the July Software Development magazine. Lisp lives!

Saturday, July 10, 2004

The (Real) Dangers of End User Programming

Warren Harrison writes in the recent IEEE Software magazine about the dangers of end user programming. I will admit the dangers he describes are real.

However I am surprised, shocked really, at his prescription.

Rather than assuming the blame for himself and other computer professionals, rather than taking these dangers as impetus to improve the state of the industry, rather than recognizing the natural and unstoppable demand for end user programming, Harrison would simply ban end user programming. "Dabblers" he calls them. "It’s simply unfathomable..." he writes, that these dabblers can program securely.

Unfathomable indeed.

Warren, the roots of the problem do not lay with the "dabblers". The root cause is the poor state of tools and languages professionals like you and I have given them. Recognize that *we* are the ones who can and must do better. End user programming is to be encouraged. We have the ability and responsibility to make them safe and productive, and we will have failed completely if we do not.

Nice language for the JVM

Yes, static languages can be Nice (read these comments), nicer than the popular static, rather, rigid languages.

Easy 3D and Camera?

A fun addition to Croquet would be something like SmoothTeddy. Maybe this is in there already. I can't wait for the download.

Looking at the Teddy pages... Teddy is now available on Sony's PS2 in Japan. Hope it makes it to the US. My kids have an EyeToy camera for the PS2. How great would an integration of Teddy and the EyeToy be?

You want a dynamic language, you *need* a dynamic language

This blog hasn't been taken down in months, but I've made major changes to the underlying code base...

And none of the weird jumping through hoops that .NET requires for this sort of thing either. If you want zero downtime, you need a dynamic language. If you like restarting every time you need to make a change - sure, go grab one of those mainstream systems.

...James Robertson, wherein he also quotes Keith Mantell...
With Smalltalk (at least with Visualworks) this was a breeze: added the code for a variable, accepted it and, hey presto, any inspector open on an instance got a new variable field set to nil.

A world without... ACLs!

Marc Stiegler in the e-lang mail list...

It is possible to visualize a capability-based world in which the human being remembers one and only one pass phrase, the phrase that unlocks all his capabilities on his personal machine. This pass phrase would never be sent over the wire, never be shared with anybody. It would be used solely to to enable the human to authenticate himself to his computer. From there on, ACLs need not apply. Hallelujah.
Alan Karp's site password is an interesting approximation of this idea.

More on Kyma

Ralph Johnson writes more about Kyma...
Of course, part of the reason that they are able to come out with new products regularly in spite of the small size of their company is because they use Smalltalk...

The music is generated by an array of digital signal processors. The UI is written in Smalltalk and generates code that runs on the DSPs. So, the actual code that produces the music is produced by Smalltalk, but isn't Smalltalk.

A little heresy

Bruce Tate writes...

I think we're in a wonderful age of heresy, where it's getting easier to buck the establishment to get things done.

Webmin and Usermin

What is Webmin?

Webmin is a web-based interface for system administration for Unix [including Linux]. Using any browser that supports tables and forms (and Java for the File Manager module), you can setup user accounts, Apache, DNS, file sharing and so on.

Webmin consists of a simple web server, and a number of CGI programs which directly update system files like /etc/inetd.conf and /etc/passwd. The web server and all CGI programs are written in Perl version 5, and use no non-standard Perl modules.

What is Usermin?
Usermin is a web interface that can be used by any user on a Unix system to easily perform tasks like reading mail, setting up SSH or configuring mail forwarding. It can be thought of as a simplified version of Webmin designed for use by normal users rather than system administrators.

Like Webmin, Usermin consists of a simple web server, and a number of CGI programs which directly update user config files like ~/.cshrc and ~/.forward. The web server and all CGI programs are written in Perl version 5, and use only the non-standard Authen::PAM perl module.

Interesting Sony Patent

An interesting Sony patent related to the cell processors Ted mentioned in his blog...

A hardware sandbox structure is provided for security against the corruption of data among the programs being processed by the processing units. The uniform software cells contain both data and applications and are structured for processing by any of the processors of the network. Each software cell is uniquely identified on the network.

Tuesday, July 06, 2004

Non-Surprises on the Slippery Slope of Language Jones'ing

Now it is Java's turn to play with young programmers' minds sliding downhill on the nature of unnaturally boxed objects.

Surprised?

How can a student think clearly with dull tools when they could otherwise move on toward thinking about problem domains instead of unboxing memory allocations.

From "Structure and Interpretation of Classical Mechanics"...

The advantage of Scheme over other languages for the exposition of classical mechanics is that the manipulation of procedures that implement mathematical functions is easier and more natural in Scheme than in other computer languages. Indeed, many theorems of mechanics are directly representable as Scheme programs.

The version of Scheme that we use in this book is MIT Scheme, augmented with a large library of software called Scmutils that extends the Scheme operators to be generic over a variety of mathematical objects, including symbolic expressions. The Scmutils library also provides support for the numerical methods we use in this book, such as quadrature, integration of systems of differential equations, and multivariate minimization.

The Scheme system, augmented with the Scmutils library, is free software. We provide this system, complete with documentation and source code, in a form that can be used with the GNU/Linux operating system, on the Internet at http://www-mitpress.mit.edu/sicm.

This book presents classical mechanics from an unusual perspective. It focuses on understanding motion rather than deriving equations of motion. It weaves recent discoveries in nonlinear dynamics throughout the presentation, rather than presenting them as an afterthought. It uses functional mathematical notation that allows precise understanding of fundamental properties of classical mechanics. It uses computation to constrain notation, to capture and formalize methods, for simulation, and for symbolic analysis.

Update

Jim points out that more flexible languages like Smalltalk and Lisp have issues with "identity" and "equality". He also makes the point though that the more useful notion of "equality" is typically employed in Smalltalk via = (and by the way in Scheme via equal? versus eq?).

In the common rigid languages, unfortunately, the typical programmer uses identity everywhere, which is just an artifact of those languages' rigid foundation in squeezing an instruction or two out of the code here and there. "Hey, let's use an identity test for equality because it's *fast* and it's meaningful a lot of the time." Only now, it's not.

I just wish in Smalltalk "identity" wasn't the easily confused == and in Scheme I wish eq? was a more distinguished symbol like identical? or even something better. Maybe in Smalltalk, #isIdentical: anObject. But it's decades too late.

The Fourth of Nebraska

On the Fourth of July in Nebraska...

My family and I spent the 4th in Grand Island a few years ago in the middle of a cross-country trip. One of the better shows I've seen, IIRC.

Shoulders or Toes, Above or Below the Rest

"Monad is as programmatic as Perl or Ruby."

Looks fairly cumbersome to extend, and I'm not sure how supportive the interpreter is compared to, say, a typical Python interpreter, let alone a Lisp REPL or Smalltalk workspace.

Am I just whining? I hope not. Monad is a great big leap beyond the DOS prompt, I'll grant you that. But hopefully they are learning something from the industry folks who've been down this path already.

For example, I hope they're spending a week to bring in an expert to sit down at a Symbolics machine for an in-depth tour of the Genera command processor; likewise for a tour of a Smalltalk workspace and tools. Hey, one week for both: 2 days with each technology and then 1 day to solicit feedback on Monad.

Would that be worth the effort? Certainly. They will be affecting developers and administrators for a good long while.

Monday, July 05, 2004

Why else?

"Why else would we be in power, if we were not a better judge of international realities?" -- Britt Blaser, writing with irony at Escapable Logic

Capability-based Security and the Web

Tyler Close (of Waterken) writes in the e-lang email list...

The status quo of WWW security is unfortunately mired in the ACL model. However, if you ignore the various security add-ons of the WWW, and focus solely on the underlying model, you find an amazing symmetry with capability-based security. In fact, if you push REST design principles to their logical conclusions, you arrive at some of the core principles of capability-based security.

Flexibility

Alan Kay...

Until real software engineering is developed, the next best practice is to develop with a dynamic system that has extreme late binding in all aspects. The first system to really do this in an important way was LISP, and many of its great ideas were used in the invention of Squeak’s ancestor Smalltalk—the first dynamic completely object-oriented development and operating environment—in the early 70s at Xerox PARC.

Sunday, July 04, 2004

Ka-Boom

...this time there *was* an earth-shattering ka-boom. (WAV)

Just in from blowing things up with the kids and neighbors. Ah, freedom.

The burgers were not bad either.

What, no Smalltalk?

Read things like this testimony to Smalltalk by a formerly rigid language aficianado.

Me being a statically typed language guy at the time thought the numbers were a bunch of BS. I actually learned Smalltalk to prove to myself the numbers were wrong. After learning Smalltalk and using it in my spare time for over a year I came to the conclusion that I don't like Java, or C++.
Then read things like this effort to bring computer textbook customization into the 21st century.

And wind it up with a search on that site for a Smalltalk text to include in a custom textbook. But...

...a search on the site leads to zero Smalltalk textbooks. (Plenty of Java, C#, and Extreme Programming texts that *refer* to Smalltalk, though.)

linode.com

The hosting suggestion I rec'd is looking good... linode.com will host a User Mode Linux for you. You simply get root access to your own machine.

(In response to this search for another ISP that supports Smalltalk.)

Kyma

Writes Blaine Buxton...

Kyma is written in VisualWorks Smalltalk and the lengthy article was a review talking about how all of the major electronic and soundtrack composers and sound designers use it and swear by it.

Friday, July 02, 2004

Glitz and Cairo

Two interesting projects, Glitz and Cairo, based in part on OpenGL and so apparently have some cross-platform potential.

Miguel de Icaza refers to a mindblowing demo.

Thursday, July 01, 2004

Why Not Try The Road Less Travelled?

Phil Windley writes...

I was having a discussion with some engineers about what languages to use in various portions of a project. There was a core piece that really needs to be optimized for performance to the greatest extent possible and other parts where cross-platform and user interface issues dominate. I began to realize that almost no recent development in programming languages helps with the former. We're probably still going to write it in C++, with all its warts, so that we can compile it.
Oh my. At least read this PDF first, especially the section by Jonathan Sobel.

Wednesday, June 30, 2004

What do *they* want ?

Mensa

Some interesting aspects of this item on SAP and Microsoft...

  • Microsoft's code name for itself is apparently "Mensa"
  • "Mensa has historically had difficulty in managing remote R&D"
  • Why have a code name for an entity otherwise identified as being the "largest" provider of "enterprise applications" from "Walldorf, Germany"?

Go Tuple Spaces

"Every thing you book on Orbitz runs on a Jini backplane."

Hosting Opportunities for Smalltalk Applications?

I have a domain (http://www.stardecisions.com) that is not ideally suited for hosting a Smalltalk application.

Any ideas for an alternative, that's also relatively low cost? (i.e. I'd like it to be reliable, but don't need a lot of resources or water-tight guarantees. This is non-profit.)

Croquet

Looks like Croquet may be released soon.

Insert stupid foot-in-mouth statement like "Cupertino and Redmond, start your photocopiers".

Shades of Agenda

David Buck has open sourced (is that a verb?) a date parser in Smalltalk that could come in handy in an Agenda-like capability to cull dates out of free-form or semi-structured text.

  DateStringCompiler readFrom: 'today'
  DateStringCompiler readFrom: 'tomorrow'
  DateStringCompiler readFrom: 'yesterday'
  DateStringCompiler readFrom: 'last week'
  DateStringCompiler readFrom: 'next week'
  DateStringCompiler readFrom: 'friday'
  DateStringCompiler readFrom: 'next friday'
  DateStringCompiler readFrom: 'last friday'
  DateStringCompiler readFrom: 'Jan 3, 2004'
  DateStringCompiler readFrom: 'January 3, 2004'
  DateStringCompiler readFrom: '12/25/2005'

Disappearing the Fabric

I guess BOA means "Business Oriented Architecture"? In any case the following from Juval Lowy makes sense...

The idea behind BOA is a technology that bridges the gap between the business analyst expert and the SOA developer. BOA will have to not only interoperate with a long tail of legacy technologies, it will also have to interoperate with BizTalk, and do so without constricting itself too much. Clearly BOA will use standard patterns like Indigo Marks. I don’t think that BML (pronounced bimmel, Business Markup Language. XML for MBAs) is something we should care about because I really hope for some visual tool to do that for me.
I think we as developers can build an infrastructure that can turn 50-80 percent of business automation development over to the MBA's that otherwise would be twiddling with Excel and Access. If you know an associate who's non-technical but has built a golf tournament application with some forms and reports, they should be able to define, test, and deploy a distributed, collaborative operational and analytical business process used concurrently by dozens of people inside and out of their legal corporation.

We just have to give them the fabric to stitch together. And like Juval says, we can't give them XML or SQL. We have to make collaborative system definition, test, and deployment even easier than building in Excel and Access for the single user.

If Microsoft has something in the works that will really reduce the number of technical developers necessary to deploy a collaborative enterprise system, great. Less C#, more BOA!

Monday, June 28, 2004

What is an OS, after all, esp. in an SOA?

Wes suggests...

Part of the problem is that natural language support is a time-consuming and specialized endeavor, especially if multiple languages are to be supported. It should be in the operating system...
Why would this be "in the operating system"?

This could be a "service" that would fit well into a service-oriented architecture. As such it could be OS-independent, run locally or on the LAN or Internet. Also as such services could compete (e.g. in a blackboard), cooperate (also in a blackboard), and/or evolve independently (e.g. in a service-oriented architecture).

Update: Wes responds...

The problem is that natural language support requires maximum performance and should be available offline. In an application that uses it, the functionality will be tightly integrated with the operation of the application. It should be available as library in the same way OpenGL or data access libraries are available in Windows today.
I can see that a natural language service would be compute-intensive and memory intensive. I don't see the connection between an application and the service being so intensive though. The communication bandwidth it seems could be relatively small compared to the space and time of computing results.

Combine this with the need for a high rate of evolution of the capability itself and the result is a need for flexibility at the component interface. Why rely on one vendor for this, even if it is Microsoft?

As for offline capability, I agree, but don't we need a general offline capability with many kinds of services? A service-oriented architecture should not be considered always-connected and always-remote.

Finally comparing this to OpenGL --- I suspect the high bandwith needed between the 3D engine and the display device is a different characteristic than natural language interpretation. Isn't NL a relatively isolated computational problem?

Inflection Points and Flexible Software

Jim writes about Microsoft's inflection point...

If the perceived migration cost to LongHorn is high, then Mac OS X and Linux are going to get real evaluations.
Or even better for Jim and Cincom, viable cross-platform solutions may have more opportunities.

Blog Archive

About Me

Portland, Oregon, United States
I'm usually writing from my favorite location on the planet, the pacific northwest of the u.s. I write for myself only and unless otherwise specified my posts here should not be taken as representing an official position of my employer. Contact me at my gee mail account, username patrickdlogan.