Friday, March 28, 2008

Mac OS X 10.5 iChat Screen Sharing for Pair Programming and CRC Cards

James and I have recently done some work together on a software project. We've done most of the work individually, but wanted to see the same stuff at the same time. We're about 500 miles apart.

Long Distance CRC Cards

One project was planning the software. We used CRC cards to sketch out the names, responsibilities and tasks. Ordinarily, you'd want to do these with physical 4"x6" cards around a table. I started out this way with index cards, and considered pointing a camera at the table, then doing a video-chat. But that seemed klunky; it's also hard with my external Apple iSight camera to have it focus on text well enough for a distant person to read. Plus, James couldn't manipulate the cards. Part of the idea of CRC cards is that their finite size limits how much work (responsibilities) you pack into one class. (Incidentally, this is a practice I'm skeptical about. But, after all, Object Oriented modeling is less about modeling reality and more about helping the humans cope with mapping some part of reality into the computer.)

So instead we used Screen Sharing, part of Mac OS X 10.5, with OmniGraffle. I drew a rectangle, and told OmniGraffle it was 4" by 6". Then I used 10 point type -- roughly the size of handwriting when somebody's writing carefully. In the screen sharing session, we were easily able to see the cards; both of us could write on the cards, and move them around. And when we wanted to try a new design, I just started a new canvas, and copied over the cards that we still liked. That seemed to work pretty well.

We used regular telephones and wireless headsets for the audio.

Long Distance Pair Programming

We also used Apple XCode via the same Screen Sharing feature to do some debugging, a code walk through, and some refactoring. We traded control back and forth pretty readily. This seemed to work as well.

Do pair programming effects apply? Only to an extent. In "colocated" pair programming, the remote party can tell if you're goofing off. You feel responsible to them to keep working. So pair programming in person can be a very demanding experience. But when I was on the phone with James, it was pretty easy for me to wander off and make a sandwich while he was working.

Note 1: Multiple Displays with Screen Sharing

A note: I usually have two displays running side-by-side. This actually works with screen sharing, but the remote party has one wide window, which is vary short. It's like a wide rectangle on their screen. The result is that the work is all very small. We had better results when I disabled one of my displays, and only used the remaining one.

Note 2: Network Performance

My network link is 14 Mbps download and 2 Mbps upload. James' link is...err...two DS3's, but they're using BGP and only one of them is working at a time for a given route -- so basically 45 MBps in each direction. When he was operating my computer, he sometimes had to wait on his screen to refresh. I.e., it took a few seconds to re-paint the screen from my computer to his, over the 2 Mbps link. My display in use was 1920x1200 pixels. On the other hand, when I was operating his computer, I noticed extremely little real delay. But in both cases, the link was useable.

Tuesday, March 25, 2008

Where have the Unix geeks gone?

Back when I first got on the Internet in 1991 or so, it seemed like I was the ignoramus. Everybody on the Internet was a Unix expert. People knew how to use finger. Everybody seemed to be familiar socket() and select(). Everybody used tar to backup their personal email. They didn't need personal web sites, and they didn't have trouble sending you a large file: they just ftp'd it to the guest account on your server.

It was easy to tell what your server was, too: if your email address was, everybody knew that your server was called And it was a Unix machine.

We all knew this because the whole Internet was Unix machines. Yes, you could send email to some Vax/VMS freakshow -- but their email address was all caps, and usually included the name "BITNET". 

I felt guilty because I didn't know much about WAIS. But we all knew how to send email using only telnet, and receive email using only cat. Yeah, those were the days. 


Then along came Mosaic.

Mosaic messed it all up. Mosaic made it useful and easy-to-use. Mosaic let you view "world wide web" pages, including graphics! It was like gopher, but with graphics and fewer menus. People like to interview Tim Berners-Lee, but Mark Andreeson  is really the one to blame the web on. Without Mosaic, the web would have been roughly as useful as gopher. Gopher probably never made anybody run out and buy a modem and an extra phone line, but Mosaic definitely did. (Mosaic became Netscape, which ultimately boiled down into Firefox 3, which they say is roughly as fast as Mosaic.)

Eventually, I had a Wyse 50 terminal (picture above) in my bedroom, and used speaker wire to make an RS232 cable running down to my 486sx-50/5MB RAM/105 MB hard drive Linux box. I did school programming projects using gcc and make. You could understand things back then. These days, I don't even know how USB works. Or firewire.

Sunday, March 23, 2008

The perils of volunteer web site maintenance

Back in the late 1990s, every organization wanted a web site. For example, churches want a page so that people could learn something about the church. Campus groups wanted one to tell about their group and their events.

The Basic-Information Page -- a single long document -- provided all that basic info -- the location of the church, the meeting times, something about the denomination, maybe even some photos. In effect, it's a brochure about the church, just on a web page.

Inspired by the success, somebody in the church starts adding some information about upcoming events. "We want this to be a way to get news out to our members," they think. They want current information; they want to send the message that the group is active and vibrant. So they start posting the newsletter online.

Then people notice that the newsletter doesn't come out very often; and after it does come out, it takes a long time to get somebody who knows how to upload it to the site. They really want something more along the lines of -- always up-to-date with the latest news. So the new web-site maintainer starts to upload information from the church bulletin, or photos from every single group events. Plus they want sermon audio, and maybe video. They've moved to the Newsletter-Style site.

If they're lucky, the new webmaster just uses a tool like Dreamweaver. It's a lot of work for the new webmaster to keep this thing going every week. And it's every week, which means the page suffers if the webmaster is busy one week, or on vacation. But when he does update it, it looks good.

If they're unlucky, they get a nerd like helping at this stage. I'd get PHP and MySQL involved to do a really nice, top-grade dynamic web site. But PHP scripts have bugs and the page sometimes includes error messages.

Eventually, though, the maintenance is just too much for one person. The web site starts to look stale -- but now it looks really stale. Information is from months ago!. Some pages get neglected, maybe not updated for years at a time.

What's the next step? I've noticed two directions: (a) get professional help -- i.e., hire some staff to keep the site up-to-date. Or (b) de- centralize maintenance -- i.e., make updating the site easier, and get more people involved.

The former option is proven to work. This is how and are always up to date: there's a paid staff working 24 hours-a-day to keep it that way. Simpler sites might just need staff working during the week.

I want to believe the decentralized option will work too. If lots of people have the skill and access to update the site, I'm hoping that reliable people will do it. My church's web siteis undergoing this transition. We can't afford (a), so we're trying (b). I've used blogger to make it easy for lots of people to maintain the information on the church's site. It's a poor man's Content Management System (CMS). The questions are: (1) Will others take the initiative to learn how to use it, even though it's "very simple" by web-site maintenance standards? (2) Will the CMS work well enough to get information out? (3) Will the maintainers actually get information onto the site in a timely manner? (4) Will maintainers keep the site up-to-date for a long time -- months or years into the future? (5) When someone updates the overall look, will it revert to the old single-webmaster style?

Wednesday, March 19, 2008

Tuesday, March 18, 2008

X11 woes

While everyone else is reveling in MS IE on Darwine and whooping it up
with Wireshark, I've had troubles getting X11 to startup and run.
'xeyes' would work fine, but nothing more serious. I think I've got it
working OK now.

Uninstalled X11 by removing these:

Installed X11 from scratch from the Mac OS X 10.5 DVD

Update X11 with

Delete all of these:

I'm guessing only those last few deletions were required. Now it seems
to work OK.

Friday, March 07, 2008

Quoth Barack Obama:

I am a Christian, and I am a devout Christian. I believe in the redemptive death and resurrection of Jesus Christ. I believe that that faith gives me a path to be cleansed of sin and have eternal life. But most importantly, I believe in the example that Jesus set by feeding the hungry and healing the sick and always prioritizing the least of these over the powerful.

Emphasis added.

Obama seems to be appealing both to the old-guard evangelicals who emphasize having a relationship with God, and to the new-guard socially-active evangelicals who emphasize our role in the world we live in. Both are obviously important and part of Jesus' message.

But Obama says it's more important to feed the hungry and heal the sick, etc., than it is to repent of a cosmic rebellion against the Creator of the Universe. (I believe that every person is in cosmic rebellion against the Creator of the Universe, until he accepts the Messiah Jesus' gift of healing and restoration.) I'm really not sure about that priority.