SOAP Family History

I was talking to some folks this weekend about my work experience, and mentioned that my programming experience had been in client server systems. “Client server!” they said–“boy, I haven’t heard that expression in a long time.” Feeling instantly old.

So what’s the connection between client-server and this XML-RPC/SOAP/scripting/web services thing I keep writing about? Kind of an indirect parentage, actually. It’s useful to go back a few generations to get the background on where web services came from, technologically speaking.

History Lesson

A long time ago, computer programs were monolithic, in the technical sense of that term. They were one big chunk of code that could be accessed only one way and only ran on one machine. This was because the machines were usually so big and expensive that there weren’t many machines around, and thus there was no value in networking them.

Somewhere along the way, things changed. Pretty soon, people were interested in getting systems to talk to each other. And software had started getting more structured in the meantime. On the one hand, you had application programming interfaces, or APIs: formally defined ways to access the functionality offered by a program, whether an application or an operating system. On the other hand, you had object orientation–the concept that a given chunk of software should protect the data that it accessed and offer well defined methods to read and change that data.

Why was this important? APIs gave software developers a clearly defined path to add functionality to applications or to write applications for platforms. (By the way, the Mac was the first mainstream personal OS with a documented, rich API for writing applications.) And object oriented meant that you didn’t have to worry about some other chunk of the application randomly changing your data, making it easier for large numbers of people to work together on a software project. But we’re still talking about monolithic applications running on only one machine. The network, if it’s there, is slow and unreliable for most users, or else only connects largely heterogenous systems inside your own company.

Add Network, Stir Vigorously

Shift gears for a second. It’s the eighties. You have a big transaction clearing system for a bank. You want to set up a network of machines to allow people to withdraw cash from their accounts, at places and times that are convenient for you. But you’ve got a problem. Even if you wire up ATMs in all the states where you have branches, you still haven’t covered the people who travel out of the area where your bank exists. How do you get an information system to allow people to get their money regardless of whose machine they’re using?

What if the software objects could talk to each other over the network? What would need to happen to make that possible? Well, one program would need to know how to talk to another and what to do with what the other said. (Sounds like an API.) And you’d want to make sure that only your bank’s systems actually made changes to the data–other banks could make requests, but not actually directly change the numbers in your customer’s accounts–so you could assure your customers’ security and privacy. (Sounds like object oriented code.)

Expose the API to get to a software object and make it accessible over a network. That’s the story behind CORBA (Common Object Request Broker Architecture). Behind DCOM (Distributed Component Object Model). And, to a very simplified degree, behind web services.

So if we had CORBA fifteen years ago, why web services now? That’s, as they say, a whole ‘nother story–one I’ll try to write about tomorrow.

Quick updates

Too long a day yesterday to do any blogging. I’m catching up a bit now.

Sitting in Sea-Tac, using a paid wireless connection. It’s amazing how quickly that comes to seem acceptable. I used one in Starbucks earlier.

Word of advice–if you are in Seattle, on the way to the airport, and have a choice between paying for access at Starbucks or at the airport, use the airport access instead. It’s 6.95 for a full day, as compared to $2.95 plus 20 cents a minute…

Not a lot going on. Just getting some work done. Trying not to think about the little insanity that happened in the air over Chicago a few days ago. Or about congressmen finding out that security rules apply to them too.

Or people pulling the comic strip Boondocks because the cartoonist is calling the Reagan-Bush Republicans for supporting Bin Laden during the Afganistan conflict with the Soviet Union in the 80s, and then claiming it’s because “it’s more appropriately discussed in news and opinion pages” than in comic strips.

Back in Seattle Again

Sing along with me now: “I’m back in Seattle again”… Blogging in my bathrobe drinking Starbucks. Gotta love civilization, even if you’re scared to death about what’s happening half a world away. There will be some tense shifts in this piece. That’s one drawback about writing offline–it’s less spontaneous and therefore either requires the writer to edit more carefully or the reader to be more forgiving.

I started writing this: sitting in Logan Airport (now there’s a phrase that is scarier than it used to be!), listening to the gate personnel announcing that the flight to Denver is oversold. Listening to all the alarmist talk about heightened security and concerned about mile long lines at check-in and security checkpoints, I got on the subway at 8:30 for an 11:10 a.m. departure. Now, almost two hours later, I’ve been sitting in the gate area long enough to read the Sunday New York Times cover to cover and consume a grandé Americano.

Aside: Why do they call espresso with hot water an Americano? Because it’s weaker than regular espresso? Because it’s bloated and engorged with water?

Unlike SeaTac, Logan doesn’t have freely accessible wireless networks for passengers’ convenience–in fact, as far as I can tell, Terminal C has no wireless networks at all. So I’m writing this offline–in TextEdit, naturally–waiting for the boarding process to start. I’ll upload it later.

Lisa flies to Italy later today for a week with her Italian project team, working on the contract that she helped the company win. I don’t know how often I’ll get to see her over the next few months–her schedule is totally up in the air.

As for me, I have two days in Seattle ahead of me. Should be a fun time, even the part spent on business. For the plane, I have my laptop, my DVD drive, and copies of O Brother, Where Art Thou and And Now For Something Completely Different. Life is OK.

…At least, that’s what I wrote before I heard from Lisa in Denver that the bombing had started. I’m old enough to remember Desert Storm quite well, and I’m hoping that this one ends more decisively, but I have my doubts.

Printing without wires

So at long last I finally got our laser printer working on our wireless network. It was a little bit of a pain in the butt, so I thought I’d share the process with you.

The architecture of the solution, when all was said and done, was pretty simple. LaserJet with JetDirect card, connected via Ethernet cross-connect cable to Airport base station (dialup only), set up as an Ethernet bridge (thanks to Henry B for pointing this out). But getting there was pretty difficult.

First thing that we had to do was get a print server card for the printer. The LaserJet 2100M/TN doesn’t come with Ethernet connectivity, so connecting it to the wireless network required a JetDirect card. The standard card from HP is called the JetDirect 600N. Unfortunately it comes in about five flavors, depending on the type of networking you need to do. The cheapest model on E-Bay is the 3112. Unless you have some TokenRing needs, make sure you don’t buy this model. The one we finally ended up getting is the 3111a, which has 10Base-T and 10Base-2 support in addition to Appletalk (via the old fashioned serial connection). The card fit in the standard EIO slot in the LaserJet printer.

My initial plan was to connect the card to our AirPort base station using an old Intel 4-port 10BaseT hub we had lying around. Unfortunately, this didn’t work too well–we couldn’t address the card. I printed a test page for the JetDirect card and saw that the IP address and gateway were manually set to an unusual number–no doubt the settings required to run it in its previous home. But I couldn’t correct the settings from Mac OS X. I booted into OS 9 and connect to the JetDirect server using a crossover cable. I was able to reset TCP/IP to automatically get a DHCP address. However, when I reconnected the card through our hub, it didn’t seem to get an address. I then manually set the IP address, but still couldn’t address it.

Finally, I had to move the Airport base station to the other side of the room so that I could connect it using the 10-foot crossover cable directly to the printer. Almost immediately, I found it accessible via AppleTalk–apparently our hub was broken. I was able to set up an LPR printer to it, and we downloaded software from HP onto Lisa’s Windows 95 laptop so that she could connect to it as well.

All in all it only took about six weeks… Boy, I really must be a programmer now. Hardware and networking things used to seem easier.

One last note–I’ll have to get another hub if high speed broadband ever comes to our neighborhood–connecting directly to the base station won’t work too well then.

Food, Music, and Scripting

It’s a beautiful day here in Boston. What a pity that I have to do work.

It’s interesting how people pick up certain habits about writing their blogs. I think Dave sometimes starts with an introductory “Good morning!” and some random thing that’s floating through his mind. For me it’s like a vocal warmup–stretches the writing muscles and gets me thinking.

Last night’s anniversary dinner was really nice. I made a risotto Milanese with pancetta, and a Siena style dish of chicken breast fillets with lemon and parsley. The risotto was fantastic, and I think I might have to add it to my regular repertoire. We decided to make a special night of it because Lisa’s trips to Italy are about to begin, and at this point we don’t know how often she’ll be home. Work is tough…

Speaking of repertoire, I’m in the middle of trying to build one for the E-52s. I’m finding it more challenging than I thought. There are two main challenges: finding good songs for female soloists and finding music that I like and the group likes too. I knew I had weird tastes in music, but there’s nothing like directing an a cappella group and watching their reaction to your musical ideas to really bring that home.

I might do a little Applescript work this morning, now that the fuss has pretty much died down over my first attempt. We’ll see how things go. I had one great plan dashed because the application I wanted to use wasn’t scriptable. It’s interesting. My initial thoughts about using script as a glue to tie website access to my desktop was that once I had the plumbing and the website API, I would be all set. Now I’m discovering the downside of relying on scripting: all the applications I use need to participate, or it won’t work. I already had to move from BBEdit Lite to TextEdit for updating my blog–I could write against the full version of BBEdit, but I’m a student and spending money for another software license when I have a passable text editor is hard to justify.

It’s a Big Scripting Party

Yesterday’s piece on using AppleScript to update a Manila blog interested a lot of people, thanks largely to Dave‘s link to my page. A typical story on my site might accrue 10 hits the first day it’s posted. This one garnered 559. Which leaves open the question: by writing that little script and telling Dave about it, was I just shamelessly whoring for hits? Hopefully a few people downloaded the script and found it worthwhile.

I’d like to issue a public invitation to all the people who are interested in using Apple’s new RPC capabilities with Manila. Let’s have a discussion about what would be the most valuable scripts to write and what would add the most value. I’ll kick it off: I think that (a) automatic spellchecking prior to posting and (b) ability to post image files directly from the Finder to my blog would be great things to have. What do you think?

I’d also like to point out that there are people doing similar things for Blogger. Following my referer links, I just came across this script at Web Entourage. It’s smarter than my script–it uses the selected text from any application. This is cool. I’m learning more about Applescript (I’ll be the first to admit I’m pretty illiterate in it) and about the other people out there who are doing this stuff.

I like the WebEntourage web page better than the page that shows off my script, since he links clearly to the API and to Blogger. I wonder if there could be some way to pull out the links from a Manila message automatically and format them for display somehow, like what Slashdot does.


In non-scripting news…

Today is the fourth anniversary of my wedding to Lisa. We got a lovely e-card yesterday from our dear friend Larry Mueller. I sang with Larry in college and he read at our wedding.

Getting the email from him, I realized it’s been far too long since I spoke with a few of my friends like Larry. Distance is pretty hard to conquer when you’re a student. I think it’s ironic that as my ability to write for my blog has improved, my letter writing skills have diminished.

A long day today. Lots of coursework. I have to keep reminding myself that corporate finance is worth all the trouble.

Blogging in New Places

I write this blog from an unaccustomed place: Apple’s TextEdit application. That I’m doing it from a text processor isn’t in and of itself unusual; normally I write my blog in BBEdit before uploading it to the web. The unusual part is that this blog will be published to the web without my opening a web browser.

This is what I started writing about in July when Apple quietly announced that they would make support for web services–web applications that can be addressed using either XML-RPC or SOAP–available in the operating system and accessible via AppleScript in Mac OS X 10.1. Yesterday I wrote a short AppleScript (available for download) that uses SOAP to call web services belonging to Manila, the publishing system that hosts this blog. The script takes the content of the topmost TextEdit window and makes it a story on my website.

Apple’s made web services pretty darn easy to use. You specify the URL you’re going to and the location of the command you want to use, and the parameters that it takes. You execute the SOAP call. You can call out elements of the resulting XML result by name as though they were normal AppleScript properties (enabling me to get the message number that results when the story is posted).


Le Bien, Le Mal

What’s not to like? Well, sometimes if the script you’re writing doesn’t work, it’s hard to figure out whether you’ve made an error, whether something has gone wrong on the other end, or something else entirely. Case in point: I was getting error messages yesterday from Manila complaining I hadn’t supplied enough parameters to create a message. Had I missed something? Had Dave added something? Then I looked at the XML output (using a great tool from one of Apple’s scripting guys) and realized that the password element had been dropped out. On a little digging, the same Apple guy tipped me off that “password” has a special meaning in AppleScript and I had to treat that property differently (see the script source).

Okay, not perfect, but still having fun. What’s next? How about tying a spellchecker into the workflow? Ease of use capabilities like saving username and blog address, and keychain support, and other applications, and…

I better not get ahead of myself.


Note

The subtitle is taken from Guru’s jazz/hip-hop album, Jazzmatazz. It’s a duet with MC Solaar, French hip-hop artist, in which Solaar basically shows Guru up as a rapper of inferior skills. But I don’t think he knew that when he recorded it. 🙂


Others are Doing It Too

Larry responded to my piece to point out that he’s done this between TextEdit and Blogger. There are probably other people out there doing this too. Let’s have a scripting-our-blog party!

A Long Awaited Upgrade

The title of this piece comes from “A Long Awaited Party,” the first chapter of The Fellowship of the Ring by J.R.R. Tolkien. I’ve been re-reading it lately. It has some interesting things to say today about the value of innocence and protecting it: it’s better if the innocents stay safe even if they are ignorant about the dangers around them. For me, that puts all the ranting I used to do about the uninformed American public in an entirely new light.

So, Mac OS X 10.1. As someone pointed out on Slashdot, a pleonasm of a version number. But a heck of a good operating system.

Where do I begin? The trip to Northshore for the disc was pretty humorous. Lisa had something else to see in the mall and left me alone at the front door of the Apple Store. Words don’t do the place justice. How about ten-foot glass panes suspended on wires from the ceiling and floor displaying the Aqua interface? Shelves and shelves of software? All the current hardware on display, plus “digital hub” accessories? Heck of a retail experience.

I asked the floor guy where I found the upgrade, and he said, “Oh, that’s back at the Genius Bar. I’ll walk you back there.” He went back and told one of the Mac Geniuses (yes, that’s a job title) that I needed the upgrade. The Genius said “Stand back a little.” Wondering, I did, and he tossed the package to me like a frisbee. “There you go,” he said.

The actual install wasn’t nearly as fun, but it also wasn’t onerous. I left it alone for about half an hour (I think I accidentally had it include resources for a bunch of other languages, or it probably would have been faster). On boot, the login screen defaulted to listing all the users in the system with pictures next to them. Pick a login name, then type in a password. Great for home users. I promptly changed the setting back to force people to type in a username. I take my laptop everywhere and it makes me feel better that if my laptop walks off the person will have to know my login name before he can do anything with it.

So, logging in: the login window shows a spinning progress bar now and stays open until a few seconds before the Dock appears. The Dock is now hidden by default. The battery, clock, volume, and Airport indicators are now in the menu bar and their Dockling counterparts are gone. I mean gone–not on my hard drive any more. A little disconcerting, but I can get over it. I open an application and am knocked back in my seat, it’s that fast. And they’re all fast. And that’s really cool. Mozilla is more stable now when compared with the same build running under 10.0.4.

What about that whole SOAP/XML-RPC thing? I go to Apple’s scripting site for OS X and download the Script Menu. Drag it to the menu bar to install it. Pull it down–there’s a few Internet services already there. Select “Temperature by Zip Code.” Type in my zip. Within about a second (over a dialup line) it tells me what the temperature is outside. Not a gee whiz demonstration, but it did it all using a Web service and SOAP. No browser had to be open.

Apple released the manual for programming this interface yesterday. I might have something to say about how it all works later this week. Right now I have to go watch a DVD. Which, by the way, I no longer have to reboot to do.

 

On a completely different note, mahna mahna! Also, Esta has some hilarious things to say about pickled squirrels today…

Getaway in Maine

Sorry about the cryptic message that was on the site over the weekend. I was trying to demonstrate the workings of this website to classmates of mine and I inadvertently flipped the homepage. I figured that, rather than leave it blank, I would put something up temporary and change it later. Shortly afterwards I hopped in a car and we drove to Maine. 🙂

Lisa and I were in Bar Harbor over the weekend. It’s a gorgeous little village on a small island off the mid-coast of Maine. We got there about 9:30 pm on Friday and all was dark, cold and windy. A pint of porter from the local brewery took some of the cold away and we enjoyed some excellent mussels and clam chowder.

In the morning, I was astonished to see how close the water was all around us. A quick breakfast followed by some driving and we were at the top of Cadillac Mountain, a huge outcropping of pink granite rock at the center of Acadia National Park in the center of the island. We walked around the top of the mountain and continued on the park loop road to the Sand Beach.

(A quick word about the history of the park: Bar Harbor used to be a home for the rich and famous. To prevent overdevelopment of the island, the residents, including some Rockefellers, donated the bulk of the eastern half of the island to the US government to create a national park. The park is encircled by a loop road, reminiscent of the Dingle Peninsula in Ireland.)

From Sand Beach we hiked about 1.5 mi south to Otter Point and were treated along the way to spectacular views of the water and the rocks. Returning to Sand Beach, we climbed more or less straight up a rock face to the headland protecting the beach. More spectacular views, some aching muscles. We headed back for dinner and some sleep in town. Sunday we had an excellent breakfast on the (somewhat heated) front porch of the 2 Cats restaurant and inn (featuring a note from Martha Stewart by the cash register!), and began the long drive back.

We made only one stop on the way home–the Apple Store in the Northshore Mall in Peabody, Massachusetts, where I picked up my copy of Mac OS X 10.1. I’m using it now and it’s spectacular. All the rock solid performance of the original version (maybe more so), great DVD playback, and fast. I’ll write some more notes about the new OS tomorrow. For now, I’ll just say: drive to your closest Apple Store or CompUSA or order your copy on the online store. You’ll thank yourself for doing it.

Some smiles

Thank God the Onion is back. I’ve missed them the last two weeks. Highly recommended: U.S. Vows to Defeat Whoever It Is We’re At War With: “‘The United States is preparing to strike, directly and decisively, against you, whoever you are, just as soon as we have a rough idea of your identity and a reasonably decent estimate as to where your base is located.’ Added Bush: ‘That is, assuming you have a base.'”

Funky Mouse Jive


Another thing making me smile: my browser. For the last five months, my browser of choice has been Mozilla, the open source descendant of Netscape. There are lots of good reasons to use it: better standards support than Internet Explorer, never any threat of smart tags, open bug reporting, daily improvements. On my Mac OS X laptop it’s much faster than Internet Explorer too. But today it’s giving me two pretty revolutionary user interface functions: a tabbed browser window, allowing me to switch back and forth between multiple browser sessions in the same window, and mouse gesture navigation. Gesture navigation uses easily remembered mouse gestures to perform browser navigation, like drag left to go back in the history, drag up then down to reload the page, mouse up and then right to maximize the window… Less overall mouse movement than going to the toolbar. Pretty darn cool.

Where Everyone (Wants to) Know Your Name

A few months ago, I wrote about single sign-in and why AOL and Microsoft are both trying to be the Internet’s major providers of it. Yesterday, Sun announced they were jumping on the bandwagon with digital identity services. It’s surprising that it took Sun as long as it did to come to the party, given their ambitions as an Internet platform company. Why did they wait so long? What’s so important about single sign-on?

When I was a programmer, I used to hate one thing about debugging my application: Every time I wanted to run it to test my code fixes, I had to type in my user name and password. We couldn’t do anything nifty at that point like tying it to some automated central login — the military still didn’t fully trust NT security, and half our user base was running on Windows 95 or 98, which weren’t designed to be bulletproof when it came to authenticating users.

So I did what any self respecting developer would do when he got a loud complaint from his user (me): I hacked my local code base so that it automatically supplied my username and password when I ran. Single sign-in, for sure–I was the only one who could sign-in.

There’s definitely a user benefit to only having to log on once to access information, even when you’re talking about logging into your computer and only one other system. But what about the web? Every merchant, chat room, vendor site, newspaper, whatever site in existence wants you to sign in somewhere. I calculated the other day that it takes visits to four web sites to pay our monthly bills on line. One of those sites, our bank, consolidates information from at least ten other billing agents behind its “single sign-in.” By doing that consolidation, our bank has reduced the number of user name and passwords that I have to remember from fourteen to four. Do they have my business for a long time? You bet.

Microsoft has announced part of its business strategy behind the .NET initiative. While it will be working with service providers across the Internet to deliver tons of value to the end customer, it will be the customer, as value recipient, who will pay for the service. This is probably good, since it avoids all the known bad business models (advertising supported services, VC funded free software, etc.) that have caused so many dot-coms to implode. But how does Microsoft convince customers that paying for these services is worth it? I think single sign-in is one of the benefits they’re betting that customers will pay for. And I think Sun just woke up and realized that a business shift is occurring, and they are about to miss it.

Yankee Hotel Foxtrot

Listening to the new Wilco album, Yankee Hotel Foxtrot, in streaming audio from their website. It’s a very different album from the predecessors, but I like what I’m hearing. I don’t think their old label, Reprise, did, though–they’ve been dropped and are currently shopping for a new home. I’ll be looking forward to hearing them next week at the Avalon. I haven’t been hearing as much music as I did in Seattle (after all, I have to go to classes!) but I’m still getting out when I can.

Any guesses on the meaning of the album name? I still get a giggle from an interview with Jeff Tweedy where he revealed that the name of their previous album, “Summerteeth,” came from the fact that a lot of the members of the band had severe dental problems while recording the album. “You know the joke: I have summerteeth. Some are teeth and some aren’t.”

Still playing with the website. I think I’m going to turn the front page of the site into a proper news bits format, like Dave uses on scripting.com. Maybe then I’ll update more frequently. The nice thing about that format is it works much better for syndication than essays.

If you haven’t looked at what’s been keeping me busy lately, check out “e-MIT” and the “E-52s”. I’m looking forward to Thursday’s general e-MIT meeting and finding some people who want to continue the work I’ve been doing on the operational strategy and execution for the website. And we should be announcing a new E-52s lineup tonight.

What is Evil?

Is evil doing what hurts other people? Is evil doing what is a violation of all human rules? If so, no wrong can be done during war. But there are atrocities of war, right?

So what’s evil? Walt Whitman says that he is just as much evil as good, and that it is “just as important to you, to the land or to me, as any thing else.” What the hell does that mean? Except the insight that we can all be capable of evil.

Two sentences ago I said, “what the hell.” Let’s not get into hell. Except that about 6000 people saw what it looked like (or a close approximation of it, as close as you can get on Earth) on September 11.

According to Milton, the Serpent said that we shouldn’t be forbidden from the knowledge of good and evil: “Of good, how just? of evil, if what is evil / Be real, why not known, since easier shunnd?” Why shouldn’t we know what evil is, if it will help us avoid it? But what if it doesn’t?

Ask John Ashcroft (as reported on Slashdot), he’s seen evil and it’s computer crimes. Or that’s what the new Anti-Terrorism Act says: no statute of limitations on computer crimes, retroactive DNA database of hackers, and life in prison for computer intrusion. Harboring or providing advice would be terrorism as well.

What did I write the other day? I don’t want other people to blame. I don’t want “terrorism” to become such an overloaded word that those with the power can do anything they want….

The Rhetoric of Failure

This morning a verse to “Spirits in the Material World” by the Police kept running through my head:

Our so-called leaders speak
With words they try to jail ya
They subjugate the meek
But it’s the rhetoric of failure

I think it’s a response to last night’s speech from W. (Notice how he’s stopped being W. and started being President Bush to everyone?) Lisa expressed concern that we’re escalating to a state conflict with Afghanistan and the Taliban too quickly–that Bush left them no room to save face. The thing I worry about is this: Is giving an ultimatum to the Taliban ‘the rhetoric of failure’? There’s no way to hit the people who were directly responsible. Bringing “justice” to the Taliban is at best a distraction–bringing the real parties responsible to justice will be a much longer and less dramatic process.


A good page at the Urban Legends Reference, dedicated to helping you sort through truth and fiction in the aftermath of the disasters. One example–the thing about lighting candles outside so that “a satellite photo can be taken” is a hoax. But George W. Bush really did say, “I’m not gonna fire a $2 million missile at a $10 empty tent and hit a camel in the ass.”

And Jerry Falwell really did say

I really believe that the pagans, and the abortionists, and the feminists, and the gays and the lesbians who are actively trying to make that an alternative lifestyle, the ACLU, People For the American Way – all of them who have tried to secularize America – I point the finger in their face and say “you helped this happen.”

I need something to celebrate. I don’t need anyone else to blame.