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

Search This Blog

Sunday, August 13, 2006

JFK

JFK was a troubled man from a shady and troubled family. He had enough strength though to do some good work when it was needed.

Let us never negotiate out of fear. But let us never fear to negotiate.
His nephew, Robert Jr., is doing many good things.

I started an interesting book on vacation this week, "Ultimate Sacrifice: John and Robert Kennedy, the Plan for a Coup in Cuba, and the Murder of JFK". I've not previously read anything about the JFK assassination. This is a recent book that appears to have a great deal of credibility from "insiders", popular (4.5 stars from 95 reviewers on Amazon), and uncovers relatively newly released information on a coup planned for Cuba subsequent to the Bay of Pigs, and which ultimately led to the assassination (by the Mafia) and cover-up.

Moral Clarity Or What?

Harry Shearer observes that the recent arrests in Britain do not jive with the Bush Administration's policies on "enemy combatants" in a "time of war"...

This is a group of people who allegedly conspired, according to British officials like Home Secretary John Reid, to commit acts of mass murder that would have dwarfed 911. If we were at war with them, according to the Administration's own well-documented legal arguments, we would have killed them or detained them and thrown them in Gitmo. Instead, where did we--or our allies in the "war", the Brits--put them? Right where we're told by those same arguments we cannot put enemy combatants--in the criminal justice system.

Saturday, August 12, 2006

Which Quagmire Again?

George Will on ABC TV's "This Week" becomes confused about which quagmire we're currently bogged down in...

Lieberman's model on Vietnam -- I'm sorry, on Iraq, is to some extent...
Could we keep our quagmires straight please?

Java Varargs Puzzle

Richard Bair puzzles over a scenario using Java 5 varargs...

The problem is that (Object)null tells the compiler to include a one element Object array where the first element is null. Instead, what we wanted to do was this (Object[])null! This is why we get the compiler warning, the compiler doesn't know if we want null to be an element in the vararg array or whether we want it to be the vararg array itself.
I would have expected that passing null to be interpreted as passing one Object, which is null. Strange that null has to be cast to Object though.

But then passing an Object array that is null means "don't pass anything"? This is just puzzling. It should be wrong... an artifact of a not-quite-object-oriented language with too much "magic".

To express "don't pass anything" I would expect to invoke the method like this...

elementCount()
...i.e. don't pass anything.

I would expect a null cast as an Object array to mean the same thing as a null cast to an Object. An Object array should be an Object, in an object-oriented language. No matter how you cast a null argument, it should be interpreted as one argument passed to the method. Instead the meaning changes on how the null is cast, or whether it is cast at all.

Unfortunately as well, invoking the method with no args means an implicit new of an empty Object array, as opposed to a null cast as an Object array. I guess I need to fire up the computer that has Java 5 on it and see it for myself.

Confusing. These idiosyncracies will cause someone, somewhere, a sleepless night every now and then.

People Who Don't Matter, Who Actually Might Matter

CNN has a list of 10 tech people who don't matter. I don't even know most of the people on the list.

I wonder about two people on the list though. One is Linus Torvalds. The CNN argument is that most Linux innovations come from large organizations rather than Linus. Maybe one could argue that CNN doesn't understand the way open source works, or the place of Torvalds and Linux within OSS. Unix was without a center for decades. Torvalds still appears to be the center of Linux. Without him I wonder if those contributing large organizations and individuals would go spinning off, out of the coherent Linux system, the way it used to be.

The other questionable choice for me would be Sun's Jonathan Schwartz. The point James Robertson continues to make is Schwartz' contribution to the enterprise blogging and transparency movement. As a software developer, the future of Java and the JVM matters to me, and Sun's attitude toward OSS. Also Sun appears to be innovating in the H/W market again, e.g. Thumper.

Thursday, August 10, 2006

Implementing Dynamic Languages

Steve Dekorte questions some of the conventional wisdom of implementing dynamic languages on Java/C# platforms. Ironically the implementations of Java and C# are essentially based on approaches from the dynamic language community. They have static-ness added on top (e.g. statically-oriented object models and class loaders) and/or into the mix (e.g. statically-oriented instructions).

Maybe a more interesting question is why aren't Java and C# implementations more thoughtfully layered on top of especially efficient implementations of dynamic languages? This has been done before, e.g. implementations of C, Fortran, Ada, et al. on Symbolics and other Lisp Machines. That ordering makes more sense in terms of complexxity.

Current implementations could provide a foundation for such a thing, e.g. the implementation Gambit Scheme would be a particularly good candidate. One problem: the implementation, like most long-lived, highly-tuned software designs, is fairly obscure and familiar to few people.

Depending on Gambit Scheme is riskier than depending on GCC, the JVM, or dotnet. On the other hand the benefits of putting multiple languages on the implementation would likely lead to a larger community of knowledgable systems developers.

The Circle of Artificial Life

Nat on the O'Reilly Radar writes...

Technologists very rarely create something new. C was inspired by BCPL, Unix was inspired by MULTICS, Linux by MINIX, XML by SGML, web services by traditional binary APIs, .... This is the problem with patents: the magic that gets patented often ends up being something as questionably worthy as "the right ingredients that we already had" or "this old solution applied to this new problem".

Ruby and Python Are Slow, Aren't They?

A comment on James Robertson's blog points out...

The Ruby "VM" is implemented in the slowest way imaginable.
There is always the question of "fast enough"... Python, even Ruby have been around a many years. They are obviously meeting enough needs to keep going.

That's not to say better implementations could not expand their range. Certainly they would, all else being equal. But there are many factors and many answers to what is "fast enough".

Thursday, August 03, 2006

Wikipedia bans Stephen Colbert

Explain this to me again...

According to Newsvine, a Wikipedia editor locked the entries Colbert had exhorted his viewers to edit and banned the account "Stephencolbert."
Truthiness is stranger than fiction?

Erlang and Scheme Workshops

Marc Feeley, via Bill Clementson...

This year's Erlang Workshop and Scheme Workshop will be held in Portland, Oregon, on September 16 and 17 respectively. Of special note this year is a 90 minute tutorial on "Large Scale Software Engineering with Erlang: Using Advanced Erlang/OTP".
Bill notes a presentation on Termite Scheme, an implementation that aims to do for Scheme what Erlang did for, um, Erlang...
The Termite presentation is titled "Concurrency Oriented Programming in Termite Scheme"

Sun Digging Deep for Dynamic Language Support

From JavaWorld...

Moreover, Bracha, who joked that "it is good to be behind former enemy lines," noted that among the benefits of enhancing Sun's support for dynamic languages is simplifying implementers' lives.

He also said better support for dynamic languages also would likely yield more good implementations for programmers to use, and provide potential for "awesome performance over time."

Wednesday, August 02, 2006

Ruby Glues Day (sorry)

John Lam (RubyCLR) shows how to use Ruby rather than XAML as a declarative GUI design language for Avalon. Nicely done.

Although I could not attend OSCON last week, I met after hours with Paul Hammant over a coffee while he was working on support for JRuby as configuration glue for NanoContainer.

As Blaine Buxton might say, dynamic languages rock.

Weird Brain Activity

My brain feels funny watching videos for DabbleDB and Microsoft Simple List Extensions back-to-back. Draw your own conclusions.

Duck

Harry Shearer...

when Hollywood agents are lecturing us about there being more important things than money, it's time to call air traffic control and warn them about the pigs coming in on runway number one.

Saturday, July 29, 2006

Responding to James

James Robertson left a long comment to my previous entry on the conflict(s) in the Middle East. I already rambled on in that entry, so I'm pulling his comment and response out here.

I think you misunderstand the nature of modern war if you think a draft would be useful, much less desirable. It takes a long time to create useful soldiers out of raw recruits. Additionally, a mass army is nothing so much as a huge target given nuclear weapons. There's a reason that the military is in the midst of reorganizing itself from large organic divisions into smaller, more easily configurable battalions. A mass draft army would run completely counter to that, and isn't something anyone wants.

I seriously doubt that any US troops will be sent into Lebanon, period. Also, it's telling that you think Israel is losing. Riddle me this: why are Iran, Syria, and Hezbollah desperately calling for a cease fire? Does the winning side ever ask for that?

I don't think a draft would be useful for anything except alerting people in the US that there are wars going on in Iraq and Lebanon (and Afghanistan -- are most people aware conditions are rapidly deteriorating there as well?). Other than a slight increase in gas prices, most people just don't seem to care that much. A draft would at least cause most of us to call for an end to our involvement there.

I never intended to imply Israel is losing. I don't know how to determine winners and losers in conflicts like this, I can barely comprehend their motivations. Disarming Hezbollah seems impossible, though. Someone will always be willing to rearm them eventually. These problems will not go away any time soon.

Friday, July 28, 2006

Just Now Waking Up

John Robb writes...

The 82nd Airborne is on tap to be sent... As Bill Lind said, this is 1914 all over again...

Things have spun way out of control. Can anyone say draft?

A draft would force most of us to turn off American Idol and think finally about what's going on around us, and our current, er, leadership. A draft would be one way for the congress to say it is time to sacrifice... for the first time since we've been at war and cut taxes simultaneously. (And frankly, they've kind of tapped the zygote topic for this election year.)

We might be asked to make a number of sacrifices, finally, beyond the soldiers in Iraq who've lost limbs and sustained severe head injuries, and the families who've lost husbands, wives, sons, daughters, fathers, and mothers.

We will have to ask, what for? What is this really for? I hope we are willing to ask that, and we'd better be determined to cut to the chase for a real answer.

One more thing -- is my son eligible for those same five deferments Cheney got during the Vietnam War? Will he too be allowed to have "other priorities" than shooting Communists, er, Muslims?

Should my son be drafted before or after Jenna and Barbara Bush? Why are they not fighting in Iraq already? All four of Franklin Roosevelt's sons were decorated for bravery in WWII.

I'd bet most Americans would tolerate several "pre-emptive", extremely destructive aerial attacks on the perceived enemies' cities much more easily than they'd tolerate a draft. Those would play a *lot* better on CNN and Fox News.

Count me out on all of this.

XMPP

Mickaël Rémond from the recent Portland Jabber Meeting...

At the end of the day, we were almost able to federate on a secure network, but there is still some interop work to be done to make this work flawlessly. That's why we all commited to make this secure federation of IM network running on different code base work in a close future. I agree with Jacques Belissent that building an open, highly secure xmpp federation based on a pretty diverse set of implementations is a very exciting and close prospect...

I deeply feel that we are only at the beginning. Something really big is now happening around XMPP (eXtensible Presence and Messaging Protocol).

Semantics

Sean McGrath...

Semantic markup is happening at last. Surprise surprise, it is not taking the shape that we had anticipated.

Thursday, July 27, 2006

The Windows Live Developer Platform

Brian Arbogast, corporate vice president for the MSN Communications Platform in an article by Mary Jo Foley...

Windows Live services should be designed to support any platform, browser, language or device, and Windows Live services should make use of simple, standards-adherent HTTP-based application programming interfaces.

Lazarus the Canary

A interesting GC story from Greg Luck via Bill de hÓra.

...our main J2EE app at work with 9 second pauses. These would happen on average every 50 seconds. Needless to say this was a... problem.

In the end we consulted some engineers at Sun who... gave us the following piece of black magic:

java ... -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:NewSize=1200m -XX:SurvivorRatio=16

That's quite a canary. Let's name it Lazarus for the time being.

I'd bet the object story is even more interesting than the GC story.

Update:

As coincidence would have it, Greg is in town for OSCON and we ended up having coffee and then dinner with a group staying in town an extra day. There *is* a good object story behind the GC story... they are doing a *lot* in that VM with actual data and several kinds of caching. There are several ways they could slice up the objects into more VMs, in particular partitioning along data domains is natural for their application. Moving things into more VMs is something they've considered, but could take some effort working around their current use of ejb.

Friday, July 21, 2006

Accredited XP Course in Portland, Oregon

Jim Shore and Andrew Black are teaching an Extreme Programming course this summer at Portland State University. The course includes credit for undergraduate or graduate programs.

Jim writes about it in the xpportland yahoo group...

This is an in-depth course covering all aspects of XP, with emphasis on the planning game, continuous integration, test-driven development, large-scale design, testing, and retrospectives.

This course is a steal at $783.50 for Oregon residents. It's an eleven-day course that takes place over four weeks.

Tuesday, July 18, 2006

Any Way You Cut It

Sam Ruby on the convenience of so many frameworks...

complex frameworks... make your life easier 95% of the time, but a living hell the other 95% of the time...

Portland Smalltalk Email List

Our fair city, Portland, Oregon, has a new Smalltalk email list. Hey!

Meeting for a beer can't be far off.

Thursday, July 13, 2006

Small, Opinionated Pieces, Loosely Joined

Martin Fowler on recomposing the enterprise...

Rails will do what it does, and will not complicate itself to support things it doesn't like...

I confess I like this opinionated attitude...

Rails is right, I think, to ignore the enterprisey world, but that doesn't mean that Ruby should...

there's a danger that people will hear the opinionated nature of Rails as a statement about Ruby, and thus give the impression that Ruby isn't a suitable enterprise glue. That would be a shame.

Tuesday, July 11, 2006

Special Forces

From O'Reilly Radar...

Operations used to be thought of as boring. It's now ground zero in the computing wars.

Wednesday, July 05, 2006

0 tests, 0 assertions, *but* 0 failures, 0 errors

Steve Loughran, counting the number of tests for web services standardization...

Ant has more tests than the entire specification suite of SOAP, WS-A, WS-RF, even WSDL (I think). And that is just a build tool, not the strategic glue for a planet.

Sunday, July 02, 2006

ubuntu, apt-get, and ruby

This information exists here and there, but I thought I'd try to capture simply in one place.

If you are running ubuntu linux and you want to install ruby the you currently have to install several packages. For some reason, some of those packages are on the approved ubunto list (e.g. ruby) and some (e.g. irb) are not. I suppose because some people will need to run a ruby program but not need the interactive interpreter.

To get to the "unapproved" packages for ruby you need to edit /etc/apt/sources.list

There is a comment in the file about getting access to the "unapproved" universe. Uncomment the denoted lines of the file. What's not immediately clear though is you have to run "apt-get update" before the next "apt-get install ..." will recognize the newly available sets of packages.

After the update then do the following installs... (Your list will vary if you want rails, etc. You probably want to leave out the 1.8, that's just the current version.)


apt-get install ruby1.8
apt-get install ri1.8 
apt-get install rdoc1.8 
apt-get install irb1.8 
apt-get install ruby1.8-elisp
apt-get install ruby1.8-examples 
apt-get install libdbm-ruby1.8 
apt-get install libgdbm-ruby1.8 
apt-get install libtcltk-ruby1.8
apt-get install libopenssl-ruby1.8 
apt-get install libreadline-ruby1.8

Apparently rubygems has to be installed the old fashioned way.

Saturday, July 01, 2006

Minix 3

Chris Double has been working with Minix 3 and a blog with Minix tips. A new release of Minix, it is more of a true microkernel design. Some interesting papers on the web site describe this evolution of Minix.

I was able to install it in short order. It runs all kinds of Unix/Linux/Posix software, including the X Window System.

Underneath the system calls is a small kernel, drivers and servers that run in user space, side-by-side with user application processes, each in their own protected address space. The system calls are implemented using message passing among the processes and the kernel. The driver processes can come and go due to bugs or intentionally, and there is a "reincarnation server" to help with this.

The Principle of Least Authority is followed, to prevent processes from sending messages they should not. This separation also enables experimenting with drivers and servers written in various programming languages.

Of course this is the same design approach that makes systems built with Erlang so reliable. Although Erlang makes the style explicit, while Minix 3 wraps the Unix API around the message-passing implementation. They are complementary systems and each have another quality: Fun.

"Scalable" is the new "Fast"

See this article on Erlang.

It used to be that if your code ran quite quickly, a year later you could run it twice as fast for the same amount of money. These days, you’re much less likely to get a chip that’s twice as fast, but you may get one with twice as many cores. If your code is highly parallel, you can just spread it out a bit more...

Two features of Erlang, both of which are built into the language, make it especially suited to writing scalable applications: process creation and message passing.

(via Mickaël Rémond)

Some years down the road, people will realize *this* model is service-oriented. There will be some kicking and screaming along the way, no doubt.

Web Services in Stockholm

Another one from Panic From Fuzzy...

I saw this a lot with EJB. I was certainly guilty of it. Having achieved some success and decent understanding of EJB, I became an ardent defender of it even though it was terrible technology.

I see this same phenomena today with WS-*.

No kidding. There are very few ways to discuss design decisions rationally with programmers fascinated by sparkling technologies, unproven technologies that promise to be the only way to develop software in the near future.

Eventually these programmers will be older and will no doubt have learned some lessons too. Until then they have to make their own mistakes.

Thursday, June 29, 2006

When the lights go down in the city...

From the SOA Yahoo group...

[In] the grand design of Service Oriented Architecture (of which Web Services may be a means), HTTP plays a very insignificant role.
Sweet irony.

"I shall be telling this with a sigh 
 Somewhere ages and ages hence: 
 Two roads diverged in a wood..."

(Sorry for including Journey and Robert Frost in one post about SOA.)

Wednesday, June 28, 2006

Bound

That rails guy writes...

"Is DHH trying to to tighten the belts on the straight jacket of design once more?"... Why yes, I am.
(via Mark Baker)

And a rich commentary from Jim Greer including this...

To be frank DHH’s combination of “aryan” good looks, personal magnetism, and zeal for an orderly utopian world does lead to some uncomfortable associations.

But DHH doesn’t seem to want to take over the world – he wants to make a better one and let the old world come along when it’s ready.

Tuesday, June 27, 2006

Big

Greg geeks...

Google can store roughly 500k * 8G = 4 petabytes of data in memory on their cluster.

Four petabytes. How much is that?

It is twice the size of the entire Internet Archive, a historical copy of much of the Web. It is the same as the estimated size of all the data Google had in 2003 on disk.

It is a staggering amount of data. And it is all accessible at speeds orders of magnitude faster than those with punier clusters.

Monday, June 26, 2006

Sunday, June 25, 2006

More Beavers! (SFW!)

One more baseball game is left in the College World Series. North Carolina topped the Oregon State Beavers 4-3 yesterday in a great game (except for the hour storm delay late in the game).

The Beavers found themselves down 5-0 today, but found some fireworks in the fourth and sixth innings for an 11-7 win.

The final game is tomorrow night. If you're in Omaha its hard to imagine a better baseball game in a 500 mile radius this summer. Especially when the tickets cost less than $50.00

Lossage

Statistics

Steve Dekorte quotes Milton Friedman on the tremendous prosperity of Hong Kong over Britain in the last several decades...

...the average per capita income in Hong Kong... had risen to 137 percent of that in Britain...

I believe that the only plausible explanation for the different rates of growth is socialism in Britain, free enterprise and free markets in Hong Kong.

I don't believe socialism has been a smashing success in Britain. Certainly Britain has a very old bureaucracy as well. Hong Kong has been a wheeling and a dealing.

But perhaps a more disturbing fact is that Friedman seems all-consumed with "average per capita income". What about income disparity?

Hong Kong seems to be well down at the bottom in terms of income gap between rich and poor.

Socialism isn't needed to make improvements there. (And isn't Hong Kong governed by the Chinese now? Hey, China's way down there too. So much for socialism.)

So much for Friedman.

Thursday, June 22, 2006

Taxes and Subsidies (aka "Welfare")

Steve Dekorte conveys an item about "The Irish Economic Miracle" being attributed to low corporate taxation.

That may be. But looking from another angle, the high tech industry in Ireland is also taking advantage of the long tail of government (mostly not the Irish) investment (subsidy) in high tech in the 50's, 60's, and 70's.

The reason high tech corporations in Ireland can get away with low taxes, it seems, is because others, around the world, in past decades, *have* already been taxed.

Where would microelectronics be without the investment U.S. tax dollars made in defense and aerospace over those decades?

We may also thank those programs eventually when we as a society decide finally to decentralize electricity production through photovoltaics (among other mechanisms). Before we invest in that though, I am sure we're going to have to wrestle control away from the nuclear power lobby.

Much more investment will have to be made in the name of democracy and making each of us net producers of electricity, rather than subsidize the enrichment of the centralized few. (Running on a subsidized significant security threat (the grid) our politicians are ignoring at *our* own peril, by the way.)

Where would nuclear power have been developed without subsidies? Those corporations could not even afford insurance on the open market!

If corporations are going to benefit from the services of the commons, government subsidies (should we call it "welfare"? Horrors!), and if corporations are going to have the rights of "persons", shouldn't corporations also pay something back to the commons? "Low corporate taxes" is no more (or less) a cure-all than "high corporate taxes".

Reality is somewhere in the mix and will vary by region and industry.

Beavers!

The best thing to happen in Oregon sports in a long time... Oregon State is the only school to return from last year to the College World Series. They got pounded 11-1 in their first game against Miami. They fought their way out of the loser's elimination bracket over the last four games, beating Georgia 5-3, Miami (revenge!) 8-1, Rice 5-0 last night, and Rice again tonight 2-0.

Back-to-back shutouts against the team ranked #1 going into the series, using a pitcher with one previous start this year (in April) and tonight a pitcher on 2 days rest. When Nickerson the starter went out after 7 2/3 innings tonight, the entire stadium provided a standing ovation.

"You just saw one of the guttiest performances by any person I've ever seen in the sport of baseball," [Beaver's Coach Pat] Casey said.
*Two* gutsy career-highlight pitching performances over the last two days. This has been the most fun watching baseball has been in a long time.

The final three-game series starts Saturday against North Carolina. Go Beavs!

The games have been on ESPN2, and I assume will remain there.

Tomorrow's Edges for the Black-Diamond Runs

James Robertson explains the edge that Smalltalk's more pure objects have over languages with special "constructors". I'm thinking back to a really nice analogy Ward Cunningham made, oh dear, over a *decade* ago...

Everything I Really Need to Know About Object-Oriented Design I Could Learn on a Black-Diamond Run

I have been wondering if we aren't making this all more complicated than it need be. I wondered if designing isn't a lot like skiing, that is, easier to do than to explain or prescribe. Then I realized: everything I really need to know about object-oriented design I could have learned last weekend skiing Utah's black-diamond runs...

Now, to make these turns, I have to use my edges. I can't twist and turn my body to turn the skis; I must let the ski's edge do the work. So, let me ask you, what's the object designer's edge?

(silence)

Polymorphic message sends! That's what we use to turn a design around a bump. We plan and balance our designs just so we can apply that edge when we need it, which in practice is most of the time...

And just so, tomorrow's edges will be distributed, asynchronous message sends. Not those clumsy things you see in the SOAP catalogs. But those neat edges in the Erlang catalog. We'll need edges like those!

Oregon's Own

Oregon lost another handful of young men in Iraq this week. I think we're totaling in the 50+ range now. Conveyed by Portland's own Tim Riley on his City Desk blog...

Another young man is slaughtered in a war where there's nothing to be won thanks to gutless politicians who can't admit they were wrong, and a uninformed public duped by meaningless, dated, and obsolete patriotic propaganda.
Shame on us. But hopefully we won't be able to burn the flag soon, and that should help.

Wednesday, June 21, 2006

*Advanced* Message Queue Protocol

Not just any message queue protocol, Panic From Fuzzy points to a new *Advanced* Message Queue Protocol. The spec seems incomplete at a glance (e.g. multiple mentions of several kinds of "transactions" but I could not tell that they were fully specified).

According to InfoQ...

RedHat is currently working on an implementation that will be built into the operating system, making AMQ as free and available as SendMail, and accessible from any technology API such as JMS.
I saw no mention of WS-* although AMQP appears to have the support of vendors with products in the WS-* market.

Also no mention of XMPP, or any significant mention of HTTP. Again from InfoQ the isolationist approach to the AMQP spec is acknowledged as work that...

has been done in secret.
Mighty open of you, AMQP.

If not GData, why not WSAP-DAV?

About Microsoft's Web Services Application Protocol, Mark Nottingham suggests...

There will undoubtedly be debate on whether it’s necessary to fuse REST and WS-* together in this manner (especially in the face of things like APP and GData)
The WSAP spec says...
The WSAP operations have been designed to be a superset of the methods provided by HTTP/1.1. In particular, WSAP provides support for structured data manipulation and event notification as an integral part of the service model. Because HTTP and WSAP inherently have different protocol characteristics, WSAP is complementary to HTTP and not intended as a replacement. Rather, the close relationship between WSAP and HTTP allows WSAP services to be accessed either as regular HTTP resources or as WSAP services providing additional support for structured data manipulation and event notification.
But I don't see a rationale about why they chose to extend HTTP using SOAP. If they did not want to stay within HTTP/1.1 as did APP/GData then another option would have been to follow WebDAV/CalDAV and extend HTTP/1.1 with the new methods that appear in WSAP as SOAP methods. The WSAP choice introduces two different programming models, HTTP and SOAP. At least the xDAV approach retains one programming model.

The WSAP approach seems arbitrarily complex. There appear to be at least *two* simpler extension mechanisms. Not to mention the question of the explosion of methods being worthwhile.

Is WSAP also an implicit commentary on WS-Event/Notification/whatever being too complex to easily implement? Why would Microsoft invent a new SOAP event/notification mechanism unless it was too difficult to follow the emerging spec I assume they'd otherwise want to promote?

Fire Fighting

Mark Baker in the Yahoo SOA group, on running WS-* over HTTP...

It's as if you were trying to rub two matches together to start a fire.

Tuesday, June 20, 2006

Sign of CORBA

The essence of CORBA wonderfully captured by Steve Loughran...

Gnome is built on Corba. You can tell that by changing your hostname and noting how you can't start any apps by double clicking on the icons. That is an ORB at work, if ever I saw one.
Steve goes on to wonder... "I wonder what Gnome-on-ICE would be like?" (where ICE is somebody's new and improved distributed object system).

While Miguel de Icaza has already started thinking about just using HTTP...

I have been considering the implementation of a system that would replace D-BUS and CORBA with a simple HTTP framework.

What If Unix

Via O'Reilly Radar, the original UNIX Time-Sharing System paper.

For most users, communication with the system is carried on with the aid of a program called the shell. The shell is a command-line interpreter: it reads lines typed by the user and interprets them as requests to execute other programs.
Something I've wondered fruitlessly about in the past: what if the first shell language had been a simle lisp interpreter, along the lines of elisp. I mean, shell programming is obscure and arguably limited, yet thousands upon thousands of people have written thousands upon thousands of lines of shell scripts.

If one of the developers had been at MIT before Bell Labs and had taken a simple interpreter along, then people would have grown up around Unix thinking Lisp was easy and useful. Those many thousands of people would just think Lisp is they way to do scripting and not give it a second thought.

Friday, June 16, 2006

Exact Math

The binary search controversy has improperly gone from the definition of numbers in poorly designed languages to the "static vs. dynamic" debate, which has no bearing on this topic. Then the question came up about floating point and why even Smalltalk accepts that 1e16 + 1 is equal to 1e16 when using a floating point (i.e. inexact) representation of integers.

The numerical tower in Scheme explicitly defines what number representations and procedures deal with exact or with inexact math. You get to choose, for instance based on whether you need speed or accuracy.

> (+ 2/3 1/3)
1
> exact->inexact
#inexact>
> (exact->inexact 1/3)
.3333333333333333
> (= (+ 1 10000000000000000) (+ 1 (exact->inexact 10000000000000000)))
#f
> (= 1e16 (exact->inexact 10000000000000000))
#t

Indigo and Atom

Timely. An incentive to try Indigo. A co-worker and I had started to play with Atom.NET.

(via Don Box)

microsoft changeClassToThatOf: ibm

James Robertson makes a good point about the greater transition that may be taking place at Microsoft.

But he chose the wrong message selector. Instead of Object>>become: I think he should have used Object>>changeClassToThatOf:

8^)

Thursday, June 15, 2006

Content Networking and Scalable Web Sites

A couple of books I picked up recently are worth recommending based on a little bit of reading... one is Content Networking and the other is Building Scalable Web Sites. I missed most of Web 1.0 working on databases, concurrency, and conflict resolution. These are getting me caught up for Web, er, 2.0.

(Although in Content Networking I noticed they define HTTP as "Hyper Text Transport Protocol" rather than "Transfer". That's not in the errata on the book site.)

Wednesday, June 14, 2006

Blissfully Fenced

Phil Windley speaks up about the current anti-immigrant fiasco...

The level of xenophobia and insecurity required to say that government shouldn't make useful information available in a variety of formats and languages is just stunning. This is really about erecting barriers, not assimilation. I'm embarrased.
Politicians love to erect barriers when it serves their immediate interests. Gay, hispanic, french, black, muslim, jewish, protestant, catholic, female... the list goes back into time and will ignorantly proceed into the future.
Scene 5:
BEDEVERE:
Tell me. What do you do with witches?
CROWD:
Burn! Burn them up! Burn!
BEDEVERE:
And what do you burn apart from witches?
VILLAGER #1:
More witches!
The current anti-hispanic machine is a purely ironic facade. There is no way the fascists want to eliminate "illegals" from the work force. This machine serves dual purposes -- get out the xenophobic vote (the homophobic vote may not work so soon after 2004) *and* provide the means to legally indenture foreign workers for many years.

We *certainly* all agree it would be "impractical" to attempt deporting millions of people -- wink, wink, nudge, nudge. Ahem, they won't mention to Mr. and Mrs. Blue Collar that they'd find it *antithetical* to eliminate millions of powerless people from the labor pool and provide blue collar workers more leverage to organize. Better to keep them blissfully irate at the "illegals" stealing their jobs while we pause in the shadow of the Statue of Liberty.

Oh, and fences. We need fences.

Tuesday, June 13, 2006

Workspace

Jon Udell extolls the virtues of exploration with a simple dynamic language...

There are Java and C# wrappers for this stuff, but I'm having a ball just using Python's interactive mode to explore the Calendar API.

Think Different

Damien Katz, with an Iris/Lotus background, writes about his programming language choice for implementing CouchDB...

the Erlang OTP platform has completely changed the way I view reliable software construction...

while it may sound hard to write software this way, it's actually far easier than you think

Monday, June 12, 2006

Simplicity and Safety? Boring

According to Tim Bray...

space-vs-time trade-offs are just not gonna go away
Tim's choice is to scoff at people who choose simplicity and safety as the default, all for the space-time tradeoff which is not well addressed by Java anyway.

The cognitive dissonance excuse is tiring. And costly.

Sunday, June 11, 2006

Counting On Democrats

Every once in a while you can count on the Democrats to vote for the people. Can you find the Republican in the Oregon delegation...

  • Blumenauer, Earl, Oregon, 3rd YES
  • DeFazio, Peter, Oregon, 4th YES
  • Hooley, Darlene, Oregon, 5th YES
  • Walden, Greg, Oregon, 2nd NO
  • Wu, David, Oregon, 1st YES

This is too complex

Blaine Buxton exclaims...

This Java Generics FAQ is a whopping 433 pages in PDF form. Holy Moses!
It's time to surrender, folks.

Tuesday, June 06, 2006

Integers

Tim Bray wonders about Java and binary search...

If we can’t get binary search right, what chance do we have with real software?
Psst... look at the code. You *did* get binary search right.

The problem is you got integers wrong.

Real programmers use the *complete* numeric tower.

Update: Troy makes a point in the comments that there are many basic algorithms that are easy to get wrong when the foundation is weak.

Without having to think about integer overlow you are free to think more mathematically and less mechanically. Here is an unusual (to most) definition of factorial. This is iterative using the "let-loop" syntax which can be added trivially to Scheme since it has lambda and tail recursion. OK -- C# and Java have a new iteration syntax the compiler writers added for you. Can you iterate on multiple parameters? Can you invoke the next iteration even in a non-tail-recursive position?

Ha! We *still* win! But you still have more programmers.

But we still have the complete numerical tower!!! Yea!

> (define (fact n)
    (if (< n 0) (error "fact n, n >= 0")
        (if (< n 2)
            1
            (let loop ((result n) (n (- n 1)))
               (if (< n 2)
                   result
                   (loop (* result n) (- n 1)))))))
> (fact -1)
*** ERROR IN (console)@52.1 -- fact n, n >= 0
1> ,t
> (fact 0)
1
> (fact 2)
2
> (fact 6)
720
> (fact 100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
> (time (fact 1000))
(time (fact 1000))
    25 ms real time
    30 ms cpu time (30 user, 0 system)
    8 collections accounting for 3 ms real time (0 user, 0 system)
    1230816 bytes allocated
    no minor faults
    no major faults
40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480047998861019719605863166687299480855890132382966994459099742450408707375991882362772718873251977950595099527612087497546249704360141827809464649629105639388743788648733711918104582578364784997701247663288983595573543251318532395846307555740911426241747434934755342864657661166779739666882029120737914385371958824980812686783837455973174613608537953452422158659320192809087829730843139284440328123155861103697680135730421616874760967587134831202547858932076716913244842623613141250878020800026168315102734182797770478463586817016436502415369139828126481021309276124489635992870511496497541990934222156683257208082133318611681155361583654698404670897560290095053761647584772842188967964624494516076535340819890138544248798495995331910172335555660213945039973628075013783761530712776192684903435262520001588853514733161170210396817592151090778801939317811419454525722386554146106289218796022383897147608850627686296714667469756291123408243920816015378088989396451826324367161676217916890977991190375403127462228998800519544441428201218736174599264295658174662830295557029902432415318161721046583203678690611726015878352075151628422554026517048330422614397428693306169089796848259012545832716822645806652676995865268227280707578139185817888965220816434834482599326604336766017699961283186078838615027946595513115655203609398818061213855860030143569452722420634463179746059468257310379008402443243846565724501440282188525247093519062092902313649327349756551395872055965422874977401141334696271542284586237738753823048386568897646192738381490014076731044664025989949022222176590433990188601856652648506179970235619389701786004081188972991831102117122984590164192106888438712185564612496079872290851929681937238864261483965738229112312502418664935314397013742853192664987... 
(goes on for several more lines)

Orchestration Patterns

Dragos and Boris have a new draft of their Orchestration Patterns book. There is a discussion list as well. One thing I am on the lookout for was mentioned in an ealier post today... Ralph Johnson's point about structure *and* process. Beyond the question of what is an "orchestration" vs. some other kind of programming... what is the process for adopting one when it is called for.

One thing I like about orchestration tools is support for increasingly transparent reliability across long-running, asynchronous operations. I don't see how this would ever become completely transparent, but on the one hand most programming languages offer nothing by default, while orchestration tools try to offer something by default.

Other than that the current tools I am familiar with leave much to be desired in terms of programmer comfort... at least this programmer is not fond of "programming via property boxes". Perhaps we need something like Rails, but rather more for long-running, asynchronous process steps.

Atom Over XMPP

Peter Saint-Andre has a new draft in the works for Atom Over XMPP. The previous draft is still available.

This memo describes a method for notifying interested parties about changes in syndicated information encapsulated in the Atom feed format, where such notifications are delivered via an extension to the Extensible Messaging and Presence Protocol (XMPP) for publish-subscribe functionality.

Structure and Process in Patterns

Ralph Johnson delivers more goods...

A lot of people seem to follow the errors of Design Patterns and focus on structure to the exclusion of process. A pattern description should tell the reader how to create the pattern in a system where it doesn't exist, and many pattern descriptions do not.

One of the things that helps me think about process is to imagine a system without the pattern. What would I do to use the pattern in the system? What alternatives are there to the pattern?

Sunday, June 04, 2006

WS-SUV

Stefan Tilkov exposes yet another useless analogy in the land of WS-SUV's.

Maybe some people also choose which cigarette to smoke based on the cowboy who promotes it.

Influence: The Psychology of Persuasion

Tim Bray has an item on the anniversary of the Tiananmen Square massacre.

The book Influence: The Psychology of Persuasion explains how the Chinese government used subtle and simple techniques to help the population conform following the massacre. Those same techniques, according to the book, were used by the Chinese on prisoners of war during the Korean War.

The book is a really good one. When I mentioned some aspects that lend themselves to agile development, someone on the XP mailing list responded the book is his favorite from the last ten years. High praise, but I can see why.

The information is of practical use every day in this market-driven and political society. With many less dramatic, but more commonplace, stories I can't imagine most people not recognizing situations from their own lives.

I think the book should be required reading for high school students. May as well go into life somewhat prepared for the onslaught.

Saturday, June 03, 2006

LT-TV

The Latest from Brightcove...

It won't be far off before linear television becomes the butt of such historic humor. Wow, everyone had to watch a show at the same time? You mean you couldn't just search and play?...

Brightcove and TiVo are announcing a partnership in which storytellers of all sizes will be able to deliver their programming to people's TVs via TiVo. Neat, huh?

New Orleans: Man-Made Disaster Says Corps

Harry Shearer (part-time New Orleans resident) writes...

This weekend, on public radio's Left, Right and Center, the panelists are, as usual, discussing what they believe are the top news stories of the week...

What they didn't choose was the Corps of Engineers report taking responsibility for the drowning of a great American city...

...it was astonishing to listen to these four natter on about the Treasury Secretary, while culpability for the worst man-made engineering disaster in the nation's history was ignored. Trust me, even if Henry Paulson becomes America's worst-ever treasury secretary, he won't cost you and me nearly as much, he won't be responsible for nearly as much suffering, as the Corps' malfeasance in the Crescent City. If it's not a top story this week, when it led NBC Nightly News and got front-page treatment (finally!) in the NYT, when might it be?

And he wrote earlier in the week...
Brian Williams was speaking, and my intention was to ask him, either privately or publicly, why, given his clear and undeniable commitment to the Katrina story, the role of the Army Corps of Engineers and the fact that this was a man-made disaster in New Orleans had not figured more prominently in his broadcasts...

...in a splendid bit of serendipity, that happened to be the day the Army Corps -- here's timing for you -- issued its modified limited mea culpa (no malfeasance found: asked Bob Bea of UC Berkeley, if the work they did didn't do what it was supposed to do, and wasn't built in the way it was supposed to have been, how is that not malfeasance?). So our brief conversation came at the end of a broadcast whose lead story was the news that the flooding of New Orleans was a man-made, not a natural, disaster.

Friday, June 02, 2006

I still think Kelsey was right all along

This Kelsey.

I was asked via email about Squeak's compatibility with the Erlang approach to concurrency.

I’d thought a little about this for Smalltalk when I worked at Gemstone. I don’t know enough about the Squeak VM to talk about it. Like Erlang’s and Gambit Scheme’s VMs, it would require the ability to create many 1000’s of non-OS threads very quickly and run them all fairly. I think Cincom’s commercial Smalltalk VM might approach these numbers.

Other approaches might be to implement Squeak’s VM in Gambit Scheme or use the Squeak compiler’s front end to generate Gambit Scheme code, i.e. give Squeak a new back end. Maybe one way to do this is to replace Squeak’s C code generation with Scheme. If I recall, there is no C code in Squeak, but there is a Smalltalk subset used for the core of the VM implementation and that subset is translated fairly simply into C. If that could be retargeted into Gambit Scheme then you might be off to the races. The Process class, etc. would have some finagling to get them more directly mapped to Gambit’s thread procedures.

One thing about Erlang, and Termite processes (if you don’t cheat and go down to the Gambit level) is they are “shared nothing”, while Scheme threads and Smalltalk processes are “shared everything”. You may want to keep the current Smalltalk definition of Process the way it is, and come up with some new class, e.g. “SharedNothingProcess” that provides the new approach. Then you can run “legacy” code but try to enforce a better concurrency model.

Gambit has per-thread mailboxes and thread-local storage which can be used for this. Smalltalk globals would be considered “bad legacy” and you could try to give thread-local variables a decent syntax.

Implementing a new Smalltalk, moving Gnu Smalltalk, or moving Ruby to Gambit Scheme would be much easier than doing anything with Squeak. And guess what? Scheme *has* continuations. 8^P (I bow to the noble porters of Ruby to really bad VMs. "Continuations" shows up on each of their web pages --- on the "to-do" list.)

But Squeak has a lot of cool stuff. Croquet would figure in there somewhere when it comes to distributed VMs.

What did Kelsey get right?

Using concepts from denotational semantics, we have produced a very simple compiler that can be used to compile standard programming languages and produces object code as efficient as that of production compilers. The compiler is based entirely on source-to-source transformations performed on programs that have been translated into an intermediate language resembling the lambda calculus. The output of the compiler, while still in the intermediate language, can be trivially translated into machine code for the target machine.
In this case the "trivially translated into machine code" means Gambit is the intermediate language. Then gsc translates into C. Then gcc translates into machine code. Ah, that's why you also want something like gsi around for the source language.

That would be a fun and useful project to work on.

Tsung

Interesting tool using Erlang...

In a few words, Tsung is a distributed load testing tool. It is protocol-independent and can currently be used to stress Jabber/XMPP server, but also HTTP, SOAP, and postgreSQL servers. Developed as an extensible framework, this tools can be used to generate very large realistic benchmarks on a limited number of servers.

...Tsung is distributed under the GNU General Public License version 2.

daily zen

The realm of buddhahood is not some external world
Where there is a formal “Buddha”

- Zen Master Ta-hui (1088-1163)

My Web...

...goes to eleven.

(or, I'll see your Web 2.0 and raise you nine Webs. 8^)

Trademarks cost money. Copyright is free, but I probably can't protect this brilliancy with a copyright. I have no lawyers, just this really big, shiny, intimidating copyright symbol. And even that was borrowed.

"My Web goes to eleven" Copyright © 2006 Patrick Logan. All Rights Reserved.

Thursday, June 01, 2006

Portland, Programming Language Capital?

OK, let's see. Here in Portland this year we have OSCON, OOPSLA, the Dynamic Languages Symposium, and now I see we have the SIGPLAN Conference on Functional Programming, and the SIGPLAN Erlang Workshop.

Good thing I'm not planning any long trips out of town this year. I could easily miss several good conferences in one fell swoop.

I have a great submission for the DLS but I have had no time to work on the project, let alone the paper. Next year the conference will probably be half-way around the world. All I can say at this point is it involves various degrees of Ruby, Erlang, and Scheme. Or it would involve them if I had actually made much progress on it.

Today is the deadline for the DLS submissions and all I could do was watch it woosh on past me. I am not sure it would make sense for the Erlang Workshop, but that deadline is June 9, so I can guarantee I won't have an "ACM ready" paper by then anyway. I'd be satisfied to have something to show and talk about at those events, given the opportunity for feedback from some really smart people.

I have started some modest tinkering with Atom. There is another Code Camp here in July. That was a lot of fun last year. I submitted a session for programming with Atom. But the good thing about this conference is it's just about showing some instructional code work, nothing fancy is necessary, and no paper to be written. They don't even like slides with text that isn't code.

Wednesday, May 31, 2006

For Better or Worse?

A fascinating discussion is taking place over at James Robertson's site on globalization, labor, and progress. Below is a duplication of my most recent comment I added there.

Could things be worse? Heck yes. I agree they have been worse. Can things change for the better? Yes. How? Good question. That requires unselfishness to generally take a higher priority than selfishness.

We are genetically predisposed to selfishness. That's not necessarily a bad thing. It got a lot of us to a pretty good place. What's not clear to me is how well selfishness will get us to the next level.

Have we run out of room for selfishness as the driver for "progress"? Have we run out of room for our current definition of "progress" itself?

Are we at a point where for anyone to survive in the long-term more people have to adapt to "unselfishness" as a driver? Why are so many of our mainstream religions apparently based on unselfishness, and yet we do not seem to be predisposed to unselfishness beyond a relatively small group of people, especially those closely related to our own DNA?

Why is it easy to be "globally" unselfish as a result of relatively minor events like the recent tsunami in the Indian Ocean, and yet significantly more difficult to be unselfish as a result of ongoing major events such as the daily rate of deaths due to hunger, or even aids, or malaria?

There are a lot of fascinating questions about how we got here and how we get to the next step. One could argue we are on a good path. On the other hand one could argue we are not, by and large. It's hard to tell.

Monday, May 29, 2006

Roots

From No Fluff Just Stuff 2006 Anthology...

We’re not going back to what we tried once; we’re going back to what others had success with. The industry at large tried to go a different way, and at long last we’ve begun to realize that no matter how many new tools we throw at our problems, software development still isn’t getting any easier. Maybe it’s time to rethink the whole way we’ve been going. The people who really embraced Lisp and Smalltalk early on don’t think those languages failed (except in terms of gaining broad acceptance). On the contrary, most of them that I know are either still finding ways to work with those technologies or else yearning for a return to the good old days.
The industry has been on these merging paths for decades without clearly realizing it. Now it is starting to shed its static appearances as it reaches the tipping point. Soon after reaching that point we will behave as if this is the path we'd bet on long ago.

Saturday, May 27, 2006

Premature Extrapolation

'We should listen to Donald Knuth when he said, "We should forget about small efficiencies, about 97% of the time. Premature optimisation is the root of all evil." This is the most important thing that you'll ever hear as a software developer.'

-Cal Henderson, Building Scalable Web Sites

If it breaks, make it heavier. If it doesn't, make it lighter.

-Paul McCready, Gossamer Condor

A study done by a pair of Canadian psychologists uncovered something fascinating about people at the racetrack: Just after placing a bet, they are much more confident of their horse's chances of winning than they are immediately before laying down that bet...

Like the other weapons of influence, this one lies deep within us... It is quite simply, our nearly obsessive desire to be (and to appear) consistent with what we have already done.

-Robert Cialdini, Influence: The Psychology of Persuasion

Friday, May 26, 2006

Read-Write Web -- Web 0.1?

I vote for Tim Bray's preference for "read-write web". As I understand it that was the original intention of the web, so let's go back to it

Web 0.1?

Feeling Strest?

A blogless(!) friend points me to this item on lowering your strest level...

The vast majority of supposedly 'REST' Web APIs are simply abusing HTTP to carry function calls. I call these APIs 'Service-Trampled REST', or STREST.

Griddle Cakes

OK, I could not come up with a bad title. The best I could do was a really bad title, so to make up for that, here's a recipe for cornmeal griddle cakes. Enjoy.

On to the business at hand...

I'm fairly sure XMPP is to Grid and JINI as HTTP was to WS and CORBA. Give it a few years - instant messaging is where real commodity grid action will take place.
Neat.

Monday, May 22, 2006

Prematurity

Mike Herrick panics from fuzzy about WS-*...

The truth is there is massive premature standardization occurring.
He's got a lot of good posts, subscribe, read them all.

Big Time

Tim Bray on JavaOne and big, formal conferences generally...

If you’ve been to a camp-style event or unconference, some aspects of the whole sit-and-listen-to-the-guy-on-the-stage thing start to grate.
The best "conference" I attended last year was a Code Camp.

Continuations

Tim Bray has an entry that is a continuation from Gilad Bracha, and others have continued from there. Dynamic languages, continuations, and the JVM... the thing about continuations is they are not immediately obvious because they are not available in most languages.

Those that have them have found they are not useful for the everyday programmer's applications. But they do provide a fundamental building block that simplify the several of the building blocks that *do* end up in the everyday programmer's applications.

By the way, continuations *are* implemented in the Rhino Javascript system and the SISC Scheme system for the JVM. I believe they are also in the JVM and dotnet backends for the Bigloo Scheme system. They would be more efficient in the JVM per se, but I'm just saying...

You're not going to see an overwhelming number of programmers saying, "we want continuations!" That will not be an effective gauge for determining their value at the VM level.

The Future of (Presentation|All) Software

Jon Udell writes...

...it's democratic, not elitist, to believe that presentations ought to be first-class citizens of the web, viewable by any standards-based browser with full interactive fidelity. If we've failed to fully democratize the necessary authoring software -- as, so far, we have -- then shame on us. There's no longer any good reason why we couldn't make it easy for people to create effective presentations through the web as well as for the web, and there are plenty of good reasons why we could and should.

Sunday, May 21, 2006

A Thousand Points of Light

Steve Dekorte recalls...

Let's see, so far Bush has:
  • started preemptive wars by lying to the public
  • killed tens or hundreds of thousands of civilians in the process
  • created secret prisons that employ torture
  • exposed CIA operatives for political reasons
  • instituted a massive illegal surveliance on millions of Americans
Did I miss anything?
Yeah, well, there's that little incident down in New Orleans. There are the Halliburton-built detention centers. There were the threats made to politicians if they did not vote for the prescription drug plan give-away to the pharmaceutical industry. There's... it's a long list but a short weekend.

Oh, yeah. There was that attempted overthrow of Hugo Chavez in Venezuela. And...

Um. Thinking. There was that one guy... Osama something, that Bush let get away when he was thought to be cornered in Afghanistan. Of course at one point Bush said... "I don't really think about him very much. I'm not that concerned." But then in the 2004 presidential debate he said... "Of course we're worried about Osama bin Laden. We're on the hunt after Osama bin Laden. We're using every asset at our disposal to get Osama bin Laden."

Then there's that fake news reporter in the White House, Jeff Gannon, who also turned out to be a gay porn star with several unexplained visits. But there's the whole anti-gay marriage drama to get Bush re-elected.

And speaking of fake news, there are those news footages which turned out to be supplied by the White House to the media to run as real news. Although Bush acknowledged having them made, he would not agree to discontinue the practice.

And, sigh. Remember we are just stupid, gullible monkeys. And he's the leader of the monkey world. What more can you expect?

Saturday, May 20, 2006

Erlang, Now With SMP

The latest Erlang is out, and now supports SMP with much less effort than before.

SMP is supported by most modern operating systems like Linux, Windows, Mac OSx, Solaris and is becoming more important now when dual processors, hyper-threading technology and multi-core systems are a reality.

With Erlang, most of the problems which occur in multi-threaded programs have been solved once and for all in the Erlang VM and do not have to be handled by the application programmers.

In the SMP version of the Erlang virtual machine, there can be many process schedulers running in separate OS threads. As default there will be as many schedulers as there are processors or processor cores on the system.

The SMP support is totally transparent for the Erlang programs. That is, there is no need to change or recompile existing programs. Programs with built-in assumptions about sequential execution must be rewritten in order to take advantage of the SMP support, however.

In this release, the Erlang VM supports SMP with focus on stability. There will follow a number of subsequent steps with necessary optimizations and support for more platforms.

The Da Vinci Code Movie

I saw The Da Vinci Code last night on a big, big screen. Ebert gave it 3 of 4 stars. I would give it 3.5 or 4 of 4.

I've read some review such as Shawn Levy's review in The Oregonian gave it a B- and he complained the movie did not move quickly enough. I also read that some actors just "mailed in" their performances, but at least not to the extent that I noticed.

I thought the movie moved well. Details were cut from the book, obviously. Some dialog and scenes changed a good bit, especially at the end I think. I read the book over a year ago.

The book really should not have made a good movie, I thought at least when I heard it would be done. The book is too much talking about the past and puzzle solving. As it turned out the director, scenarists, and effects people handled that well, much better than I thought it would be presented.

I think the movie has more humor than the book, and it works. I think the movie is a bit more conciliatory than the book to traditional Christians and even the Opus Dei nut jobs. Evangelicals generally will not be happy of course. Anyway they're busy drinking really bad punch out of really small glasses and eating really bad cookies, at their church listening to an "expert" arm them with the facts they need to convince their friends that this movie is just fiction.

Well, it's good fiction, better than most stories in "The Bible". I am going to see it again this weekend if possible. The sun is shining more than expected though.

Tuesday, May 16, 2006

Heresy

How ironic that some believers in a virgin birth and a resurrection from a death (which by the way show up in many stories about various gods) want to ban others from seeing a movie whose plot includes a "heresy" in that it proposes the possibility that two people (who themselves may be fictional for all we know) may have been married two thousand years ago.

Ah. Yeah. Run that by me again?

Marissa Laguardia, chairwoman of the Philippine government's movie-review panel, told the AP... "So are we just out of the Stone Age?"
No, sometimes it seems we are still *in* the Stone Age.

Friday, May 12, 2006

Virtual Machines for Small Form Factors?

Tim O'Reilly writes about the value of small form factor devices connected to Internet data...

It's a sign that special purpose hardware providing access to internet data services may eventually be commonplace.
On the other hand I don't want to carry around five or ten devices. I'd rather have a three form factors and carry around one of them, the one that is most useful for the moment. That may be a wrist watch sized device, a larger cell phone sized device, or a small laptop sized device.

I'd like virtual machines running on each of these with images of the systems I want to use. Most of my systems would run on any of the form factors and use as much of the capabilities of each as possible. Everything would be synched, backed up, and enhanced through the Internet to my big system that stays put at home and/or at some other site.

People with ideas for new capabilities would not design new hardware, just new virtual images for the common hardware. Every year or so I would upgrade one or more of the devices to the newest physical devices available. All the old images would continue to run.

Thursday, May 11, 2006

Expressionism

Update: Don sets me straight, and rightfully so with a good exposition. I did not do my homework.

End Update

Don Box writes about compiling code on the fly in C# 3.0, kind of, I think...

Expression<Func<int, int>> expr = a => a + 3;
Console.WriteLine(expr); // prints "a => Add(a, 3)"
Func<int, int> func = expr.Compile(); // LCG's an MSIL method from the expr
Console.WriteLine(func(4)); // prints "7"
He equates (incorrectly from what I can tell) the above C# 3.0 with the following Scheme from 25 years ago...
(define expr '(lambda (a) (+ a 3)))
(display expr)
(define func (eval expr (scheme-report-environment 5)))
(display (func 4))
I think the comparison has some flaws. Maybe I just don't know enough about C# 3.0 (until just now I knew nothing about it).

First of all the expression (quote (lambda (a) (+ a 3))) is *data*, in particular a list of atoms and nested lists of atoms. That list is bound to a variable called expr, whose name is conveying that the data *may* be evaluated as a lambda expression. But it is not a lambda expression, it is a list. The C# code appears to require something to be declared as an Expression. Is such a class something that can be built programmatically? Or does it have to be declared and constructed intact?

Plus if it is already an expression, why would it need to be compiled? In the Scheme example, the list has to be evaluated to get a lambda, i.e. the function that the original list of atoms resembles. If you start with an expression, you should not have to do an eval or compile to get an evaluatable thing. That's just wrong. You'd just do this...

(define func (lambda (a) (+ a 3)))  ; No QUOTE form. It's already a function.
(display (func 4))                  ; Just apply it.

Or even more simply...

(display ((lambda (a) (+ a 3)) 4))  ; No QUOTE form. Just apply it.

One more thing: where is the QUOTE form in the C# code? The quote mark in Scheme is short hand for wrapping a special form (QUOTE ...) around something that you consider "data". i.e. QUOTE prevents evaluation. Does the Expression class automatically get recognized by the C# evaluator to prevent the RHS from being evaluated? Come on, either the RHS is data or the RHS is an expression. Or can the compiler only work with a special kind of data that happens to be called an Expression. Weird any way you slice it from what I can make of it.

I don't get it, and maybe there is a more complete and logical explanation. Maybe the answer is "Pat, you're confused because you already know a simpler language like Scheme." Yeah, so why not use C++?

As it stands it looks like there is a bit of confusion and complication that separates C# 3.0 from simpler, more agile languages like Scheme, Python, and Ruby.

Just use those languages, folks. Don't get strung out on these incremental "improvements" to a language that was too complex to begin with.

Wednesday, May 10, 2006

Sunday, May 07, 2006

Tell All The People - Follow Me Down

A musical tribute to Stephen Colbert...

There's no denying the huge supporting role Jon Stewart played in this victory. Both Stewart and Colbert had to use their people-skills over a long period of time to gain access to their marks. Jon Stewart loaded the bases and Colbert hit it over the fence. It reminds me a bit of the tactics of the "Yes Men".

Friday, May 05, 2006

What's On Your Hard Disk

Found on ACM Queue's "What's on your hard disk" results...

Who: S... R.......
What industry: Technology vendor (software, hardware, etc.)
Job title: Programmer/Analyst
Flavor: Develops on Windows for all platforms (JVM)
Tool I love!
Squeak. I am forced to use Java at work to build enterprise applications, but at home I play with and enjoy Squeak. After eight hours of working in a traditional IDE, coming home to Squeak is pure joy. Its system browser and method finder are excellent programmer resources.
Tool I hate!
Eclipse. This IDE suffers from a misleading and often incorrect debugger. Furthermore, it can’t refactor multiple files correctly and has a buggy interface. But it is free and nicely configurable. I love it and hate it.

Links

Follow this link because Bill de hÓra has some good links to follow.

Thursday, May 04, 2006

Not Yet In A Groove

Kris Tuttle of Research 2.0 on Microsoft's future...

Ray Ozzie seems to be the face of future innovation at Microsoft these days. So far we are pretty unimpressed. We have used Lotus Notes and Groove. Both definitely had visionary elements in their functionality but operationally left a good bit to be desired. In fact Groove reminded us of Outlook in terms of the vast resources it consumed relative the functions delivered. (We don't use any bloated products anymore in this shop...) Ray has been a trooper and introduced concepts like the Live Clipboard that some like, we think it treats the symptom and not the disease.
Maybe give him some time. I was kind of shocked years ago when I read about the technology developed for Groove.

Kris in a subsequent post writes about expanding her use of Google ads to incude Microsoft's ad machine...

So wanting to be fair I went to MSN AdCenter today to set it up in a similar fashion to how our company uses Google AdWords. Unfortunately I didn't get to square one because they don't support FireFox.
I wonder if Groove had leveraged open source components in a platform-independent way if it would have been a bigger success and still evolving. Microsoft has a great big wall around their universe, nevertheless it is still a wall and they continue to imprison themselves.

Agile Languages and SAP

Piers Harding announces...

I'm proud to announce the latest updates of the SAP RFC integration packages for Perl, Python and Ruby.

Wednesday, May 03, 2006

Dup or Ref?

Bill de hÓra writes...

Both JRuby and Jython have experienced stop start development.
And then goes into several interesting directions. (BTW, the original Erlang book is good, but not essential for adopting Erlang. Instead start with Erlang in Real Time which is online and more in-depth. Everything else you need is on the erlang site, including the mail lists.)

Anyway my thought is that running multiple languages on the JVM or CLR is beneficial simply because there are no *really* good inter-language communication mechanisms. Being in the same OS process is useful but certainly there are times when that is undesirable for security and reliability reasons.

Given the oncoming multi-core low end systems, the oncoming many-core high end systems, and the realization that "SOA" in its best possible interpretation is just "reality" for tomorrow's programmers (cf. "Notes on Postmodern Programming") we need to get over this "use my OS/VM/language" / "no, use *my* OS/VM/language" parade asap.

Erlang may never be popular regardless of the books available or not. (Then again with ejabberd, Erlang *may*... er, forget it. Jabber will more likely be the inter-language communication mechanism I claim we're missing.) But just as Lisp got data right, and Smalltalk got objects right, Erlang got processes right.

Sooner or later your language and runtime will too. And the sooner the better because I cannot count on anyone porting my language to your runtime, and I sure don't have any incentive to do so myself.

Meanwhile rather than try to program all of the latest Ruby or Python in the JVM or in the CLR, I am wondering whether we need to expose Java and C# libraries via their own processes connected to a simple communication mechanism with a simple, reflection-based interpreter on the receiving end.

Hey, JVM, just sit there and do what I tell you. I don't need that to be more than the current implementation of Jython or (the upcoming 1.0 release of) IronPython. Or take your pick, maybe Javascript is the lingua franca via Rhino and... er, dotnet does have a Javascript interpreter, right?

If I ship my application to you as a, say, a VMWare player and image running the OS of my choice, pared down to what my application needs, plus a few OS processes running on that image, each implemented in the language of choice for that process, plus some inter-communication between them, and all of them going out to the real world as desired, then... would I be happy with that kind of Gordian Knot post-modernism?

Just a Little is Enough

Steve Loughran writes...

As an aside, ...it's clear that Tomcat is all that most server-side [Java] installations need.

More Colbert Gushing

Steven Hart writes that Colbert's performance is like Swift delivering A Modest Proposal in the king's court. Of course this is still America and critics are deflecting a lot of heat by writing about how great America is that Colbert has the right to do such a thing. But Hart responds to those statements correctly...

Colbert is as much a target for big media now as Howard Dean was in 2004 once he announced on NBC's Meet the Press that he'd be in favor of disallowing General Electric from owning NBC. He will have more than a little trouble getting the White House Correspondents' forum back again for similar comments. Making this into a triumph for "free speech" is missing the point by as wide a margin as the adminstration missed so many calculations about the Iraq invasion.

It's one thing to march into the lion's den and yank a fistful of hairs from his mane. It's quite another to march into a den full of people who think they're lions and rub their noses in the fact that they're nothing more than fat, spayed tabby cats who are less interested in exposing the powerful than they are in curling up by their feet.

That's what Stephen Colbert did at the White House Correspondents Dinner, and for his perfidy he will now be subject to their endless mewling and kitty-kat clawing. Even if he loses his nerve and backtracks with an apology — something I don't think for a second he would actually do — he will always be their target. After all, the eunuchs of the court were often the most devious and vengeful of the players surrounding the king...

Colbert's performance was a display of wit at its most lethally cutting. He went into a room with the most powerful man in the world and his courtiers, and he excluded them from the land of the free and the home of the brave.

If the White House courtiers had an ounce of self-respect, they'd all book a flight to Alaska, find a good-sized ice floe and shove themselves out into the ocean. Instead, they'll just go about their routines. They may walk funny for a little while, after the way they've been used, but after six years of covering the Bush administration, they're probably accustomed to that kind of thing.

Daily Zen

Daily Zen...

"You’re traveling beyond hope of return"

- Hsieh Ling-yun (385-433 C.E.)

I Have A Brief Statement...

The Daily Show and the Colbert Report are two of the three television programs that I know of where real news is reported. Democracy Now is the third, and ranks above the comedy shows. TDS and TCR though are simultaneously the two comedies worth watching. (If Amy Goodman could even just learn to crack a smile once and again...)

Colbert has balls, so view the videos and thank him for what he did to Washington and the press. Some people are arguing that it was uneven or did not have a comedy crescendo. I thought it was hilarious in places but to be appreciated overall just as a supreme "fuck you" to the establishment in Washington.

Even by TDS and TCR standards, he blew past them in an opportunity that he may never have received again to spell it out plainly right to the president's and the press' faces... the establishment is circling the drain in credibility, so stop with the games.

"It’s not just that Colbert’s jokes were hitting their mark. We already know that there were no weapons of mass destruction in Iraq, that the generals hate Rumsfeld, or that Fox News lists to the right. Those cracks are old and boring. What Colbert did was expose the whole official, patriotic, right-wing, press-bashing discourse as a sham, as more ‘truthiness’ than truth."

-Michael Scherer, Salon Magazine

From Colbert's "audition tape" for the White House Press Secretary's job...

"I have a brief statement. The press is destroying America."

Tuesday, May 02, 2006

Losing the War (No, not *that* war)

If Microsoft looks at Ruby as competion then Microsoft has already lost the war, let alone the battle. Whatever happened to that IronPython thingy? I thought that was supposed to make any agile language first-classable on the CLR.

Wednesday, April 26, 2006

Jabber

"Like email, but really fast"

-Peter Saint-Andre (Jingle.pdf)

Wednesday, April 19, 2006

Heresy

I enjoyed so much reading the abstract from Avi Bryant's upcoming OSCON 2006 talk about Seaside, I decided to replicate the whole thing here...

Over the last few years, some best practices have come to be widely accepted in the web development world. Share as little state as possible. Use clean, carefully chosen, and meaningful URLs. Use templates to separate your model from your presentation.

Seaside is a web application framework for Smalltalk that breaks all of these rules and then some. Think of it as an experiment in tradeoffs: if you reject the conventional wisdoms of web development, what benefits can you get in return? Quite a lot, it turns out, and this "experiment" has gained a large open source following, seen years of production use, and been heralded by some as the future of web applications.

In this talk, you'll learn in-depth about Seaside's heretical design choices, and how it benefits from them. In particular, you'll see how closures and shared state let you ignore the details of URLs and query fields; how the right HTML generation API makes you less tied to your presentation layer, not more; how continuations free you from ever thinking about workflow as a state machine again; and how all of this combines to enable modularity and reuse like you've never seen before.

No prior Smalltalk experience necessary; open mind recommended.

Monday, April 17, 2006

Waiting for WS-Success

Dan Creswell writes about the search for real, rich SOAP-based systems...

Real-world examples are what I measure on, rightly or wrongly.
Maybe they could be captured on the WS-Success wiki when they are found.

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.