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

Search This Blog

Saturday, October 14, 2006

Messaging the Way God Intended

I like this characterization from James Robertson. It really does go back to before Alan Kay conceived of Smalltalk, Kay observed several distinct things behaving similarly, like the Burroughs B5000 and biological cells. And now HTTP is just like that. HTTP is a basic message passing mechanism that can be used in all kinds of situations. It's not ideal but then what is? HTTP is wide spread and we're seeing it spread even further than current conceptions. Languages are becoming more dynamic, and so is messaging on all kinds of networks. Spinning up a new process for passing messages via HTTP and XMPP has to become easier still.

Smalltalk arrived on the message passing frontier a long, long time ago. In a lot of ways, HTTP messaging resembles what happens in Smalltalk - you send the server a message, and if it doesn't understand, it sends you back an appropriate HTTP error message (kind of like a DNU in Smalltalk). The server doesn't crash, it doesn't throw up its hands and stop; rather, it awaits the next message.

This kind of architecture has to be flexible, and growable at runtime. Smalltalk has been that way since the beginning, and HTTP servers operate in much the same way - you can add messages that they'll understand in well understood, dynamic ways. It's kind of nice to see people understanding this strength :)

Thursday, October 12, 2006

APEX?

APEX == A Programming language EXclusively for who?

I must be missing something. Why on earth would anyone invest their information systems in a proprietary hosted language?

Please clue me in. And why is this guy doing the seig heil? 8^)

From zdnet...

Mark Gorenberg... hailed Apex as the most significant announcement since Sybase announced stored procedures.
Really. I am flabbergasted.

Sunday, October 08, 2006

(Harumph)

Blaine Buxton bellows...

I feel like we get lumped in with the grumpy Lispers.
(Harumph)

Saturday, October 07, 2006

All My Languages Use an Image File

Blaine points out a fantastic feature Smalltalk has had (yes, since the 1970s), that more language systems should emulate.

My favorite part of the night though was the reaction I got when I shut down the image, restarted it, and was at the exact point that I left it instantly. The power of image-based development compels thee!
But the thing is *all* my languages are now image based. Ever since I started using VMWare, my entire machine's state is saved and restored, rolled forward with snapshots, linked and branched, etc.

It's not all the way there as with Smalltalk, e.g. no browsing and selecting from "change sets", etc. But it is pretty useful.

I bet other people using virtual machines like VMWare had no idea their languages were "image based"! What a weird thing. Who'd want that? 8^)

Wednesday, October 04, 2006

Building Any System

From Curtis Poe, "Building Large Systems"...

Here’s a little secret that many “test-infected” developers know: testing makes you a better programmer. It’s not just that your code works. It’s that if you find something is hard to test, that’s a code smell. Maybe your superWunderFunction() which takes 13 arguments isn’t designed terribly well. That’s not saying that all hard-to-test code has a design flaw... but as you test more, you start writing code that’s easier to test...

When you start writing code that is easier to test, do you know what you’re doing? You’re eating your own dog food. You’re using your code and you start writing code which is easier to use. It starts becoming better-designed code. As an added benefit, if programmers are unsure how to use your code, they can always read the tests. Tests are not a substitute for documentation, but they are an excellent supplement to it.

Matt Drudge - Pedophile? LOL

Well, that might be going overboard. He only supports pedophiles with their habit when they are Republican congressmen.

There's a difference, right?

On the October 2 edition of his nationally syndicated radio program, Internet gossip Matt Drudge stated that Foley's sexually explicit alleged communication with a minor through an instant-messenger program "wasn't coerced." Drudge went on to say that "the kid was having fun with this" because the alleged conversation included "[t]hese LOLs throughout the entire conversation, these 'laugh out louds.' " Drudge even went so far as to accuse the underage former pages -- whom he twice referred to as "beasts" -- of "egging the Congressman on" during their alleged conversations, claiming that "[t]hese kids were playing Foley for everything he was worth," as Media Matters for America noted.
But this coverup is across the board with Republican politicians (Gingrich, et al.), spokespeople (Snow, et al.), and media celebreties (Limbaugh, et al.).

I would hang my head and stay inside for a week if I were a self-respecting Republican right now. This is a disgrace so far beyond that previous Clinton disgrace. Where is the outrage at the acts? Where is the outrage at the cover-up? Where is the outrage at the cover-up of the cover-up? We're talking about *children*.

Vote the other ticket in the election. Then they get to investigate everyone for the next couple of years to find out what's really been going on in congress and the administration.

And how about that congressman (Reynolds?) who brought some "kids from his community" to his press conference so the media could not ask detailed questions about sex?

LOL indeed.

Tuesday, October 03, 2006

When All Else Fails

There is a lot of fear about dynamic languages in the comments at James Robertson's blog (and at Tim Bray's).

I recommend these handy little things called "tests". When all else fails, do the right thing.

The devil is out to steer you onto the wrong path.

I'm convinced that they are not suited for large-scale software development...
I guess if I listened to the devil, he'd have me recall all those large-scale applications I've written over the last 25 years that have designed electronics, moved things through factories, dispatched equipment in hurricanes, and so on because they're not written in a suitable language.

Beware the devil. Over on the devil's own blog...

I think there [a solution]: dynamic languages that allow you to type your variables if you feel like it, and the only language that I can think of that does that at the moment is Groovy.
Well, let's see. Common Lisp had that about 22 years ago. Maybe there's something to learn from a couple decades of real experience? Conclusion? Feh.

This is the devil that used to want you to program in C, not Smalltalk. Then C++, not Smalltalk. Then Java, not Smalltalk. Now he's willing to give you Smalltalk if you type your objects once in a while.

Don't listen to the devil. Write tests in simple, dynamic languages. Do good work. Keep the devil at bay.

Sunday, October 01, 2006

Shades of Kelsey

Also from the recent Scheme Workshop... "An Incremental Approach to Compiler Construction"...

Real-life compilers are too complex to serve as an educational tool. And the gap between real-life compilers and the educational toy compilers is too wide. The novice compiler writer stands puzzled facing an impenetrable barrier, “better write an interpreter instead.”

The goal of this paper is to break that barrier. We show that building a compiler can be as easy as building an interpreter.

Termite Part Deux

From the recent Scheme Workshop, here is the follow-up for Termite, Concurrency Oriented Programming in Termite Scheme (pdf).

Our system is well suited for building custom protocols and abstractions for distributed computation. Its open network model allows for the building of non-centralized distributed applications. The possibility of failure is reflected in the model, and ways to handle failure are available in the language. We exploit the existence of first class continuations in order to allow the expression of high-level concepts such as process migration.

Are You Not Entertained?

From the Republican House's torture bill (again via Steve D.)...

"No court, justice, or judge shall have jurisdiction to hear or consider any claim or cause of action whatsoever, including any action pending on or filed after the date of the enactment of the Military Commissions Act of 2006, relating to the prosecution, trial, or judgment of a military commission under this chapter, including challenges to the lawfulness of procedures of military commissions under this chapter."
Let's remember back a few years...
If this were a dictatorship, it'd be a heck of a lot easier, just so long as I'm the dictator. -George W. Bush
The next couple of years will make the highlight reels of American politics. Someone's going down, but it is not yet clear who. So far it looks like Lady Liberty is heading for the floor.

Saturday, September 30, 2006

Ho Hum? Think Again

Steve Dekorte draws the line...

If there were ever a question of which party is more evil (certainly a question on which reasonable people could, in the past, disagree), I think it's been put to rest today.
Our representatives swear an oath to protect and defend the constution, not to pass legislation to keep their party's president out of jail.

Friday, September 29, 2006

I'm An Isolationist - You Probably Are Too

I rec'd an email about my recent thing to do with the "shared nothing" vs. "shared memory" models, JRuby, et al. being crammed into the JVM, CLR, Parrot, and so on.

The point of the email is well taken. Essentially JRuby is a good thing because the JVM is widely adopted and accepted in enterprises. This is the vehicle that will allow JRuby to be widely adopted. I agree with that approach, and do think JRuby, Jython, IronPython, and related languages are all very good things to have.

I'd rather have a widely adopted shared-nothing environment. That is the model of the future. The shared-memory model *is* the current model but there is plenty of evidence we've been done with it for some time. Another five years or so will be necessary for this to really sink in.

But we have JRuby now. Yeah, I'll program in JRuby today. At the same time I will push for something better, and expect to get it about 2010 or so.

Let's be clear that the JVM has been lurching toward a shared-nothing model already for well over five years.

The servlet model, the EJB model, the Jini model... these are all in various ways attempting to provide semi-shared-nothing models so we can each contribute our own isolated parts to the whole. Unfortunately they're each anachronistic, one-off, partial solutions. JSR 121 is attempting to make this even more general for all kinds of pojo scenarios.

Given the isolation model that just comes for free with Erlang, the vast majority of the complexity and variation of these lurches toward isolation for Java would just go away. (Erlang itself has a *little* cruft but that's nitpicking.)

I've been through the garbage collection wars, the dynamic typing wars. I think we'll get better isolation more easily but so far it remains a subtle point in the community at large.

Iceman: "You like to work alone. I've heard that about you."

Update: A Fellow traveller writes...

Yes, you can layer a shared nothing architecture on top of a language that does not hand-hold you towards a shared nothing design, but the scope for error is huge. Remember the days of malloc anyone? Same idea.
I don't think it is quite that drastic. Yes, I lean toward semi-functional languages like Scheme and Erlang, mostly Scheme because you can more easily write all kinds of languages in Scheme. Gambit Scheme is a good candidate platform for building mult-language shared-nothing runtimes.

But even "heavily-imperative" languages like Smalltalk, Ruby, and Python can take much better advantage of a shared-nothing runtime model. These implementations just need to be able to run more than one environment within an OS process. Kind of like doing a "fork" that forks an isolated process within the current OS process. Now you have two or more Smalltalks, Rubies, Pythons, Javas, etc. running in that one OS process, isolated one from another.

When these are truly isolated and efficient then nothing should prevent an OS process from mixing these languages "sub-processes" within the same OS process. These are not new ideas, but have never really been fully explored. Most of the bits and pieces are in place. It's just around the corner.

Thursday, September 28, 2006

The Wiki Way and Other Ways

OK -- two more things about work. First, this... the past is the future, and/or vice versa...

And the wiki... I have used several wikis in various settings in the past, but this team is using its wiki really well so far, with no sign of letting up.

We'll have to get Mr. Panic From Fuzzy to explain "Page Slap" sometime.

Less Bigness

Dan Cresswell wonders...

I just wonder if our systems would be less big and less complex if we admitted we don't understand all things and stopped making so many incorrect assumptions about how things should be done?

Monday, September 25, 2006

The New(?) Architecture of Redisplay

I came across recently an email message on Tweak (a GUI for Squeak Smalltalk) and display refreshes in the presence of asynchronous processes...

So why not use processes?! Looking back at some older conversation about using multiple processes it appears to me that we've been holding back on it because of synchronization issues. While this is certainly understandable (we all know how hard process synchronization can be) I think that we can solve this problem in a very simple way that gives us the best of all worlds.

Here it is:

The basic problem that we have when using multiple processes is that we can't always say for sure when they are run. Because of this, the system may activate some process while we're in the midst of redrawing the screen, handling events, executing some (interfering) other process etc.

Yes, to multiple processes.

I developed some CAD tools a couple different times way back when, that had to deal with distributed processes and asynchronous messages. More recently, but still seven years ago (dear lord, really!) I developed an example graphics editor in Erlang and Tk. Today I would approach an intraprocess design the same as the distributed. First and foremost -- get rid of shared memory and the synchronization issues go way down. Synchronization becomes a design tool rather than an accident waiting to be found, or a burden of self-over-protection.

Here's the real news... there is a *lot* to learn from understanding how Emacs works.

Emacs got the architecture of asynchronous redisplay right 25-30 years ago when it was dealing with the asynchronous nature of text redisplay in the presence of asynchronous keyboard interrupts. The "command pattern" and graphics, etc. are just elaborations on the theme.

Another thing Emacs got right is keyboard maps from keys to functions. A "mode" is a more or less different map from keys to functions. A "modal dialog" is just pushing a new mode map into the keyboard process for some period of time. Emacs embodies a pretty good "model-view-controller" separation.

Processes and display refresh -- expand the Emacs way into true multi-processing. One process owns a display device. Other processes, local or otherwise, may be able to send it display update events. Those messages may have priorities, or rather the display process may understand which collaborators have priorities.

The display process will always try to process the most important update message next. Display update may be postponed until some or all update messages have been processed. If there is a hope of getting through the message queue in time, then the display process will postpone a refresh until the queue is empty, otherwise some logic of when to stop postponing the refresh has to be coded.

Sunday, September 24, 2006

Virtual Fun

I'm really enjoying my new job. The team is a lot more fun than those I've been part of over the last few years. Partly because those teams in the recent past have been almost 100% "virtual" i.e. distributed. No matter how much good work you can get done "virtually" it is difficult to maintain a healthy "virtual" sense of humor, you can't walk to the coffee shop, or talk in the hallway. Distributed bases can work, but each base has to have a small set of people who see each other at least several times a week. The people, the atmosphere, and the work all make a difference too.

My current team is co-located *and* they have a sense of humor (senses of humor?). And they are very smart, and stuff. And they've watched Team America: World Police several more times than I have. (Me: Once, but I laughed my ass off enough for three viewings. Although now I *have* to get the unrated DVD version.)

This week as my manager reports we found a kindred spirit visiting from several thousand miles away in Belfast, over beers. They've done good stuff with virtualization, open source, etc. So we're looking forward to this Portland base working with the Belfast base on some common interests.

And I am looking forward to having a lot more fun, and working on interesting things with smart people. What a difference a few weeks make.

The Middle of the Road

Oh dear. Can we not leave well enough alone?

Getting It Through Not Understanding

Tim Bray on Ruby...

I’m already using method_missing, any language that doesn’t have that just seems crippled.
Welcome. We've been waiting for you. A helluva long time.

Thursday, September 21, 2006

iZunes

Apparently Microsoft is still adept at copying Apple's look and feel.

Friday, September 15, 2006

Jini Meeting

The jini meeting is being webcast and recorded. I've not seen it yet but the program has a number of interesting sessions.

Eight Ways

Ted...

Their benchmarks also show that many applications are not able to exploit 4 cores very well, never mind 8. Now, where did I leave that Erlang disk image....
We're busy cramming everything into a common language runtime. Shared memory, critical sections, locks, common object models... it's the wave of the future?

Well, it's a tsunami that is catching up with us while we're busy cramming everything into a common language runtime.

Update: Steve Dekorte writes that no language will save these high core count MISD systems from the Von Nuemann bottleneck.

But the advantage of a shared-nothing programming model like Erlang's is that systems can more easily accomodate multiple shared-memory cores as well as multiple shared-nothing nodes. The languages that assume there is no shared memory are better positioned to get around the Von Nuemann bottleneck.

Common language runtimes that assume shared-memory are a diversion at this point. But I think it will be another five years or so before the JVM and CLR leaders start to think about this. Ideas just take a long time to catch on. With JRuby and such now, we're seeing the beginning of the fruition of an idea that has been around as long as the JVM. The JVM itself was the fruition of UCSD Pascal byte code from the early 1980's.

From what I have seen the hardware manufacturers have a difficult time getting their heads around this direction too. They understand that a single, faster CPU is not going to sell. And so they understand the reason for putting multiple CPUs on a core. I am not sure they know what to do with them in software... Maybe web services?

Tuesday, September 12, 2006

Ruby and Strongtalk

Avi Bryant makes the connection between JRuby, Ruby performance generally, and how fast dynamic languages can really be, e.g. the Strongtalk implementation.

As it happens, the Strongtalk VM would make an excellent basis for the next generation Ruby VM. Given that Sun still employs some of the original Strongtalk engineers, and has just hired the JRuby guys, maybe they can make that happen?
It gets even better... Strongtalk was the precursor to the Java Hotspot runtime. Java is essentially already running a pretty good dynamic runtime under the hood. The language-specificness of the JVM just has to be peeled back a notch and Ruby (and Smalltalk, and Lisp) would be good to go. Or at least much better off than they are now.

Maybe a bit more than a notch. Please start peeling.

Then someone over at James Robertson's blog asks about the performance of a good dynamic dispatch mechanism relative to C++.

In general, Smalltalk can do message dispatch faster than C++.
Is that one of those in theory things?
The line was crossed some time ago when the nature of most C++ applications on the hardware at the time was better suited to dynamic dispatch. When you talk about "C++" once again you have to talk about which implementation. Some C++ implementations have been able to do a more dynamic dispatch (i.e. again implement a significant dynamic language mechanism) in order to get better performance than the more traditional vector-based fixed offset indexing.

Dynamic *will* continue to win more and more for most applications.

Quick Coffee Note

Yes, I am as excited about the recent JRuby and IronPython news as anyone. But...

If "shared nothing" is the right model, then why are we so happy about JRuby and IronPython?

Sunday, September 10, 2006

You Eye

James Robertson on something I've found true as well...

I rent [cars] on travel a fair bit. A decade ago, it took me less time to get out of the rental lot. Now, I always make sure to spend a few minutes locating things like the seat adjustment, the radio controls, the wipers, defroster... you get the picture.
I remember the first time I found myself driving with a "sports" transmission without purposely shifting into it, I was on the road and the damned thing wouldn't get out of first. So off to the side of the road where I spent a few minutes figuring out how the supposedly "automatic" transmission worked.

Saturday, September 09, 2006

I'm Sorry

Gregor confesses...

At a session about stealth I asked Jay Adelson, Digg.com's CEO) which company he is with. Oops. On the bright side he told me that once he arrived for a talk, entering as Larry Page was leaving the stage. Jay went on to introduce himself and finished with "and you work for…" Doesn't misery love company!
I'm sorry. Are we supposed to know who the hell is the CEO of digg?

Likewise I could not pick Larry Page out of a lineup, nor tell you the name of his partner.

Yes, they've done good stuff, way more than I ever hope to. Or if I do, I couldn't care one iota if you ever recognize me. Sorry.

Storm on the Horizon

Confession time...

I love You Tube, I guess of course. My oldest kid was showing me the series on how various movies *should* have ended.

I watch very little TV and never "reality" shows. But since I really like Storm Large from right here in Portland, I've been watching her You Tube clips from the rock star reality show this summer. (She is *way* beyond what little I could stand to see of her competitors, and I suspect at least as far beyond whatever talent the judges themselves have.)

In any case, this week one her songs was her original Storm and the Balls song, Ladylike. This song is at the top of any list of pop songs about womens liberation. I'd say there is "Respect" the way Aretha Franklin recorded it, combining "R-E-S-P-E-C-T" and "sock it to me" in the same lyrics. And then there is "Ladylike".

In the original R-rated lyrics, which would have cost a *lot* in fines to perform on American broadcast TV, she sings, "What the fuck is ladylike when ladies like to do what the fuck they like just like you?" A *little* bit more direct than Aretha Franklin was, but this is the 21st century vs. the 1960's. The verses of Ladylike go well beyond "Respect".

Nothing else by Helen Reddy or anyone comes to mind as really pushing the point as well as those two songs.

See the abbreviated You Tube PG video version or hear the Balls full PG and R recordings. The Balls versions are supposed to be on iTunes before too long.

Bond

I am with Graham on this Bond thing. I've not seen a new Bond film in over 20 years. Roger Moore was fun in the 70's but that stopped working before he did. Sean will always be the real Bond, but those films are so very dated and I can no longer stand to watch them.

Every glimpse I've seen of the new Bond has led me to believe the role could be recreated as something almost completely new. My hopes are way up for Casino Royale.

Thursday, September 07, 2006

On

Jon Udell on...

Way back in 2002, I thought Web services would be the vector for Internet-scale grid computing. It looks like I got that wrong. A Web service is a fairly general construct, but an entire virtual machine is far more general. And since Linux is the OS of choice for cloud-based virtual machines, last week’s suggestion that Microsoft get cracking on portable Avalon and open XAML makes even more sense this week.

And so

And so...

Make no mistake about it; if you do not find it now, you will repeat the same routines for myriad eons, a thousand times over again, following and picking up on objects that attract you.

Lin Chi (d 867)

And so

Sigh

A sigh for Jim (via Jon Udell)...

I wrote the first three versions of the IronPython compiler in Python, but today it's written in C#. Part of the reason is that now I understand it, so the values of prototyping, and the looser thinking that really helped a lot in the early days, don't really help as much any more. Also there are now more people working on the compiler, and there are some real benefits to the static typing, and the support you can get from Visual Studio.
Sigh.

Tuesday, August 29, 2006

Liberty

This is my first week at a new job with Liberty Mutual Insurance, Agency Markets.

I am very much going to be getting back to speed as a full-time developer for the first time in five-plus years. In recent years as an architect, instructor, and coach I've always found ways to remain hands-on and not too enterprisey for stretches at a time. It's not the same thing as working with a small group with a singular purpose.

That's something I've missed greatly... and so I've joined Mike Herrick's team here in Portland. They're just getting started on some extremely interesting open source ideas and new relationships in the open source community. You should read his blog, Panic From Fuzzy, as these things develop. I imagine I'll write here about OSS generally as I dive in, but much less so about the specifics of this new project unless I explicitly state so.

Portland is a hotbed for open source, and this group is going to be carrying it even further into the business world and specifically the very interesting world of insurance.

A Fine Artist

My uncle, Robert Bard, lives in Jamestown, Ohio with a group of friends who are all practicing independent living in spite of various disabilities. Their organization is Toward Independence, Inc. (My dad is on the board of directors.)

T.I. operates an art gallery, The Inner I, in Xenia, Ohio, if you are in the area. Now they have a gallery on-line and are putting together an on-line store as well.

My uncle started painting a number of years ago and has since received a lot of notice and has been in many exhibits around the state and reprinted on clothing, stationary, etc.

You can read more about my uncle and see some of his work in the on-line gallery.

Friday, August 18, 2006

Great Software

Phil Windley makes his own amendments to a list of great software.

As Phil believes, I also have to include Smalltalk on the list. I don't agree with the original author's rationale re: Java and some others on that list.

Other systems I'd consider for my top ten...

  • Lisp (esp. Lisp 1.5, Common Lisp, and Scheme)
  • Smalltalk
  • Erlang
  • Hypercard
  • Emacs (in various incarnations)
  • The Xerox Alto (incl. BitBlt, Ethernet, laser printing, WYSIWYG, etc.)
  • Englebart's Augment, nee NLS
  • Unix
  • The Web
  • The Orbit compiler for Scheme

Live Motion 3D Video Camera

Via O'Reilly Radar, Live Motion 3D Video Camera

Wednesday, August 16, 2006

pdx.st -- Portland Smalltalk September Meeting

Dane Jensen, et al. have scheduled the second monthly Portland Smalltalk meeting...

The next meeting's lined up, it will be at 7PM on September 12th (second tuesday of the month) at the McMenamins on NE Broadway (1504 NE Broadway, http://www.mcmenamins.com/index.php?loc=32)
The email list is at http://lists.pdx.st/listinfo.cgi/general-pdx.st

Dane also says about an IRC...

I'm setting up #pdx.st on irc.freenode.net for us now, but there's certainly no reason to wait until it's official.

The Twenty

Today is the 20th wedding anniversary for my wife and myself.

I'm just sayin'...

I love my wife very much. And my two boys.

I think that's worth a blog entry, at the very least.

Large Scale Change

Ward Cunningham in a recent interview...

I do have something new that is bugging me. Tom Love told me last week that he has found a free hand in staff change to be a necessity when doing large scale and fast paced agile conversions. This doesn't surprise me even though I remain committed to helping people adapt. The scary part Tom told me though was that the person most likely to go was often the person the team felt was most indispensable. I feigned a knowing smile as I agreed that I understood how that happens. But now I am not at all sure I know how experts fall into this trap of obstructionism. I want to figure it out though. There could be some small changes we could make that would make life much better for experts and the people around them.

Sunday, August 13, 2006

org.tiling.s3map.S3Map implements java.util.Map

Tom White does some tinkering...

It struck me that you could treat S3 as a big hashtable, so I tried writing an implementation of java.util.Map (built on the Amazon S3 Library for REST in Java) that uses S3 as its backing store...

So, what is it useful for? Well, I haven't actually had a use for it yet, but S3Map is really a non-transactional persistent datastore, so it could be used in many scenarios...

Ordinary Teachers

From dailyzen...


It is most urgent that you seek real, true perception,
So you can be free in the world
And not confused by ordinary teachers.

- Linji (d. 867)

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.

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.