Change of Assignment

On 2007-08-16, Generation Five informed me that they could no longer hold up their end of the deal on keeping a CTC VISTA. I do want to write a little about how I wrapped up my work there, but not right this minute, so I'll leave it for an edit.

A New Beginning

Now, I am working with the Center for Community Technology Services (CCTS) at the University of Baltimore.

Not surprisingly, the University of Baltimore is located in Baltimore, Maryland. So is CCTS. So, I'm in a different time zone now than where I was. Which VISTAs are in the region with me (the region that includes Maryland), and who is the leader? The leader should probably add me to the mailing list for the region.

The University of Baltimore teaches liberal arts, no engineering. I don't know the student body size, but the feel of the location and buildings suggests to me that it is one of the smaller universities.

CCTS helps nonprofits in the Baltimore area with their IT. There are two facets to its practice. One is more direct consulting and teaching, and the other is developing products. Most of the products are web sites. I think generally at least one of the purposes of each such web site is for the owning organization to address its public.

I count about six staff at CCTS, including the director and myself.

CCTS charges its clients for the services it does. Richer clients effectively subsidize poorer ones, to an extent. CCTS generally attempts to teach its clients to understand and maintain their own systems. There is at least one exception where it is more economical for the client to farm out the few changes they need to do to CCTS.

The technology CCTS uses for building web sites is invariably Ruby on Rails.

Ruby is an object-oriented programming language. It was invented in Japan and gained some popularity there before spreading to the US, where it has gained some additional popularity, although not nearly so much as Java and C# (so far).

Rails is a framework that provides comprehensive support for building web sites in Ruby.

I have not done the comparison for myself, but the head technical person here thinks that a tool like Drupal is both harder to set up and less flexible than Rails.

I am in the process of getting familiar with Ruby on Rails, working partway through a book on it. The development environment is in front of me and I can try out examples on it.

The project on which I'll probably make my first contribution, after this learning period, is "Maryland Commons", a web site that will offer some ways that citizens can participate in political thinking and discussion. In particular, it will offer "games" that let one model changes to the budget of the state government and explore what the consequences would be. Someone (outside CCTS) is writing these "games" in Flash. The games will report results back to the web site and it will calculate statistics on the results.

Comment from Morgan Sully on October 2, 2007 - 2:51pm

Awesome Jack,
good to know you're settling in. I'll still be your VISTA Leader (as there's a pretty heavy concentration of VISTAs for Kevin in the Eastern Region).

Ruby looked pretty cool. Do you have your own server to play with? I tried out some of the demo of RoR and it's looked really cool. No time to play with it though it is on a 'to do' list of things to learn.

Maryland Commons looks like an awesome idea. There is a HUGE filed of political virtual 'gaming' with conferences and such, though I am not sure where to look...

Comment from Jack Waugh on October 2, 2007 - 4:20pm

"pretty heavy concentration of VISTAs for Kevin in the Eastern Region" -- OK, but I'd sure enjoy a chance to attend if he should happen to plan any physical get-together around here. Or, all of you in the West can come on your bicycles to meet here where it would be convenient for me to join you, ha! I did drive across the country, thereby confirming by personal experience that the system of roads connects the coasts and it is possible to roll tires the whole way, heh! Also, I confirmed by personal experience that the Bonneville salt flats and the Great Salt Lake are both salty.

"Do you have your own server to play with?" -- Yes. Also, when you develop on Rails, you run an HTTP server on your own machine for testing. The book I'm studying is ISBN 0-9776166-3-0 (or, without hyphens, 0977616630) and it explains how to get a development environment going and how to program in Rails.

"Ruby looked pretty cool"

What's cool about Ruby:

- When you define a class, you can invoke custom-programmed methods that do big custom things to your class definition, such as for example including methods for access and validation. In Smalltalk, people sometimes use code to generate code, but the source code that remains is the generated code, not the original invocation that said to generate it. With Ruby, you can arrange that the source code is calling the generators and you do not see the generated code (although sometimes the other technique is also used, for when you want the automation to give you a start on some code but you have to modify it by hand).

- more convenient syntax for expressing some literal values than Smalltalk has (e. g., for arrays and association lists).

What's uncool about Ruby:

- strange syntax for passing closures for no good reason. A code block is not treated as an ordinary expression for an ordinary value to pass as an ordinary argument (as it is in Lisp and Smalltalk). But there is a workaround for this, so semantically, you can get hold of a closure as a first-class value.

- No existing development environment that quite matches a Smalltalk image in letting you query and change data, study relationships among the pieces of code, and debug on the fly. However, Rails comes close, in that while you are developing, every query (or post) to the server forces a check for whether you have changed any source files that would affect the answer and side effects.