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

Search This Blog

Friday, May 30, 2008

XMPP Gears and Damn All We Need Now Is a Better UI Programming Model

Bill de hÓra predicts...

if Gears (or something like it) becomes ubiquitous (and it will), then eventually XMPP will become a protocol option alongside HTTP, allowing data to be pushed down into the client.
I'm for it. Note Adobe's AIR has all of these things, and then some, not to mention an API for either Flash/Flex or HTML/Ajax-based UIs.

I'd love to see more competion to the browser's current UI programming model, which is still what you are left with after adopting Gears. At least AIR gives you a choice, and Flex is open, so conceivably Google, Mozilla, or whoever could build off of Flex.

(I discount Lively Kernel for the time being. It's probably got more promise than I give it credit for. SVG has a lot of interesting capabilities especially for display, but it's still too clunky for the interactive bits. Kind of like NeWS vs. Display Postscript, ironically.)

Even Flex is so 1990s. There have been several significant improvements on that old MVC-ish model from the pre-web client/server days. Most of them in fact *pre-date* the 1990s adoption of Smalltalk's 1970s MVC. Still Flex is way better than HTML/Ajax for developer countenance though.

Thursday, May 29, 2008

An Open Source Twitter Clone

I am not a twitterer, er, one who twits. Well some might argue with
that last bit.

But one thing I've wondered is why the fascination with this service
that as far as I know is run by one outfit, has some "issues" (e.g. I
clicked on Mike Herrick's twitter URL the other day and each time saw
nothing but apologies from twitter for failing to work properly), and
is not federated across multiple providers as with, well, the web.

And I've wondered why people don't just use XMPP which is a federated
messaging platform with pub/sub topics etc. Or why not create a
twitter-ish system that can be federated.

So someone just published the source to an erlang-based twitter clone...

http://twoorl.com/
http://code.google.com/p/twoorl

I don't know if this specific clone is the answer, but it begs the question.

Sunday, May 25, 2008

McCain the Maverick

I'm old enough to remember the savings and loan scandal as an adult. I'm jaded enough to be tired of this "McCain is a straight-talking maverick" hoodwink. Let's not forget he is from an "elite" family, and his questionably unethical interfering on behalf of rich beneficiaries goes back decades and involves activities that has cost us real money, and some worse. From the wikipedia article on the Keating Five, of which McCain is one...

"Gray testified that several U.S. senators had approached him and requested that he ease off on the Lincoln investigation. It came out that these senators had been beneficiaries of $300,000 (collective total) in campaign contributions from Keating. McCain received $112,000 by 1987 from Keating and Keating's relatives and employees to McCain's Senate campaign, more than any of the other Senators. In September 1987 National Thrift News was the first media outlet to break the story. In October 1989 The Arizona Republic reported that in addition to campaign contributions, McCain's wife and her father had invested $359,100 in a Keating shopping center in April 1986, a year before McCain met with the regulators. The paper also reported that the McCains, sometimes accompanied by their daughter and baby-sitter, had made at least nine trips at Keating's expense, sometimes aboard the American Continental Corporation (parent of Lincoln) jet. Three of the trips were made during vacations to Keating's opulent Bahamas retreat at Cat Cay. McCain also did not pay Keating for some of the trips until years after they were taken, after he learned that Keating was in trouble over Lincoln. Lincoln Savings and Loan's collapse is said to have cost taxpayers $3.4 billion."

Animated Graffiti

Via Signal vs. Noise, the following video is incredibly inventive. The theme becomes tedious for me before halfway, but still... I'd like to see more like this with a better story to tell...

Saturday, May 24, 2008

Erlang and the Facebook Chat Architecture

Seen on InfoQ re: the Facebook Chat Architecture...

Another challenge was delivering messages in real time. Facebook choose a technique whereby the client pulls updates from the server, similar to Comet's XHR Long Polling Process...

Facebook choose a combination of C++ and Erlang to implement clustered and partitioned subsystems. The C++ module is used to log chat messages, while Erlang "holds online users' conversations in-memory and serves the long-polled HTTP requests". epoll, a new system call introduced in Linux 2.6, was used to drive the Erlang module. Eugene states why the decision was made to go with Erlang...

because the problem domain fits Erlang like a glove. Erlang is a functional concurrency-oriented language with extremely low-weight user-space "processes", share-nothing message-passing semantics, built-in distribution, and a "crash and recover" philosophy proven by two decades of deployment on large soft-realtime production systems...

The secret for going from zero to seventy million users overnight is to avoid doing it all in one fell swoop. We chose to simulate the impact of many real users hitting many machines by means of a "dark launch" period in which Facebook pages would make connections to the chat servers, query for presence information and simulate message sends without a single UI element drawn on the page.

I am kind of amazed to see the attention Erlang has been given over the last couple two three years. OSCON in July here in Portland will have at least a three Erlang related sessions: a couple of tutorials and a presentation.

Mike Herrick on CSI and on InfoQ

InfoQ interviews Mike Herrick re: using Rails and JRuby for the CSI. Mike also blog'd about his project recently...

When deployed, UT-NEDSS project will directly contribute to the prevention of sickness and death by effectively collecting, identifying, tracking and trending information gathered about infectious diseases and bioterrorism attacks. Additionally, this unique partnership is providing lessons for public health informatics

Steve Vinoski on RPC and Messaging

There's been a stream of messages on the erlang list about RPC. Steve Vinoski's put an explanation of RPC and his position on his blog. Now he's followed up on the email list with a position on integration generally, and pub/sub messaging in particular...

One of the most effective forms of enterprise integration I've seen over the years is publish/subscribe messaging. I worked many years for CORBA vendors, and we'd often lose potential deals to messaging systems. Message queuing systems work well because (in no particular order):
  • they don't pretend to be programming language procedure or method calls, so they avoid the associated impedance mismatch problems
  • they don't try to hide distributed systems issues
  • coupling is low -- drop a message into a queue here, pick up a message from a queue there
  • queues can be persistent, or more generally, delivery guarantees can be varied as needed
  • asynchrony
  • payloads need not conform to some made-up IDL type system
  • getting two different messaging systems to interoperate is easier than getting two different RPC or distributed object systems to interoperate
The problem with messaging systems, though, is that traditionally they've been quite expensive. Thankfully, I believe AMQP (http://amqp.org/) solves that issue nicely, and of course Erlang is the perfect way to implement it, which Alexis, Tony, and the rest of the RabbitMQ guys have already done (http://www.rabbitmq.com/).
I agree with Steve's take. The best pub/sub mechanism I have experience with has been Tibco's rv. All the Tibco layers above it have been enterprisey bits to make a sale. The basic rv bus is super-easy to just use from C, Python, Java, anything. Horribly expensive back in the day, and I assume it still is.

AMQP should have helped address this. But I've not seen much on the internets about AMQP over the last many months. I wonder if this is going to go anywhere? Or am I just missing the traffic?

I'm not sure XMPP pub/sub in the enterprise is going anywhere too quickly either, but that's another candidate for getting beyond vendor lock-in for enterprise messaging.

Why on earth Cisco is defining a new RPC protocol is beyond me.

And to any AMQP folks: the redirect from http://amqp.org/ seems broken.

Enterprises should be moving toward HTTP first and foremost, figuring out what's happening with XMPP for various other kinds of messaging, and/or AMQP in situations where HTTP and XMPP don't seem to cut it.

Friday, May 23, 2008

Matthias Felleisen speaking at Portland State University on June 2

Just rec'd the following announcement on the pdxfunc email list...


Matthias Felleisen is speaking at PSU a week from Monday (June 2). The
talk is open to the public.

"The First Year in Computer Science"
Matthias Felleisen
Northeastern University
2nd June, 16:40–18:00
Location: Hoffman Hall Rm 109, Portland State University
Abstract

My team and I have developed an alternative approach to the first-year courses on programming and computing. Unlike conventional approaches, ours focuses on designing programs in a systematic manner. The syntax of the chosen programming languages (both Java and Scheme) is only discussed as needed to support design principles.

Field tests with over 500 high schools and a dozen colleges have shown that the approach produces better students than conventional approaches that use a single language.

In several controlled studies, we could also show that students find our curriculum more appealing than the AP curriculum.

In my talk, I will provide an overview of the project, especially its intellectual premises and principles. My goal is to encourage you to think about the first year in a different way. The old ones are of questionable value. If we want our beautiful discipline to survive, we must find a good way of teaching it."

http://web.cecs.pdx.edu/~colloq/felleisen-firstYear.html for more information.

Sunday, May 18, 2008

More Ted

This is part two of my response to Ted Neward's latest misunderstanding of Erlang. Ted wrote to Steve Vinoski...

Sorry, Steve-O, but I think you're out in left field on this one. I'm happy to argue it further with you over beer, but if you want the last word, have at it, and we'll compare scores when we run into each other at the next conference.
Everything I've read of Steve's tells me he's well informed by actual experience. Ted's writing exhibits the most basic misunderstandings. I wonder why Ted didn't spend a little beer time with some experts before attempting to write with supposed authority.

More from Ted...

any time we incorporate something directly as part of the language, there's all kinds of versioning and revision issues that come with it. This, to my mind, is one of Scala's (and F#'s and Lisp's and Clojure's and Scheme's and other composite languages') greatest strengths, the ability to create constructs that look like they're part of the language, but in fact come from libraries.
Most of Erlang's power comes from libraries, but Ted wouldn't know that. Erlang the language is very small and expressive, but Ted wouldn't know that. Erlang's not really suffered from revision issues over the nine years I've been following the language, but Ted wouldn't know that. And Ted apparently didn't bother to ask anyone or read anything that might inform himself.

I agree with Ted's observation that extensible language syntax is desirable. Erlang's extensibility is cumbersome and not-too-beautiful. That's not the goal of Erlang though.

So you have to decide whether the benefits of Erlang outweigh issues like this. By the way, Gambit Scheme has Erlang-like concurrency performance, although shared-everything. But since Scheme can be used to define new languages such as Termite, it can be used to create syntactically-extensible Erlang-ish systems.

If you decide to go with Erlang the decision should be based on what Erlang is now, and not expect Erlang to change much. It's been largely stable as a language for years, as opposed to the arms race in Java and Java-like worlds. Language extensibility should not be as important to you as the simple Erlang programming model. This is a reasonable approach to take. Erlang is a known quantity, well proven. Not every language has to be as extensible as Lisp, in fact most are not.

Beware of languages like Scala and Clojure that intend to be safer concurrently than Java - they still run on the JVM and integration with Java code. So by definition their safety only can go so far.

I do criticize Erlang for having its own VM (though I think it's not a VM, it's an interpreter, which is a far cry from an actual VM)
Maybe we should criticize Java for having its own JVM? Why doesn't it use Smalltalk's or Erlang's which pre-date the JVM? (Trick question. The JVM, and Hot Spot in particular, is based on ideas developed in Smalltalk, etc. Essentially the JVM is a dynamic language VM plus layers of cruft.)

Not much digging would have told Ted that Erlang compiles to native code or to an intermediate compiled code. Ted's misleading claims are heading into the dangerously ignorant. Why should I believe anything Ted writes about any topic? When Ted writes "I think that..." I think that we should read it as, "I'm guessing that..."

The JVM and the CLR have (literally) thousands of man-months sunk into them to reach high levels in all those areas. Can Erlang claim the same?
Well, yeah. I don't know how many "man months" it stacks up to be, but Erlang has been around for decades in some very demanding situations. Did Ted bother to look into any of these VM questions?
Best part is, the IT department doesn't have to do anything different to their existing Java-based network topology to start taking advantage of this. Can you say the same for Erlang?
If the architecture is going to change from "big, honkin' J2ee behemoths" to highly concurrent, lightweight interaction, then the topology should change. This is true whether moving from J2EE to Erlang or J2EE to JRuby/Rails or J2EE to Project Zero or J2EE to anything reasonably resembling modern best practices.

Moving to Erlang can take advantage of existing Java bits using the various network protocol standards or CORBA or SOAP or the JInterface class library which makes a Java application act like an Erlang node.

Frankly, whether the application you're monitoring hooks into the monitoring infrastructure is not really part of the argument, since Erlang doesn't offer that, either. I'm more concerned with whether the infrastructure is monitoring-friendly... if Erlang ties into SNMP out of the box with no work required by the programmer, please tell me where that's doc'ed and how it works!
Apparently Ted's world of monitoring begins and ends with Java and dotnet's JMX and WMI. How would you monitor both Java and dotnet? SNMP likely. Both JMX and WMI can be hooked into SNMP. SNMP is the internet standard, more mature, and extends beyond Java and dotnet.

I've never used it, but just doing a quick check shows that Erlang has a pretty extensive SNMP api and Reference Manual, and User Guide. Hmm. Did Ted even bother to look?

Yes, the JVM could easily adopt the multi-process model if it chose to. (Said work is being done via the Java Isolates JSR.) The CLR already does (via AppDomains).
I addressed Erlang vs. AppDomains in my previous post. These are clearly two different mechanisms with two different intents: AppDomains provide application isolation; Erlang processes provide finer-grained isolation of concurrent activities ("actor"-like) within an application.

Within an application neither the JVM nor the JVM-ish CLR provide Erlang-like processes. Scala and Clojure go a good bit of the way, but the advantage of Erlang is in its simplicity and combination of concurrency programming _and_ management. This goes well beyond a little bit of syntax around Java threads within a single JVM.

Barry Kelly has a really good blog post explaining more about these various VMs and Scala's Lift framework and implementation of Actors.

Toward Finer Tuning of Definitions of Processes and Languages, Reliably

Here's an attempt to define terms more finely (finally?) after reading the latest (final?) response from Ted Neward to Steve Vinoski's attempts at helping Ted to clarify differences between Erlang and other languages and run-times, esp. those based on Java/JVM-ish. At a superficial level of understanding what Ted writes has some meaning. Just enough to be troublesome. So here's my pass at making clarifications.

The first terms to narrow in on are "process" and "thread" as they are used in various languages and operating systems. There are similarities for sure, but the subtle differences are the important aspects when making comparisons. Ted writes a few things using these terms...

Processes in *nix are just as vulnerable to bad coding practices as are processes in Windows or Mac OS X
Aside: Mac OS X _is_ Unix. But that's for a different debate on the merits of Windows per se.

Anyway. I don't expect anyone to argue with Ted on this point, so let's dig deeper into "bad coding practices" and processes. Erlang is a "mostly-functional" language and there is very little shared memory in its concurrency model. This removes many opportunities for bad coding. So can we say that programming an operating system process in Erlang is less vulnerable than programming an operating system process using most popular languages? I would say yes, generally.

the robustness and reliability of a system is entirely held hostage to the skill and care of the worst programmer on the system
The emphasis is Ted's, not mine. There are many fine points to be made about this claim. One is the term "entirely" and another is the term "system". But first is the observation that this claim is about development practices more than anything else. To argue about language and mechanism shouldn't we assume that the teams are skilled at least in their own languages and mechanisms?

Let's say no and look deeper. You won't read much Erlang literature before you come across terms like robustness and reliability, and explanation of language constructs and framework mechanisms that support these traits.

On the other hand one can program in Java and similar languages for years before realizing that attention to robustness and reliability are even the developer's concern.

Back to "system" and "entirely" being at the mercy of the worst programmer. Perhaps the most important point made by the Erlang experts is to expect the worst and to design your system to recover from that. The Erlang culture does its best to help you isolate bad parts and the Erlang mechanisms make that isolation and recovery easier than with most other systems.

Erlang's model is similar to the CLR's AppDomain construct, which has been around since .NET 1.0, and Java's proposed "Isolate" feature which has yet to be implemented.
I'm not going to presume to know anything more about AppDomains than Ted know's about about Erlang, but this comparison seems true only barely. Here's some information I found about AppDomains...
The main purpose of an Application Domain is to isolate our applications from other applications. Application domains run on a single Win32 process... Objects in the same Application Domain communicate directly while Objects that exists in different Application Domains interact with each other by transporting copies of objects to each other or by using proxies for message exchange (by reference).
Any somewhat-skilled programmer familiar in the least with Erlang should be able to tell you significant differences between the AppDomain described above and Erlang's process model. I'm bothered that Ted Neward has such a large stage for making superficial statements that these mechanisms are in any way meaningfully the same. This is a significant disservice to programmers following his writing, trying to learn useful information. If Ted does not have (apparently) even a few days worth of reasonable Erlang experience or even reading, why should he presume to make such significant and horribly misleading statements to his large audience?

Here are the significant differences between these two mechanisms (Erlang processes and dotnet AppDomains)...

  • AppDomains appear to be used to put distinct applications inside the same Windows OS process.
  • Erlang processes are used to decompose a single application into many, small, independent, shared nothing processes.
  • Objects in different AppDomains are considered separate and rarely-interacting.
  • Processes in Erlang are roughly the same "size" as an instance of a major role-playing object in a single application. They collaborate with other processes frequently and are highly interactive.
  • Objects in an AppDomain are "shared-everything", running concurrent, shared-everything threads.
  • Erlang processes (the equivalent of objects in dotnet) in an application are "shared-nothing".
  • AppDomains pass copies of values or references to objects (as far as I can tell from this one article).
  • Erlang processes always pass copies of values. Erlang and its frameworks per se do not provide references, and so it's "shared-nothing" all the way down. The equivalent of "reference to an object" in Erlang is "identifier of a process".
  • AppDomains appear to be a large-grain, compile-time, declarative mechanism. Any Windows OS process would have just a few AppDomains. I would suppose these number in the dozens per OS process.
  • Erlang processes are a fine-grain, run-time, dynamic mechanism. An Erlang node (essentially an OS process) would have many hundreds of processes or more.
Ted continues...
if the argument here is that Erlang's reliability comes from its lack of shared state between threads, hell, man, that's hardly a difficult architecture to cook up. Most transactional systems get there pretty easily, including EJB, though then programmers then go through dozens of hoops to try and break it.
Ted does a pretty good job of hinting that EJB is a broken model. EJB isolation is more like an AppDomain. EJB separates one application from another, with fairly laborious mechanisms required to get them to communicate with each other.

Within an EJB application there is supposed to be no concurrency at all. And so again this is the opposite of Erlang. Erlang encourages high concurrency and ease of interaction. But these points are apparently lost on Ted. Usually one cannot read a single page of Erlang literature without having this made absolutely obvious.

The next post will get into Ted's arguments about language and common run-times.

Thursday, May 15, 2008

April 2008 Game Console Sales

Wii ------------ 714,200 units
Xbox 360 --- 188,000 units
PS3 ---------- 187,100 units

(NPD Group)

http://blog.seattlepi.nwsource.com/microsoft/archives/138983.asp?source=rss

Tuesday, May 13, 2008

A Little Knowledge

Steve Vinoski is in a bit of back and forth with another blogger about
Erlang vs. other languages, and how easily one could adopt the best
bits of the other. Steve implies, correctly, IMO, that to perform this
kind of assessment requires a fairly good understanding, or at least a
fair bit of research, into the various candidates.

http://steve.vinoski.net/blog/2008/05/09/thinking-in-language-but-not-clearly/

I've seen several attempts to build "erlang in x" where x = common
lisp, python, java, dotnet, etc. To the extent I've followed them they
implement a fraction of the message passing and then don't go much
further. Scala, etc. on the jvm and those on other conventional
runtimes have a problem. Integration with Java instances within those
runtimes is not shared-nothing. You have to remain aware of what is
and what is not following the actor paradigm.

Erlang's JInterface is probably a better integration mechanism in the
long-run than running in the same shared-memory OS process.

As for monitoring, certainly a quick glance would have shown Ted there
is SNMP, as Steve points out. But also isn't the entire
process-linking and supervisor hierarchy an important kind of
"monitoring", i.e. "monitoring for availability"? This is something
all these other platforms lack.

So the more I think about it, the less suited these other platforms
are for messaging amongst themselves *or* for monitoring!

Then I came across Avi Bryant's post on Strongtalk, a high-performance
implementation of Smalltalk, correcting an apparently common
misunderstanding that the speed has something to do with the optional
type checker...

"Why do people make this stuff up? ... Strongtalk was that much faster
whether you used the optional static type system or not. Strongtalk's
optimizing compiler completely ignored the types, and it [types -ed.]
made your program run not one iota faster to add them."

http://www.avibryant.com/2008/05/those-who-misre.html

Your Architecture's Agenda

Phil Windley writes...

"Designs are full of defaults--some explicit and most of the implicit.
Programmers don't pay enough attention to defaults. Rail's "convention
over configuration" is a great example of a system that carefully
thought through defaults. 37 Signals calls this concept opinionated
software."

http://www.windley.com/archives/2008/05/whats_your_architectures_agenda.shtml

Friday, May 09, 2008

Isn't That What The Internets Are For?

Joe Wilcox watches Microsoft and wonders...

"Mesh is the only thing that really makes sense out of a Yahoo
acquisition to me. Yahoo has rich content services—and they're
everywhere. If Microsoft could plug Mesh into that infrastructure,
fast, and flip the switch "Wow!" Imagine, for example, Mesh making
Flickr photos instantly available to all your PCs, cell phones and
TVs. Software plus hardware plus services."

But isn't that what the internets are for?

http://www.microsoft-watch.com/content/web_services_browser/yahoo_between_a_rock_and_a_hard_place.html?kc=MWRSS02129TX1K0000535

Wednesday, May 07, 2008

Another Cool Smalltalk Tool

In addition to being such a simple and expressive language, Smalltalk should be known for its great collection of tools. Here's another one that was recently developed at UIUC, a Smalltalk Mecca...

Algernon was developed by Erik Hinterbichler and Joey Hagedorn with their CS598 classmates, working with Professor Ralph Johnson of the Software Architecture Group at UIUC. The developers say that Algernon provides lightning quick access to categories, classes, morphs, and global variables in your image, and is inspired by tools such as Quicksilver and LaunchBar for Mac OS X. Like Quicksilver, it learns from your behaviours, and will prioritise options that you use most often.

Good Bits, Bad Bits

Michael Nygard posted about SAP's SOA capabilities. I wasn't sure if he'd appreciated their complexity, but he does emphasize that in a comment on this post here.

We're talking really complicated, WS-*-ish bits. My advice from hands-on experience two years ago would be: stop; walk back slowly, slowly; now turn and run; faster.

Not the kind of good system attributes I think of when reading Michael's book.

The Second Right Answer

Roger von Oech via Gary King...

My mantra is “Look for the Second Right Answer.” This has been my guiding principle for over thirty years. Much of our educational system tries to teach us to look for the “one right answer.”

I find that looking for the second right answer is an incredibly easy way to open my mind. For example, when I’m looking for information, this mantra tells me to go beyond the right answers that have worked in the past and look for others. When I’m trying to be creative, it playfully advises me to put my ideas in unusual contexts to give them new meanings.

Monday, May 05, 2008

Between a Rock and a Hard Place

Update: Keith Gaughan in the comments points out Yahoo is a FreeBSD shop primarily. I stand corrected. However I assume any "cloud" OS services would provide Linux as their primary platform. End.

The downside of MSFT dropping the bid is we don't get to see what their strategy would have been. Would they have attempted to migrate everyone over to the Windows platform? Really?

Would they have dropped the reported Yahoo move into providing cloud computing services? (I assume these would/will be based on Linux and open source generally. Who would do or could afford otherwise?)

How could MSFT purchase on open-source Linux based company without migrating to Windows or altogether dropping the open source Linux bits? I suppose they could move all the Linux bits to Novell / Suse. But that's still an endorsement of Linux generally, which in spite of the Novell arrangement MSFT still detests.

Do they just pull a 180 and hope to become a true Internet / Linux / OSS company over night? That would be *something*.

Sit back and think about it. Wow. Is Microsoft stuck in a bad place with the Internets or what?

"There won't be much differentiation between consumer and enterprise architectures"

From Dan Farber on CNet News: Google CEO Eric Schmidt and IBM CEO Sam Palmisano getting all, well, Googly-eyed with each other...

IBM is taking some of the learnings from the project and plans to operate a cloud that will allow partners to house their Web-based applications and sell them to customers, Palmisano said. "It is the first time we have taken something from the consumer arena and applied it to the enterprise," he said.

Schmidt said that over time there won't be much differentiation between consumer and enterprise architectures. The major difference is that enterprise customers will pay for software and services, with required security and other features, and consumers won't...

Google's YouTube captures 10 hours of video every 60 seconds, and IBM might like that business if it could figure out how to make money at it. But eventually, IBM, Microsoft, Sun, Google, and other big players will look more similar in their technical architectures and business models...

Currently, Salesforce.com is selling Google Apps as an integrated part of its platform. It's not far-fetched to think that Google would seek out IBM's help with its business partners to spread the Google word in the enterprise.

Thursday, May 01, 2008

"Pull the other one. It’s got bells on."

Gary King on the horribly underreported conflicts of interest with former military leaders simultaneoulsy taking positions as Big Media war analysts and going on the take as contractors and investors in the military-industrial complex. Does anyone care that the Pentagon's coaching these slimy bastards went up to at least Rumsfeld (at the time) and porbably well into the Whitehouse itself?

Billions of USD are being wasted (and in fact borrowed from China, et al.) EACH MONTH lining the pockets of the people who go on TV and play up the war in order to attract advertisers and instill fear in the general population. Meanwhile baby-faced young men and women are losing limbs, their brains are shelled into jelly, and losing their lives.

I'll vote for any presidential candidate who promises to reinstitute the draft, without exceptions. That is the only action I can see ending this boondoggle in the next year or so. That is the only thing I can see getting enough people's attention to really care about the endless death and destruction and blatant robbery and profiteering. As long as the vast majority of our children are safe, we seem unable to care about those who chose to protect our _constitution_ and have wound up losing their lives and limbs doing anything but.

Why we've not gone up to the door of the Whitehouse and dragged the bastards directly into the courts ourselves is beyond me. Now excuse me, American Idol is on.

Oh and remember: the next president will likely nominate three supreme court justices. And you want McBush, er, McCain, to be the one for that? As long as you like the concept of the "unitary executive". W's men are already on the court putting this theory into practice.

Objectively

"Rubinius switched from C to C++ to implement it's core VM"

For the life of me I cannot understand why projects use C++ rather than Objective-C. Hmm.

Catching up on comments to this post...

Yeah, I can be too brief sometimes. Here's the essence of what I like about ObjC vs. C++. ObjC attempts to keep the Obj and the C distinct, while C++ attempts to combine them. As a result the Obj in ObjC is very much like the Obj in Smalltalk. And the C on Obj C is very much like the C in ANSI C.

The Obj in C++ is significantly more complicated than the Obj in Smalltalk or in ObjC. The C in C++ is also significantly more complicated, to the point where I don't think it can be called "C". People will talk about the expressiveness of C++ and how much it has evolved over the years. I still very much prefer the simplicity of ObjC.

I am also surprised the ObjC has portability issues. With the GNU implementation?

And I am surprised about the Ruby kernel issue as well. I also thought this would be so small to warrant just C or even better, a subset of Ruby that compiles easily into C. This is what Squeak uses for its kernel. Gambit Scheme does something along the same lines, allowing a very C-ish dialect of Scheme that translates directly.

The Manchurian Minister

In reference to James Snell's recent post and subsequent comments
about Obama and Jeremiah Wright. This is a Big Media misdirection.

What about McCain's follies, e.g. singing "Bomb, bomb, bom, bomb. bomb
Iran" to the tune of the Beach Boy's "Barbara Ann"??? Do you want this
person to lead the free world???

What about McCain refusing to stand down from John Hagee's
endorsement??? Hagee being the self-proclaimed "Christian" who to this
day believes the flooding of New Orleans after Hurricane Katrina is
due to homosexuality.

Politics. I'm not crazy about Obama or any candidate, but I'll take
anyone who's a bit more on stable ground than McCain. Holy cow.

In a comment on James' post, about Obama, the comment claims that…
"Every day a new skeleton comes out."

Do we have a list of these skeletons somewhere? Every day since when?
How many skeletons are there?

Does Obama have a track record in government of legislating along the
lines of what this supposed Manchurian Minister would dictate?

Is the Big Media doing a service or disservice on this topic? It seems
not to be digging deep about anything, certainly not about Obama's
actual track record and certainly not anything about the untouchable
McBush, I mean, McCain. The Big Media does seem determined to keep the
wound open and never find a way to close it one way or another.

People get the government and the media they deserve, to borrow a
phrase from Phil Windley.

Update:

I'll tell you what, looking at the comments over on James' post, it's *rul* scary how different people's opinions are from mine. There is a *huge* divide in our thinking. I don't know if I'm right or not, but I have my guesses.

Huh?: "The fact that it runs on its own interpreter, bad."

What is this obsession with some virtual machine being the one, true byte code? The Java Virtual Machine, the CLR, Parrot, whatever. Give it up.

I agree with Steve Vinoski...

The fact that it runs on its own interpreter, good; otherwise, the reliability wouldn’t be there.
We need to get over our thinking about "One VM to bring them all and in the darkness bind them". Instead we should be focused on improving interprocess communication among various languages. This can be done with HTTP and XMPP. And we should expecially be focused on reliability, deployment, starting and stopping locally or remotely, etc. XMPP's "presence" provides Erlang-process-like linking of a sort as well.

With Erlang's JInterface for Java then a Java process can look like an Erlang process (distributed or remote). Two or more Java processes can use JInterface to communicate and "link" reliably and Erlang virtual machines and libraries, save this one single .jar, do not have to be anywhere in sight.

To obsess about a single VM is to remain stuck at about 1980 and UCSD Pascal's p-code. It just should not matter today, and certainly not tomorrow. The forest is now much more important than any given tree.

Pay attention to the new JVM from IBM in support of their lightweight, fast-start, single-purpose process philosophy embodied in Project Zero. It's not intended to be a big honkin' run everything forever virtual machine. It will support JVM languages and the more the merrier in the sense that such a JVM will enable lightweight pieces to be stiched together dynamically. However the intention is to perform some interprocess communication and then get out of the way. Exactly the right approach for any virtual machine.

Jini clearly is *the* most important thing about Java, ever. But it's lost. Gone. Buh-bye. Pity.

Flash Now Even Openier

Adobe continues to open up more in the world of Flash. Sure, if you like the browser as an application platform, go for it.

This one's better and doesn't hurt the web any more than anything else unless you, the developer, choose to. You can hurt the web just as badly in the browser without hardly trying.

Update for Ed:

Monday, April 28, 2008

Wallhoo or Yahmart?

I stand by my very brief post a few weeks ago: yahoo and wallmart should merge. Yahoo has the internet savvy and infrastructure. Wallmart has the sales and distribution. Yahoo needs to get out from under search and ads as their model. Wallmart needs to get on the web better to compete with Amazon, Apple's itunes, etc.

Who else is going to compete with Amazon? I wonder if a Google / Wallmart merger would go through? Not as likely as Yahoo, and Google does not (yet?) feel the need like Yahoo should.

Friday, April 25, 2008

Brevity

I am sure I give plenty of people good reasons not to read this blog. One positive attribute I generally try to hold to is brevity. (Let me know if I don't meet that criteria in your book.)

And so I agree with Steve Dekorte's assessment of bloggers that write entries that are just too long for my patience. Steve names one blogger in particular who I unsubscribed a good while ago after a brief trial period. There are a couple others I could name.

I'm not saying they have nothing worthwhile to write about. The people who come to mind for myself do tend to write interesting entries, do tend to have those entries much more widely quoted than anything I've ever written.

All I am saying, before this gets too long, is that I cannot take the time to read long entries that stay on target, let alone long entries that take too long to reach a point or even a subject. And if I don't stop now...

Thursday, April 24, 2008

Video: Introduction to Erlang

Bob Ippolito at the C4[1] conference a while back, introducing Erlang and how his company is using it...

Simple is as simple does or some such.

Open Is As Open Does Or Some Such

At ONLamp, Todd Ogasawara points out some potentially harsh consequences associated with, if not attributable to, Sun's $$$ purchase of MySQL...

If the model of selling services does not justify something like a billion dollar price tag, what then? For MySQL and Sun, the answer is to provide more value-added features for a price and closing the source.

Am I happy about this? Not hardly! But, I saw this coming and have been preparing for it. I’ve been looking at PostgreSQL since the day Sun announced buying MySQL. And, recently, it was pointed out to me that Ingres (which I used back in the 1980s) is now an Open Source product. I’m not going to suddenly stop using MySQL or recommend that people switch away from it. But, I think it is prudent to take a look at alternatives.

Simple Works Best

Dustin Puryear on memcached at ONLamp...

memcached was written to serve one basic role: cache database request. It wasn’t written to provide a massively redundant service. Or to distribute load across memcached nodes. Or to provide a secure proxy to a database service. It just takes a query and returns whatever is in the cache. And this is done using a simple hash, meaning that at its core memcached uses a set of algorithms that you’ll find on every second year Computer Science exam in college.

Wednesday, April 23, 2008

Microsoft's Mess

Readers of this blog could have predicted my title, I'm sure. But I have support from Joe Wilcox...

Live Mesh is so messy to explain, I can't cover everything in this post...

It's the most anti-Web 2.0 technology yet released by any company. Microsoft is building a services-based operating system that transcends and extends Windows and also the function of Web browsers. It's bold, brilliant and downright scary.

Actually, it's typical and to be expected. Microsoft regularly comes out with huge proposals to own everything, world wide.

Meanwhile Google, Amazon, and others nibble off bits and pieces of the world-wide web without altogether hurting the web. That is, they *get* the web, and they *get* how to contribute to and profit from the web. They continuously and incrementally add more to the web. Microsoft periodically says, "Here, swallow this huge horse tranquilizer and you'll be all right."

Ozzie apparently sees the web as a "given", but not something to embrace. Rather he apparently sees the web as an inhibiter to the success of Groove. And so his grand design seems to be to wrap the web inside of Groove. Consider Ozzie's own terminology: the web to him is "a hub".

Good luck with that.

Or go back to implementing WinFS, that should keep you busy while the internets slip further from your grasp.

Read BobWarfield in-depth analysis at SmoothSpan. Especially if you are from Microsoft. Especially if you are Ray Ozzie...

There are 100 engineers at work on Live Mesh already, and lots of key functionality (like version control) nowhere in sight. Aside from the Tactics of Monopoly, the other Fail mode is creating a giant monolith of software. Vista is a painful example of how far things can go wrong. Mesh is, at its core, another attempt to rework the document and folder file system. Microsoft promised this in Longhorn for years but never delivered.

Tuesday, April 22, 2008

My clojure talk at pdxfunc

Amy Farrell wrote up some impressive notes from a talk last week that Adam Jones and I gave on the clojure programming language to the pdxfunc functional programming interest group in Portland. My part of this was presented as a long-time Lisper but new to Clojure. I'm not sold on Clojure yet - I like the idea of a mostly functional, concurrent Lisp, and I like the idea of Lisp for the JVM. But is it a better choice than JScheme or SISC or the other more (IEEE and ANSI) standard Lisps? Maybe for those reasons above, but it also seems gratuitously unlike the standard Lisps.

(Update: Rich Hickey (Clojure's author and impressive dynamic force when you consider what he creates per unit of time) responds in the comments here to some of my observations in my talk. I should also say when you consider a new Lisp for the 21st century, Clojure is probably the better fit than Arc. Probably a better fit than Scheme or CL per se. Although Gambit Scheme and an evolution of Termite would be up on my list.)

This talk was patterned after the BOF on Erlang I held at last year's OSCON -- I like talking through things while evaluating them "live". At OSCON I typed everything live and that went fine. Last week I had a new laptop, and even though I like the keyboard very much (MacBook), I thought I might fumble-finger too much. So I set up all the expressions in a file beforehand and using emacs all I did was talk and type c-x-c-e to evaluate each expression in the clojure sub-process.

Not sure what's in store for the May meeting but in June pdxfunc may have a good discussion on a new set of open source web libraries for Haskell from Galois. Several Haskell enthusiasts (or more) attend pdxfunc, so maybe I'll get back into that whole typing, lazy functional thing, and learn from experts at some point.

Decentralization at a Cross Roads

Linux Journal has a great interview by Doc Searls with Bob Frankston in the May edition. From Searls' introduction...

"Telecom and the internet have always been strange bedfellows... we have an industry that's been around for 171 years... and... we have... an "end-to-end" model that doesn't require telecom... carriers only want us to think only in terms of familiar and expensive services such as television."

On a seemingly unrelated note, NPR had a radio piece this morning on solar power. A couple large companies are trying to build giant plants in the desert to boil water, to turn large turbines, to sell the electricity over the grid. Another tendency of large corporations wanting us to think only in familiar, hugely expensive terms. At least they're not trying to sell the idea of splitting atoms to boil the water.

Not to mention we're running out of water, another problem that can only be solved on a massively small scale. Certainly boiling water in the desert in huge quantities is not inline with our water future.

If any one thing will save civilization that thing will be drastically decentralized. I'm not convinced we have good odds to pull that off. I think our psychology and sociology is not adapted to the level of our IQ.

Watch out for big. We are at an interesting cross roads, and the big organizations are not going to make the right decisions. They are not designed to. It's not their fault, they're just dinosaurs.

Saturday, April 19, 2008

Smalltalk and Seaside at FISL 9.0

Randal Schwartz is in Brazil at FISL 9.0. He gave a Seaside talk...

...the biggest news is that based on the preliminary interest in Seaside because of my talk, the FISL conference organizers offered an entire room for next years conference (the full three days with 12 hours per day), as well as four or five main-track hour talks, if I could help organize the subconference details! This is quite a gift, because it will mean that we can expose the 7000 conference attendees to a variety of Smalltalk programs, without paying for rooms or badging or promotion. The conference asked if I could get some corporate sponsors on board, and I immediately fired off email to James at Cincom and Monty at GemStone, and thank goodness they read email on Saturday, because they offered their support quickly. Of course, we have many details to work out, but everyone agrees that we will move forward!
Brazil has been fairly active with Smalltalk over the years. And Randal is a great evangelist for Smalltalk and Seaside. Having talked with him a couple of times recently at Portland-area groups for Smalltalk and open source development, he comes across as an intelligent, enthusiastic evangelist for whatever he's interested in.

He's going to do wonders for Smalltalk and Seaside, just watch.

Thursday, April 17, 2008

Covers

Peter Saint-Andre writes about some favorite cover songs. Here are some of mine that come to mind:

And my list goes on, but I'll end it for now with some cover albums (as opposed to album covers)... And the list could go on further. Of course I'd include every cover the Beatles made of Chuck Berry, Buddy Holly, Carl Perkins.

Most covered song on my ipod: "Sweet Jane" at seven different artists. I have almost as many covers (6) of "Within You Without You".

Clueless in Seattle

Ray Ozzie speaks, and he speaks about Open Source Software. I don't even know what to quote from his statement. They're just not in the right ballpark. The only thing Ozzie communicates here is that he just does not understand the open source community, which _is_ the community for building out the internets.

This comes from the guy who built Groove out of proprietary Microsoft bits and proprietary bits from his developers. By the time they were shipping Groove, those bits had rotted. COM this and that, custom proprietary object database foo.

Had the protocols and the bits within Groove been even somewhat open, they might have grown a community around it, and kept it alive. Maybe some of those bits are living inside some Microsoft product. Running COM this and that???

Microsoft's "groove" looks more like a rut and face it, they've flipped the bozo bit. What a long, slow, excrutiating slide into oblivion they're on unless they can figure out what's really happening on the internets these days.

Update: This is an example of what BobWarfield at SmoothSpan calls: "Microsoft's Expensive Rift with the Web."

Another update: James Robertson ties this into the Smalltalk community. Seaside seems to be taking Smalltalk to another level. Smalltalk is an interesting community re: open source. As with the Lisp community there's always been a significant "openness" to Smalltalk, predating the actual open source licensing of various implementations. However there's no way the various vendor's Smalltalk GUI's could ever have been unified into an open implementation, but Seaside is on its way toward that end.

Wednesday, April 16, 2008

Intuit's Flex-able Cloud

Catchy title, eh?

Bob Warfield has some interesting "pre-news" about a new cloud
computing platform...

http://smoothspan.wordpress.com/2008/04/16/intuits-radical-new-flex-quickbase-cloud-platform/

"Someone mentioned that the standard for Cloud Platforms was to bring
up an app that everyone in the audience can log into within 5 minutes
or less. No problems here. We had the good old "Hello, World" up and
running very quickly."

But he wonders about Microsoft's cloudiness (cloudlessness?)...

""
Doesn't the Big M have SQL Server Data Services:
http://www.microsoft.com/sql/dataservices/default.mspx

Please to be wanting Vista now!

OMFG

Tuesday, April 15, 2008

Vista: "Career Ending"

Joe Wilcox of Microsoft Watch notes...

"Poole's departure pretty much marks the end of an era. Nearly every
Microsoft executive associated with the Windows Vista launch has left
the company. Vista has proven to be a career-ending enterprise, in
stark contrast to bygone days when big promotions followed the release
of a new Windows version.

I wonder: Would Poole have stayed, if not for those e-mails released
as part of the Windows Vista Capable lawsuit? Vistagate isn't over
yet. "

http://www.microsoft-watch.com/content/corporate/poole_realizes_his_unlimited_potential_elsewhere.html?kc=MWRSS02129TX1K0000535

Friday, April 11, 2008

The Airlines and the News Channels

Why is the FAA all of a sudden so concerned about the spacing between plastic clasps on wiring in all of these airplanes? Why are they shutting so many planes down this week, when the immediate danger is almost nothing? Why was the FAA unconcerned at best, deliberately harmful at worst, only a few weeks ago?

Well. Why is this headline from the AP getting so little coverage? "Cheney, Others OK'd Harsh Interrogations" (where "Harsh Interrogations" really means "Torture").

Diversion. Every politician uses diversionary tactics, e.g. releasing bad press late on a Friday. In this case maybe the administration thought they needed to truly clog up the news channels with something benign but something that dramatically affects thousands of citizens. It's not unimaginable.

Any congressman or woman who does not support immediate criminal investigations of the adminstration at the cabinet level should not be re-elected.

I truly get the impression that the current action by the FAA has nothing to do with the FAA or the safety of air travel. This may be an irrational theory, but are there any _rational_ theories for the current FAA fiasco?

Who should buy Yahoo?

WalMart.

Thursday, April 10, 2008

IBM's New Reality Runtime

Jerry Cuomo writes about IBM's "New Reality Runtime" - a JVM implementation, etc. designed for lightweight, RESTful web services, developed using simple, dynamic languages.

We Lose A Little On Every Loan But Make It Up In Volume

(via Steve Dekorte) a slide show explaining how "Collateralized Debt Obligations" full of bad loans became AAA rated. Sad, but true, and further essential reading for all citizens and investors.

If you've ever wondered how and why corporations can carry potential debt "off balance sheet", this explains it using stick figures. Even politicians could understand it. Share with your congressmen and women.

"But crap is crap, isn't it? I don't get it.

Economic Crisis Backstory

Mark Watson points to a Fresh Air episode that is essential listening for all citizens of the U.S.A. and anyone following the current crunching sound you hear in the financial markets.

Crunch

From the Washington Post on the continuing crunch for credit...

"This is the equivalent of a hurricane coming, and staging food and water at the site," Education Secretary Margaret Spellings said in an interview. "Our responsibility is to be prepared for every eventuality."

Some colleges are already saying that their students' expected financial needs for the fall semester are outstripping what lenders are willing to provide...

The tumult is likely to push hundreds, if not thousands, of firms out of the student lending business, said Mark Kantrowitz, publisher of FinAid, a Web site that provides financial advice for students. Of particular concern is the number of firms leaving the business of making federally guaranteed loans, which, besides parents, are the primary source of financing for students' higher education.

Ripple, quake, crunch, and shake... there's a point in the movie "Titanic" where passengers are playing with the broken ice on the deck after the collision. Not long afterward, reality sets in: the ship is sinking.

Large institutions today cannot tell you whether they've just grazed the iceberg, or whether it's ripped through their hulls. In the case of higher education for next year, it looks like a big gaping hole and there's not enough life boats.

Airplanes

In a matter of weeks we (the usa at least) go from senior FAA politicos ordering whistle blowers to stand down, to the airlines shutting down nearly entire fleets. Umk.

I have reservations to make. Which airlines?

Tuesday, April 08, 2008

Platform Wars

Here's what I like about this new era of cloud computing: rather than the useless language wars of the old era (i.e. sun/java vs. msft/java-ish), we are now heading toward platform wars. Amazon will add some of the "full stackness" of Google's, and Google will expand as well. And these battles are aimed at adding real value.

Microsoft, Yahoo, whoever else, will have to off similar capabilities, and new advantages. And they all have to appeal to several "stacks". Dotnet won't do it, at least not solely. Java won't either.

The stack starts lower than the virtual machine, just like in the old days. Only funner.

Monday, April 07, 2008

Portland's West-side Open Technology Center

From Steve Morris at the OTBC:
=========================================================

WOTC is a facility at the OTBC in Beaverton (http://www.opentechcenter.com/)
for open source and open technology developers to use without charge
(i.e., not for proprietary development).
We can use it as a quiet work environment or as a meeting place. The OTBC
presentation room is also available when it's not scheduled for other uses.


We are having an organizing meeting for WOTC on Tuesday, April 8, 2008,
at 6:00pm at OTBC. Pizza and soft drinks will be served.
Please RSVP so that we will have plenty of that available.
~~~~~~~~~~~

See http://www.opentechcenter.com/drupal/?q=contact for directions to OTBC.


Topics for discussion include but are not limited to:

- name
- attracting interest/users
- measuring success
- usage guidelines
- access/hours/security
- what do we need in the lab
- TBD/other


Mass transit to OTBC/WOTC:

Trimet bus 67 travels from Merlo MAX Station to PCC-Rock Creek (by Cornell
Oaks business park). Walk from the corner of 158th Ave./Greenbrier Parkway
to OTBC (0.1 mile).


We have a very beginning wiki at http://wiki.cs.pdx.edu/ootc/ . The
account creation password (just to inhibit spammers) is portlandia.
The mailing list is at http://wiki.cs.pdx.edu/mailman/listinfo/ootc .


Thanks. Hope to see lots of you there.
Bart Massey, Randy Dunlap, Steve Morris

Saturday, April 05, 2008

John McCarthy

Paul Graham describes John McCarthy as one of his heroes. Hopefully computer science will remember certain people like McCarthy the same way we remember the significant contributions of scientists from other disciplines.

John McCarthy

John McCarthy invented Lisp, the field of (or at least the term) artificial intelligence, and was an early member of both of the top two computer science departments, MIT and Stanford. No one would dispute that he's one of the greats, but he's an especial hero to me because of Lisp.

It's hard for us now to understand what a conceptual leap that was at the time. Paradoxically, one of the reasons his achievement is hard to appreciate is that it was so successful. Practically every programming language invented in the last 20 years includes ideas from Lisp, and each year the median language gets more Lisplike.

In 1958 these ideas were anything but obvious. In 1958 there seem to have been two ways of thinking about programming. Some people thought of it as math, and proved things about Turing Machines. Others thought of it as a way to get things done, and designed languages all too influenced by the technology of the day. McCarthy alone bridged the gap. He designed a language that was math. But designed is not really the word; discovered is more like it.

Several other of Graham's hero biographies are worth reading too.

Thursday, April 03, 2008

Standards: Take Your Pick

I don't know much about this process or its result. I've seen bad
standards for no good reason. This sounds like enough money may have
been scattered around to "buy" a standard.

I don't really care too much. Even as standards, the days of MS-Office
formats are numbered, even of those numbers can seem large.

John Dowdell (of Adobe, to be sure) writes: "One of the most shameful
things I've ever seen in technology."

http://weblogs.macromedia.com/jd/archives/2008/04/a_perversion_of.cfm

Wednesday, April 02, 2008

Modular Data Centers

James Hamilton of Microsoft Research writes...
====
Over the last couple of years, the modular datacenter approach has
gained momentum. Now nearly all data center equipment providers have
started offering container based solutions

* IBM Scalable modular data center
* Rackable ICE Cube™ Modular Data Center
* Sun Modular Datacenter S20 (project Blackbox)
* Dell Insight
* Verari Forest Container Solution
====
Link: http://perspectives.mvdirona.com/2008/04/02/FirstContainerizedDataCenterAnnouncement.aspx

Tuesday, April 01, 2008

AIR Linux

From Adobe regarding AIR for Linux...

We have posted the first publicly available alpha build of the Adobe AIR runtime installer and SDK for Linux. In addition, we are linking to several sample applications that currently run on AIR. You should consider these builds only alpha quality and not yet feature complete...

It is our intention to release future versions of Adobe AIR simultaneously on Linux, Mac and Windows

As chromatic pointed out in a comment to a previous blog post, this is not completely open, and the term "linux" will probably continue to mean x86, 32-bit, and certain distributions of Linux selected for testing. But we'll see. Maybe that should be submitted as a bug?

But there's more to read about, e.g. this from Artima...

Adobe also announced today that it is joining the Linux Foundation with the aim to make rich user experiences easier to develop and deploy on Linux desktops. Among the initial platforms that will see the benefit of Adobe's contributions in this area is Ubuntu, already among the most UI-rich and user-friendly Linux distros.
Artima referred to the release notes which in turn refers to a discussion forum for AIR for Linux.

I'll tuck this tidbit down here at the bottom of the post: Wrox has some AIR books coming out. The Beginner AIR book is already shipping from Amazon.

Monday, March 31, 2008

The 60's

Following snow at the _beach_ this weekend, and more snow at home this morning, temperatures are getting back into the 60's this week. No fooling.

My last weather report for a while, we hope.

Malaysia's Web Lesson

An AP report (link TBD) quotes the Malaysian PM... "a serious misjudgement" to rely on government-controlled press in recent elections. Opponents used open blogs, texting, etc.

Let's hope the National Front has decided to be open, and that they've decided not to attempt shutting down the internets.

Sunday, March 30, 2008

Made to Stick

I've been making it stick all these years, and now I find it's already been Made to Stick!

Friday, March 28, 2008

Microsoft: "Patents are for intimidation, silly."

From Todd Bishop's Seattle PI Microsoft Blog... Microsoft's lawyer on why they will not disclose which patents they believe Linux violates...

That is not something that any other company in our industry does today. And yet, we do find ourselves as a company repeatedly getting requests from other companies to license their patents, to pay them royalties. We believe that, especially as long as there are other companies in our industry that come to us, asking us to take a license and pay a royalty, that it is important for us to work on a reciprocal basis -- and that means providing information on our patents in a forum where they are providing information to us on their patents. We're not comfortable being the only company in our industry, certainly, to take a unilateral step, especially when that step could change the dynamic, subsequently, for discussions with other companies.
Software patent portfolios are for intimidation, silly. The murkier the better.

Smalltalk -> Seaside -> Startup -> Cash

James Robertson points to another startup success using Smalltalk and Seaside.

Holy Cr... It's Snowing Again?

A lot of snow again this morning, and it is sticking at 500 ft. above sea level.

The gods must be crazy. Don't they know April 1st isn't until Tuesday??

Thursday, March 27, 2008

Snow

In the midwest this week I gave folks a hard time because it was cold
and sleeting for a bit. Back in Oregon this morning I brought a curse
or two with me: huge snow flakes. On March 28? Are you kidding me? I
know.

Sunday, March 23, 2008

Gilad Bracha, Anti-Monkeypatcher

Gilad Bracha writes...

So far, I have no firm conclusions about how to best address the problems monkey patching is trying to solve. I don’t deny that it is expedient and tempting. Much of the appeal of dynamic languages is of course the freedom to do such things...

Regardless, given my flattering portrayals of primate practices, you may deduce that my main comment on monkey patching is “just say no”. The problems it induces far outweigh its benefits. If you feel tempted, think hard about design alternatives. One can do better.

Gilad captures the essence of truly dynamic languages: freedom. Get out my way with your type theories. I am squarely in this camp for the time being.

I've not run into all the problems Gilad apparently attributes to dynamic languages. (And I assert your language is *not* dynamic if it does not allow these kinds of extensions.) I will welcome Gilad's solution as long as it preserves all the value. Generally though we should favor fewer language mechanisms, embrace those simple mechanism that work, and rely on good programming practices.

His Newspeak could be the rare exception, but I've not seen many whole language advances that really improve things as much as programmers can improve their own practices. I wonder if Gilad is expecting his Newspeak to appeal to the developers he refers to as "baboons"? It seems that distrust of developers is alive and well.

Saturday, March 22, 2008

Swarming and Agile Comics

OK, I have about five sessions from Agile Open Northwest that should be in my Top Three. One of those is the "Swarming" session, where we discussed "agile" as a system and self-organizing teams.

I wish I could have attended the "Produce a Comic About the Conference" session, but I was doing some official organization stuff and then I joined the Toyota Way session which was close by.

AONW 2008 Pix 8/8

This is Jon Marshall's "Lightning Sessions" session (but that's not Jon -- we all got up to talk many times). One of my top three favorites. This is in the Olympic room, which does not appear too intimate when it is empty, but people in each of the sessions carved out their space. Focusing was not difficult at all, and the acoustics were good.
Posted by Picasa

AONW 2008 Pix 7/8

Jeff Morrow led a great discussion on "Agile and the Toyota Way," i.e. a "lean" and "Toyota culture" angle on agile development.

Maybe we should video sessions (optionally?) next time? This would be one worth having on video. Dagnabbit - I should have brought my Flip video camera.

Posted by Picasa

AONW 2008 Pix 6/8

Rebecca hosting her valuable "Acceptance Criteria" session. This one was in my top three along with "Working Tiny" and "Lightning Sessions".
Posted by Picasa

AONW 2008 Pix 5/8

And here's Arlo hosting his "Working Tiny" session. This diagram is a tool for evaluating story value vs. cost. The Alki room was noisy for multiple sessions, but this corner was fairly isolated. On the plus side the room has a lot of windows and the weather was nice most of the two days.
Posted by Picasa

AONW 2008 Pix 4/8

Participants in the "Working Tiny" session, hosted by Arlo Belshee.
Posted by Picasa

AONW 2008 Pix 3/8

Monica Yap in front of the "marketplace" of sessions that had just been announced, then scheduled by conference participants. People are seeing the two-day schedule for the first time (many of them just created it over the previous minutes). Monica is a co-organizer, and is from Solutions IQ, a key sponsor of the conference and they put on the Tuesday evening party.

The schedule we made, and some notes and pictures, are on the conference wiki.

Posted by Picasa

AONW 2008 Pix 2/8

Charlie Poole opening the conference. Diana Larsen ("open space" conference guru) and Rebecca Wirfs-Brock, also co-organizers, in the circle behind. About 115+ people in a circle, ready to make a conference schedule together. It worked well, for the second year in a row. Diana hosted last year, and Charlie matched her, both top-notch "open space" hosts. I have each of the co-organizers in at least one picture except for Troy Frever. I also should have snapped a group photo.
Posted by Picasa

AONW 2008 Pix 1/8

The AONW 2008 registration table with Rebecca, et al. (Paul Culling, on the right, handled the badges complements of his company and conference co-sponsor, VersionOne.)
Posted by Picasa

Friday, March 21, 2008

Another Dynamic Tools Topic: Are You Learning Toward Or Running Away?

(Via Bill de hÓra)

Ian Bicking:

"It's the second generation that's going to be less enthused, that's going to stare in bafflement at these classes that mysteriously spawn methods, and trying to figure out what's going when there's an exception in dynamically generated code. You can monkeypatch code in Python pretty easily, but we look down on it enough that we call it "monkeypatching". In Ruby they call it "opening a class" and think it's a cool feature. I will assert: we are right, they are wrong."
I know next to nothing about the specific problems the Ruby and Python folks are encountering with "monkeypatching". However this capability is nothing new for dynamic languages. And it is a frequent desire for me when I program in C-like languages. If you become frustrated using static "utility" methods, for example in Java, that work with "closed" classes (say, String or Object), then you have at least some desire for these "monkeypatches".

See the thing is this capability *is* a cool feature in many Lisp and most Smalltalk systems. Sorry, dear readers who hate my Smug Lisp Weeniness. But it is true. Not only is it "cool," moreover it is *pragmatic*.

The truly good implementations of dynamic languages recognize the advantages of these kinds of extensions, and they've supported them with good tools for decades. Learn from it, don't run from it.

People developing large systems in dynamic languages, and people providing dynamic languages being used to build large systems have to also realize this:

You are no longer working with a "scripting" language. You need to demand and provide really good tools. Examples can be found on the internets, read about the Smalltalk and Lisp environments from way back when. Someday you can become as smug as we are, or maybe as brilliant as the people who made them for us.

Thursday, March 20, 2008

The Lightning Sessions Session

Another favorite session was "Lightning Sessions," at AONW this week. Jon Marshall brought this idea to the conference. This is another example of people bringing the "extreme" back to "agile".

Here is how it works: within the hour and a half session, the participants continuously create new 60-second sessions. The only rules:

  1. Think of something interesting to say.
  2. Limit yourself to 60 seconds.
  3. You must begin your talk with the last sentence of the previous person.
There is no predefined order for speakers, you speak when you're ready. Or not.

Over the hour and a half we had at various times eight to ten people participating. That last rule makes the effort much more interesting: your concentration on the current speaker intensifies. For one thing, you never know which sentence will be that speakers last one. For another, if you've got something to say that seems really appropriate for that specific moment, you are kind of in competition with the others to claim the conch.

The result was really productive. The first several lightning sessions were based on recollections from sessions the speakers attended earlier in the conference. About halfway through the topics evolved to be more in the moment and innovative, less about the prior sessions.

Jon attended last year in Portland. There were many faces from last year, and several people from Portland and Seattle who I'd not seen in a while. The conference was full of the familiar and the new, regarding conversations and people. I hope we can gather many of us back next time.

That one will likely end up back in Portland. I wonder where? Last year we were at the Kennedy School, and it worked out really well. But maybe it is too soon to return there.

I had a thought on the drive back home... maybe "offsite" somewhere like Skamania Lodge or the Edgefield. We have a good set of sponsors and a very positive cash flow to help keep the participants' costs down.

I was also wondering whether we could find a way to specifically reach out to the open source community to mix up more folks with that influence into the AONW "community".

(Pictures are now posted.)

This week's conference was at the Seattle Center in the Northwest Rooms. One of our rooms, Alki, turned out to be a great social area, but too much echo for the sessions. Overall a good setting, though, and a good bit of sun brightened everything up. I especially appreciated the windows in the Alki room. And the food from Gretchen's Shoebox Express was really good.

Wednesday, March 19, 2008

Extremities

I'd like to thank my friend, and Portlander, Arlo Belshee (of Promiscuous Pairing fame) for once again making "agile" unsafe and going all "extreme" on us. His session at AONW on Tuesday has been my favorite so far.

The sessions have all be great. Agile clearly has a beach head in (nearly?) all software development organizations of any size. (And at least one fantastic non-software, "outdoor start-up", http://trackersnw.com)

So while adoption can still be challenging in many organizations, clearly "agile" is now "safe". So much so that sometimes it feels unsafe to use the term "extreme". I was not crazy about that term in the beginning. Now I kind of miss it.

Arlo's never let go of the ideal: push yourself and your team to its extremes. Can your knobs go to eleven? Arlo's can because he continuously works at it.

His session on "Working Tiny" was excellent, and not just because of him: the group made it great. Arlo made it unsafe enough in that corner of the conference to once again think, and talk, "extreme".

Pictures of the conference are now posted. Track the wiki for more... http://agileopennorthwest.com/wiki

Sunday, March 16, 2008

Cross Platform Performance

Ted Patrick makes some important points about the meaning of "cross platform", especially when it comes to browsers and performance...

It is great that things work on different operating systems but performance needs to be similar. It is a poor user experience for an application to run 50% faster on a specific platform than another. I know for a fact that lots of engineering work goes into making sure Flash Player performs similarly across different operating systems and browsers. Actually we implemented incremental garbage collection in Flash Player because browsers differ wildly in how and when they allocate memory to a plug-in. On some browsers memory is handed out like candy while on others it is given in 256Kb chunks up to a ceiling of 10MB total. Regardless of the browser in use Flash Player tries to make sure all application behave the same both in start-up time and during use.

Founded on AIR

Ted Patrick observing that the reach of Adobe AIR has a wider reach across Microsoft operating systems than Microsoft's own "presentation foundations"...

Writing a single application that works across all version of Microsoft® Windows® is often an impossible task. Worse Microsoft deprecates support of certain operating systems as they push new operating systems, tools, and dependencies. For example, WPF is only supported on Microsoft® Windows® XP Service Pack 2 (Must add .NET 3.0) and Microsoft® Windows® Vista® (native) leaving the many XP and 2000 customers without few options for using the latest software. Even Microsoft® Silverlight only supports up to Windows XP Service Pack 2 or higher for browser based applications.

Enter Adobe AIR!

Science Debates 2008

A group of scientific-minded people recently held a press conference urging the presidential candidates to participate in science-oriented debates.

Saturday, March 15, 2008

Computer Power and Human Reason

I read "Computer Power and Human Reason" 25 years ago, just as the AI boom was getting underway. The author wrote the book at least partly as a result of observing people using his ELIZA program.

In 1962, he published a comparatively simple program called ELIZA which demonstrated natural language processing by engaging humans into a conversation resembling that with an empathic psychologist. The program applied pattern matching rules to the human's statements to figure out its replies. (Programs like this are now called chatterbots.) It is considered the forerunner of thinking machines. Weizenbaum was shocked that his program was taken seriously by many users, who would open their hearts to it. He started to think philosophically about the implications of Artificial Intelligence and later became one of its leading critics.
Joseph Weizenbaum died on March 5 of this year. As a Lisp programmer doing some AI programming, but not really being an "AI guy", his book and ELIZA helped me understand not only AI, but AI researchers!

Clojure

Christophe Grand pointed to the Clojure programming language in a comment on my recent Erlang post.

I'd heard the name but never investigated. My loss. Clojure is a mostly-functional, concurrent Lisp dialect for the JVM. That definitely warrants an in-depth look for me.

Here's some more information I quickly found.

Friday, March 14, 2008

Erlang Criticism Not Unwarranted

Eric's post on the recent Erlang criticism and his take on the subsequent trail of mail list discussions is fairly accurate in my opinion. I posted a long response on his blog and midway realized it's a blog post of its own. Here.

I'm not going to argue too strongly for "sequential Erlang" because it's really "concurrent Erlang" that stands out. The Erlang syntax is ok by me, but then I still prefer Lisp syntax to anything else I've seen anywhere. Simple.

And I can say nothing for the erlang list, except I've been skimming it too, with not so different reactions as yours.

Anyway...

"in development, the behavior of that existing function often changes thereby affecting all the calling functions"
As with all dynamic languages (especially those unlike Lisp and Smalltalk that do no have good refactoring editors), you need good unit test coverage. Which you are doing, right?
"defining dozens of one-line functions has made flow control difficult to follow in some circumstances."
This is pretty much the same for all functional languages, and even Smalltalk, which tends to have many small methods, where other OO language programmers tend to write overlong methods.

Good tools, which again Lisp and Smalltalk tend to have, and others don't, are indispensable. Otherwise the only thing that tends to help IMHE are again many good tests to read, "Oh, so this is the thing to call, and how to call it."

I still think that's better than really long methods Java or other languages that tend not to be reusable without a good deal of pain. (For one thing, they tend not to be really well tested.)

"It shouldn't take a committee to help you write good file handling code."
I don't disagree completely except that Wide Finder pushed Erlang and its community into a new I/O situation. So most of what happened by the end of it was a core Erlang member adding some new core capabilities to the language. Then also what happened was the exposure of a development process for how to evolve concurrent algorithms generally in Erlang or maybe any concurrent system. I would think both, especially the new core I/O capabilities, will help down the road without requirement the full committee.
"the language is a DSL for networking gear."
Which essentially what it is. CouchDB, Yaws, ErlyWeb, etc. will help, but mostly Erlang and its surrounding code is not much more than what the telecom programmers were using in the mid-1990's. that is its upside and its downside.
"I can write a Scala function to make an HTTP POST in four lines of code and have it run screamingly fast"
Two points:
  • Yeah, *but* then you also have to deal with all of Scala's type system. "Oh, you need an existential type here because a mere parameterized type gets the type system all confused, even though it's fairly obvious what you are trying to do."
  • Yeah, *and* what the rest of the world should learn from Erlang is "concurrent Erlang" and how to apply *those* lessons in a distributed, multi-language way. You shouldn't need to use Erlang to get the benefits of things like OTP. OTP and basic message passing with pattern matching is missing from pretty much every system but Erlang. Scala and Java do not have an OTP although Scala addresses the latter.
(And now you see why I thought so highly of Jini and Javaspaces, because it also attempts to bring these to Java. It's the closest thing Java has to Erlang/OTP. But now, where did that go again? Dang it.)

Like you wrote...

"actors are so important, it will be amazing when the programming public realizes why we all need to do this"
You could also try Gambit Scheme, which I think is better as a sequential language (Lisp) but also has pretty much Erlang-scale thread/mailbox performance on a single CPU. Not much in the way of distributed or multi-core support yet. You get more of those, "shared nothing" threads, and functional data structures if you use the Termite package on top of Gambit. Multi-core is bubbling to the top of Gambit now that a decent package system has been released.

Buyer Beware: Corrosion Alert

Asus predicts their new Windows XP-based Eee PC will outsell their current Linux-based PC. But buyer beware.

First, it's XP. Will the typical Eee PC consumer understand this is not "Vista" and will likely not continue running newer and newer versions of Windows software for long?

Linux on the other hand will do the job the Eee PC was intended to do, very well. Probably XP does the same job just as well. Until it doesn't.

I have simply found after years of running Linux and all kinds of Windows systems (except Vista, thank you!) that Linux systems tend to just run for years with little corrosion and little maintenance.

I am forever "managing" the rest of my family's Windows-based PCs, currently Windows 2000 and Windows XP. As the Eee PC's XP begins to decay (usually within six months), what then?

Is the Err PC intended to be a simple computer that "just runs" or will the consumer understand that they'll need a Windows technician to clean up the registry, uninstall software correctly, and continually ghost and/or rebuild the OS completely every year?

Wednesday, March 12, 2008

Thanks

Can I just say if there is any kind of a supreme being in need of thanking for spring emerging in Oregon these days...

Consider yourself thanked. Well done you.

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.