[<<] Industrie Toulouse

January 30, 2003

This morning, on a local NPR station, I heard what I assume is a country representative (political representative) going on about his current proposed legislation to require the pledge of allegiance in schools. This wasn't particularly interesting in and of itself, except that he kept using a term that absolutely fascinates me.

The God-Haters (I think he also mentioned moral-haters).

God's cool and all, but I know this man would classify me as a god-hater (he kept using the term over and over and over to describe anyone who was against the pledge of allegiance - I wonder if he even realizes that relatively speaking, "under god" is a recent addition to the pledge). He was going on about America as a Christian founded country and yada yada yada.

Even though he's out in the West Valley somewhere, I hope there's a chance for some public hearing on this. Just so I can give the li'l old speech that "yes, this is America. This is a diverse place. Built on a mediocre constitution and a terrific bill of rights. We have freedom of religion here. We keep forgetting about that (ie - why were the Mormons chased out of the United States if we do have freedom of religion? why did political leaders sign on to the assasination of church leaders? why do members of one church burn down other churches? why do people burn crosses?). And if we're one nation under God, which God is this? The God of "thou shalt not kill"? Where was the God of Thou-Shalt-Not-Kill when smallpox laden blankets were given to the Native Americans? Where was the God of "thou shalt not kill" when brother took up arms against brother in the bloodiest war in our nation's history? Where was the God of "thou shalt not steal" when settlers continued to overtake the native american lands ("Oh, you have no concept of ownership? Oh, that will come in handy later." [Eddie Izzard])? Where was the God of "love thy neighbor" when men and women and children were held in chains under slavery? Where was the God of "love thy neighbor" when segregation was (and in some places, continues to be) rampant? Where was the God of "love thy neighbor" when honest Japanese Americans were held in our own internment camps during the second world war? Where is the God of "love thy neighbor" when Americans send anthrax-laden letters to American abortion clinics? People are doing a lot of terrible things in the name of this supposed American God - but it's not any God I'll sign up to believe in.

At the same time, other people are doing a lot of good things in the name of their God (whomever it may be). Good for them. And seriously, who would you rather go to Church with - someone who'd call you names like "God Hater", or someone who says "Bring all your good. We'll make you even better" (a near-exact quote of LDS President Gorden B. Hinckley, made on Larry King Live). While I'm not generally one to go to church, I'll go with the latter. Or my Grandpa's minister, who always called him "Milo, the hero of our little church"; a minister who was always quick to find beauty and joy instead of fear and malice.

God-Haters. God's not the problem. It's Man.
Likewise - God's not the virtue. It's Man.

And I shall remain divided - the misanthropic humanist.

J. Shell, January 30, 2003 04:10 PM, in Industrie Politico

January 29, 2003

stretched+pitchshifted in qtrape (inhouse quicktime hacktool); played back at rates {0.7, -0.8} with a squared difference against grains of same signal buffer swath.
elw9-banner.jpg
J. Shell, January 29, 2003 09:28 AM, in Sound Design

Regarding my recent post about cuejecture, (see "King of the Vapor"), I was asked what the differences where between cuejecture and what we're using now (covered in "More Fiddling with Project Management").

Briefly, what we're using now is Plone (slightly modified, including use of reStructuredText), with a custom "Project" portal type. A project is just a Folder that included a special workflow specific to projects so that we can track their state (Pending, Cancelled, In Progress, Suspended, Complete). CMF Collector is being used for issue tracking and to-do management. It's an intentionally simple system - we needed a place that had just enough structure, but wasn't as wild and free form as a Wiki but didn't lay down heavy process requirements.

Cuejecture was intended to be a bit of CRM as much as project management. Adding a new customer to the system added a new special folderish content type, into which one placed Contacts and Projects. Contacts had locations which could in turn contain addresses, allowing contacts to have different (and fairly unstructured) contact information form home, work, travel, etc. One of the intended uses of the system was so that customer contacts could actually be given log-ins to the site to track their projects progress, and may even submit new tasks. A project could be staffed with project managers and team members, and anyone logged in could get quick links to their current projects and open task assignments. This is one feature that I really miss in our current setup, but I may be able to program around it if I ever get the time.

The task system was based on some of Martin Fowler's "Analysis Patterns", based on the patterns in the "plans and actions" section. Tasks could contain tasks, and I believe they could contain "attachments" as well - where one would switch over to the folder view and add extra CMF based content. Tasks were meant to be more light-weight than normal Issues in general bug-tracking system.

So why did it fail? It took a LOT of work to wrestle the CMF into working properly for this type of site. I was thinking "Hmmm, projects, tasks, artifacts, all content - why not use content management?". Comparatively, a co-worker wrote a very simple templates plus SQL based solution over a weekend, whereas I spent months working on this project that was never quite complete.

One thing that core Zope 2 struggles with is being able to manage any sort of non-containment or non-acquired relationship between objects. One thing that we wanted was the ability to generate invoices for customers, and be able to include individual tasks on the invoice and put a time and monetary value with them. To do this properly, we needed a relationship service and event handling service, neither of which exist in core Zope 2. Since writing that project, some community releases have tried to fill in the gap, but at the time I had to focus on writing my own. I want to note that Zope 3 offers these services, and more, that would have made this aspect of development much easier.

This was a project that yearned for a full component architecture, or at least a more business oriented framework. It consisted of many interrelated small objects (the business objects - contacts, projects, tasks, invoices, etc), workflow agents (the workflow agent for tasks was one of the most complex and central parts of the system), services (relationships, events, navigation, alerts), and it could have used an annotation system (a way to add third party data to an object in private namespaces - ie, the invoice could decide to add time and money values to a task). In Zope 2, only the CMF comes closest to providing this. But the basic setup is so focused on "community web site" based content management that it takes a lot of work to disable some of these features. It's doable, but it's still not exactly the best fit for the design I was trying to accomplish. Gods willing, Zope 3 should offer a lot more in this area.

J. Shell, January 29, 2003 08:08 AM, in Zope

My friend and former co-worker, Chris Petrilli offers a great first dissection of the State of the Union address. Go read it.

As his remarks show, the speech is largely fluff and propaganda. This is nothing new, of course, just politics as usual. But this administration scares me. And... Well, it's hard to watch George. Whenever he talks, I just start wondering how far up his ass the puppeteer's hand(s) go? He's like a muppet knock-off gone horribly wrong.

Read Chris' remarks. His insights are much greater than mine.

And you can always watch this eerie reminder of last year's speech.

J. Shell, January 29, 2003 12:34 AM, in Industrie Politico

January 28, 2003

Philip Greenspun may think that with tools like OpenACS they've built some really cool communities like Photo.net. And while all of the above are actually really well done, the best online community that I have ever found is The Lomographic Society International, particularly their photo.ping.pong service. It includes the Lomohomes, a sprawling "virtual capital" of lomowalls and guestbooks. Sadly, there are still a lot of empty homes (probably made under an earlier version of the service), but the filled ones are very fun to visit. In the guestbooks, you're identified as your screen name and current "key lomohome image". With a plethora of contests, clever writing and design, and a worldwide collection of submissions shot under the "don't think, just shoot" mantra using this bizarre range of cameras - it's bound to be a good time. Lo-fi, analogue, quirky, ahhhh. I feel so at home here.

sigh - I was going to post to an odd Eucci & Co. track here called gd-jamjamjam04 and say "then again, this is what I tend to do when given a guitar, a lovely composer girl in the studio, and one on the phone," but EUC.CX is down for the time being while I tuck away time to rebuild; No Type is still rebuilding; DISTORTED MEDIA disappeared a long time ago; .tiln has only barely started showing signs of life again. So - all my online albums are offline, for better or worse. But I guess I can say "then again, this is what I tend to do when making recordings on the sound of a hard drive dying." And if you don't mind mp3.com, it turns out the jam still exists somewhere online. Now I just need to find the much more harse gd-jamjamjam01-03's. :)

A recent picture of my dad, taken with a supersampler and some Ilford XP2 film (color processable black and white). this is the raw scan. we made that apron for him many many years ago for fathers day.

J. Shell, January 28, 2003 10:17 PM, in Aesthetics

This is a screen shot of a project management project I was working on about a year ago. It's never been finished. But it had some cool things:

  • A "My Projects" and "My Tasks" feature, showing any tasks or projects assigned to you.
  • Hierarchical tasks. The workflow would take into account the state of subtasks, never allowing putting a parent task in an outer state if any of its subtasks were in inner states (ie - still in progress, etc). I never got around to making the workflow apply a parents state to all subtasks that were still open, but still - cool little feature.
  • Addition of customers and contacts into the site, with the ability to turn Contacts into Members (authenticated users), under the theory that we would allow customers to see their own projects.
cuejecture.jpg
J. Shell, January 28, 2003 04:17 PM, in Zope

January 27, 2003

So it's a rainy day in Salt Lake town, 2:45 pm, and I'm suddenly having a strong urge for Scotch, preferably a dark smokey single-malt, on the rocks.

And I just remembered I can't stop by my bar after work tonight because they're filming some scenes for Everwood there tonight. Damn WB.

J. Shell, January 27, 2003 02:48 PM, in Joy

While I haven't had time to really try this out yet, this little piece of software known as Jeep Safari looks like it provides a service that I've been dying for ever since Safari's public beta was released -- synchronizing bookmarks across multiple machines.

J. Shell, January 27, 2003 11:48 AM, in Apple / Mac

January 26, 2003

According to this search, SimCity 4 is targeted to come to the Mac!

I have actually been considering getting a PC recently in order to have a machine to play Sims Online and SimCity 4 on. Sue me, I like to build things. So when I can't actually be in a city of interesting size, it's nice to go into one of my creation and hang out in certain simulated neighborhoods. People watching in SimCity 3000 was curiously fun, and now in SimCity 4 you can actually move your Sims characters into the city. You can't follow the minute details of their lives like you can in The Sims, but you can use them for feedback, or watch them on their daily commute and get a feel for how bad the congestion really feels and is affecting their mood.

J. Shell, January 26, 2003 01:21 PM, in Apple / Mac

I did just land from manning the Zope.org booth at Linux World Expo NY (for better or worse). It was great to be back in New York, a city that I love but haven't been back to since July of 2001, shortly before I moved west. The primary reason has been time and finances. While JetBlue does offer extraordinarily cheap and timely service between the KSLC and KJFK airports, once hotels and general new york shopping, living, and drinking come into the picture, it becomes something that is all too easy to put off for some better times.

So, it was great to have Zope Corporation sponsor me to be there. It was too damn cold (while Salt Lake city is too damn warm - 51+ degrees Fahrenheit! In January! It's bloody spring skiing out there, with a dangerously low snowpack). But cold is always a good excuse to drink more Scotch.

During the expo, I was in a hotel on the corner of 40th street and 5th avenue, right by the beautiful New York Public Library and Bryant Park. But for my last night there (I stayed an extra night in order to have some extra time to enjoy the city), I relocated down to a hotel on the borders of Chinatown, SoHo, and Little Italy. I love that part of town. I went out to dinner with Chalu Kim of eGENIUS and the New York Zope and Python Users Group, and friends. I did get to finally see the new Prada SoHo store. It is an interesting store with some cool architecture. The clothes were beautiful pieces of art in their own right, particularly the accessories. But I still much prefer the beautiful minimalist gallery style of the Helmut Lang flagship store and neighboring flagship parfumerie.

Yesterday morning, I woke up at the hotel and started walking south, from ChinaTown to the Land of Legal Buildings in Lower Manhattan. As I kept walking and walking, past the Brooklyn Bridge and various churches, I found myself at the site of the former World Trade Center. The experience was incredibly eerie - the day was cloudy (light clouds, but still grey) and the streets were generally empty (financial district on a cold saturday morning). Combining this big hole in the ground (where work is actively continuing to restore transportation services) with the shells of damaged and bandaged buildings surrounding the site added to the eerie feeling, as the only sounds were of construction and the wind blowing through said empty damaged buildings. One such very tall building is still completely covered in black with a single pipe sticking out through the garments bellowing steam and water (and had a large icicle attached), and next to it lies a very large old building - ornate and with the copper(y) roof of its period. Peeking through holes in the fence one could see the sidewalks surrounding the buildings still covered in debris and neglect. Right across the street from the former WTC site in a small building that now houses the remains of a Burger King, second floor office space is available.

J. Shell, January 26, 2003 01:14 PM, in Aesthetics

A great note/quote from Brent Simmons. I agree wholeheartedly with everything that he says here, with my own usual catchphrase "We were violently robbed of our deserved space age"

I’m not a fan of George Bush. But if he proposes a mission to Mars in his state of the Union speech—as the Guardian reports he may do—then I still won’t be a fan of George Bush, but I’ll be hugely excited about the mission to Mars.

It’s time to do it. We’re way behind on space travel. [inessential.com]
J. Shell, January 26, 2003 12:32 PM, in Etc

January 20, 2003

From FAIR:

But after passage of civil rights acts in 1964 and 1965, King began challenging the nation's fundamental priorities. He maintained that civil rights laws were empty without "human rights" -- including economic rights. For people too poor to eat at a restaurant or afford a decent home, King said, anti-discrimination laws were hollow.

...

King's economic bill of rights called for massive government jobs programs to rebuild America's cities. He saw a crying need to confront a Congress that had demonstrated its "hostility to the poor" -- appropriating "military funds with alacrity and generosity," but providing "poverty funds with miserliness."

How familiar that sounds today, more than a quarter-century after King's efforts on behalf of the poor people's mobilization were cut short by an assassin's bullet.

["The Martin Luther King You Don't See On TV", Jeff Cohen and Norman Solomon]

There's more, including mentions of King's "Beyond Vietnam" speech that I know I've never heard:

From Vietnam to South Africa to Latin America, King said, the U.S. was "on the wrong side of a world revolution." King questioned "our alliance with the landed gentry of Latin America," and asked why the U.S. was suppressing revolutions "of the shirtless and barefoot people" in the Third World, instead of supporting them.

In foreign policy, King also offered an economic critique, complaining about "capitalists of the West investing huge sums of money in Asia, Africa and South America, only to take the profits out with no concern for the social betterment of the countries."

You haven't heard the "Beyond Vietnam" speech on network news retrospectives, but national media heard it loud and clear back in 1967 -- and loudly denounced it. Time magazine called it "demagogic slander that sounded like a script for Radio Hanoi." The Washington Post patronized that "King has diminished his usefulness to his cause, his country, his people."

J. Shell, January 20, 2003 11:36 AM, in Industrie Politico

January 17, 2003

The Sundance film festival is upon us. Do you have enough all-black outfits to survive it?
J. Shell, January 17, 2003 05:38 PM, in Etc

There are now movies up of Moztop in action. While I'm generally not a big fan of cross platform GUI toolkits, including Mozilla's, it's better that it runs on multiple platforms poorly than on the ones I can't get to, I suppose.

Stephan is doing most of the work, so all I have to do is the final preparation for a 0.1 release. What is Moztop? A site development environment for Zope 3. That's not enough explanation? Well, you'll just have to wait... [Zope Dispatches]

It's interesting to see this project resurrected. It was tried for Zope 2, but I imagine that not only was Mozilla still too young to support it, but that it was just a tough fit to put onto Zope 2. With Zope 3's component architecture and the ability to create full fledged View Components, which in many cases play the roll of view-controller (usually some sort of page template is the view, and the View Class, if one is written, is the controller. It updates the core content object and can do other framework level things such as event notification that the content object shouldn't care about), the work must be much easier. Hopefully the ability to dynamically generate forms based off of schema will include being able to generate XUL widgets as well as HTML, making it easy for component authors or configurators to add MozTop views without having to write too much XUL themselves.

J. Shell, January 17, 2003 08:55 AM, in Zope

January 16, 2003

Some of the bug fixes in this release came from us. It's amazing how big of a pain IIS can be. Well, I guess it's not that amazing. Anyways, this script does make connecting to Zope behind IIS much easier than PCGI.

2nd Beta Release of the Award Winning (yeah, right...) Zope+IIS Connector Changes include:
  • You no longer need to download WinHTTP 5.0 from MSDN, ASP404 should just work out of the box.
  • Fix for bug that caused hangs and delays with MSIE.
  • New configuration options for when IIS itself is behind a reverse-proxy or accelerator.
check it out [Zope.org]
J. Shell, January 16, 2003 03:43 PM, in Zope

This is half a test post out the latest NetNewsWire Pro Beta from Brent Simmons/Ranchero. It has a weblog editor that seems pretty decent (I got it connected to Movable Type pretty easily).

I'm wondering how well it would work as just a weblog editor. I keep NNW running on my iBook since I'm trying to keep this machine as my main reading/writing machine. But there's still that need to post from other places as well. At least Movable Type allows through the web posting (Radio does too, but since it runs on the desktop, it can get hidden behind layer after layer of firewall pretty easily).

J. Shell, January 16, 2003 03:29 PM, in Etc

I've updated the new Toulouse RSS Feed to include full content alongside the traditional description tag, using the content module. This seems to be working out well enough - NetNewsWire reads this part just fine. I like the notion of keeping the description element small - but I also like doing a lot of my reading straight out of the news reader.

I hope soon to have some really good RSS 2 feeds flowing from Zope.org.

J. Shell, January 16, 2003 12:40 PM, in Etc

January 13, 2003

I haven't had time to review this myself yet, but wanted to pass this link along: Through The Web Site Development. Jim quotes it as science fiction documentation, meaning it hasn't yet come to pass but could/should.

J. Shell, January 13, 2003 12:04 PM, in Zope

Lomography.com finally allowed image uploading a few months ago, and tonight I finally caught up to this fact and uploaded some SuperSampler picks, viewable at My Lomohome.

J. Shell, January 13, 2003 01:40 AM, in Aesthetics

January 12, 2003

One thing that Apple's new Safari web browser gets right is that it provides easy access to pop-up blocking. There are some sites that have web applications that use pop-up windows as part of the application in a way that triggers the blockers. It's nice to go to the application menu (or hit Command-K) and toggle this feature. Other web browsers that offer this feature bury it deep in their preferences.

J. Shell, January 12, 2003 09:03 PM, in Apple / Mac

I finally have a decent backlog of film rolls to develop, including two off of my Holga. The always colorful Lomography shop page for Holga is here. NOW they put it in Lomographic society packaging!

Until then, here are some Holga galleries of interest:

J. Shell, January 12, 2003 10:48 AM, in Aesthetics

The transition from Radio to Movable Type seems to be fairly complete. The archives are moved over. Now it's just a question of getting the rest of the content from Radio moved over to this server.

It's also 3:am, after a night of mad birthday drinking (woohoo for free birthday drinks!) and a weekend of even madder debauchery. Why I'm fiddling with MT at this time, I do not know.

J. Shell, January 12, 2003 03:11 AM, in

January 11, 2003

Dave Hyatt had a terrific post in his weblog today going into further details about the choice of KHTML over Gecko for the Safari web browser from Apple (which has a new downloadable release available for Jan 10 2003. One thing it still does not get right is that it renders TFOOT portions of tables at/near the top of a table).

Now the post is suddenly gone. I was reading it just a matter of seconds ago (it seems). His weblog is also devoid of perma-links. I recommend checking it frequently as it's interesting coverage of a sudden new promising web browser.

J. Shell, January 11, 2003 03:23 PM, in Apple / Mac

January 10, 2003

Industrie Toulouse has moved to a new site and new publishing system. The primary reason for the move? It's too hard for me to be bound to a single machine for publishing, something with Radio Userland imposes. You can set up Radio to be posted to over the internet, but Userland has made a point of making it a desktop web site. This has some plusses, the biggest one being zero-fuss. You can set up Radio to use Userland's hosted service, or any ISP / target that allows FTP. This is good for those who do not have access to a server to configure CGI scripts or Perl or larger systems such as Zope.

But still, as one who's been practically weaned on Zope and all of its predecessors (Principia, Bobo), I'm used to doing it all through the web. Now, that's possible.

So why not a Zope weblog? The primary reason is that there's no weblog software for Zope that's very complete, especially compared to Movable Type. I think this partly is due to the fact that Weblogs are popular things to host and for ISP's to administer, and Zope doesn't have a huge audience in this area. Secondly, there seems to be a lot of tinkerers and consultants in the Zope world. These are people who have no interest in writing a full featured weblogging system, or spend most of their time doing commercial work and have no time to make "free" products that are exhaustive. There are some great Zope products out there, but few that are really feature-rich. Most feature-rich Zope sites are custom jobs. Many Zope developers seem used to doing custom jobs.

There are some excellent building blocks to start from, including a CMF Blog (with Plone support) in the CMF Collective project. But because they're younger products (and because it takes a long time to really customize a CMF site, even a Plone site, to be the way I want it), I finally decided to pass on taking that route.

But the new Industrie Toulouse should continue to offer coverage of Zope, Python, Eucci & Co., politics, design, etc. And hopefully it will offer even more now as I shouldn't experience the thought of "I should post this. Oh wait, Radio's on another machine..."

J. Shell, January 10, 2003 05:38 PM, in

Opening Up the new Industrie Toulouse.
opening.jpg

J. Shell, January 10, 2003 04:26 PM, in

January 09, 2003

EuroPython had an interview with Jim Fulton (I can't determine the date, but I'm guessing some time within the past year), in which he gives a good summary of Zope 3's differences over Zope 2 (I've been looking for such a summary):

Zope 3 moves Zope from an inheritance-based framework to a component-based framework. Complexity is managed by splitting responsabilities among many cooperating components, rather than many cooperating mix-in classes. Components are connected using interfaces, which also provide component specification and documentation.

Some other big ideas:
  • It should be possible to use existing Python objects in Zope with little or no change.
  • Applications can be customized by adding, changing, or removing components.
  • Site configuration is done by site-managers or deployment specialists without modifying code.
  • Many CMF technologies will be part of the core.
  • Acquisition and namespace lookup is wildly more explicit.
I could go on, but I won't.
"Cooperating components instead of cooperating classes" could still be seen as an ambiguous phrase. I think developers who are steeped in component models and aggregation would understand it. But what about those who are used to the static overbearing inheritance model?

I guess it could be summed up as "Zope 2 expects you (you being an object in the Zope system) to provide it lots of information and functionality all by yourself. Zope 3 looks for people to help you".

In Zope 2, if you got annoyed that a particular class didn't implement the obscure little method to display sizing information in the ZMI (Zope Management Interface), there wasn't much you could do about it without monkey patching.

In Zope 3, you write an adapter for that object that implements the ISized interface, register the adapter, and voila! One little object helping another.

By developing services to query for adapters (saying "I've got Frank here, can anyone tell me how tall he is?") instead of expecting behavior directly from an object, new doors to interoperability and speciality open up. Susie pops over and says "Why I can tell you, I've got measuring tape right here! He's 5 feet, 11 inches tall." Of course, Frank can say "I can tell you" and report his tallness himself, but he's a busy man and knowing his height at all times just might not be something he needs to do on a daily basis.

Of course, if Susie can be replaced with a robot or some other machine or person that can perform the same job (measure how tall people are), she can be replaced without bringing down the system. Frank's genetic algorithm can't be replaced (easily), so if he's suddenly unable to report his height correctly, he's useless in this situation without someone to help him adapt.

Hmmm...

J. Shell, January 9, 2003 02:37 PM, in Zope
I'm generally liking Apple's new Safari web browser. I think it will actually open up some interesting competition in the "Mac OS X" browser world, at least between Safari and the Mac OS X native Gecko browser, Chimera. There's already been a lot of talk about Safari, these are just a couple of links and downloads that have stuck out for me:
  • Dave Hyatt's Surfin Safari weblog. Dave is the lead developer of WebCore, the rendering side of Safari. He's responding quickly to a lot of criticism and is already noting significant process in newer builds.
  • Speaking of newer builds, this slashdot journal details how to get at Apple's open source WebCore frameworks and replace Safari's rendering engine with newer builds.
  • Mike Pinkerton responds from a Chimera developer view.
  • Safari Enhancer is a tiny utility application that enables some hidden features of the Sarari beta, namely a handly little Debug menu.

I see some people posting huge lists of all of the other things that Safari should do. Stuff that. I say keep it small, lean, simple, usable.

Now, if Apple really wants to improve my web browsing experience, they'd come up with a way for me to sync my Bookmarks up over iSync/.Mac! I was reading some of the links above this morning before coming in, along with some Zope 3 posts that I just wanted to remember when I came in to work. I was all set to bookmark them, but then realized that I wouldn't have the bookmarks when I came into the office. Urgh. This is happening all too much lately.

J. Shell, January 9, 2003 12:41 PM, in Apple / Mac

January 07, 2003

Good MacWorld. A curious non-announcement - Apple's X11 for Mac OS X public beta.

I love that new 12" PowerBook. If I can ever find it in my heart to replace my beloved white iBook, it will be with that. Right now, this 500Mhz G3 is suiting me fine, but to have a full PowerBook with a PC card slot and audio input!, that would be sweet. Now if only Pro Tools 6 Free would come out (I still haven't heard if they'll continue that program), and Supercollider 3 would come out.

Well, I guess I could always go over to the other side and check out Max/MSP's beta for "Mac OS X".

J. Shell, January 7, 2003 01:10 PM, in Apple / Mac

January 05, 2003

Volkswagen's advertising team delivers another beautiful commercial for the New Beetle Convertible.
J. Shell, January 5, 2003 07:08 PM, in Joy

January 04, 2003

With Zope 3X alpha 1 out, I decided it was time to jump in again and see how it would be to write a new content object for it with associated components (adapters, views). I've tried to include comments in the files and README to document what I was doing as I was going along.

It can be downloaded here, and requires a fairly recent docutils and of course Zope 3X Alpha 1.

The current release is intended to focus more on documenting how to write a new content component for Zope 3 than on being a smart reStructuredText client. That functionality may come later.

I have some other thoughts about the process posted on ZopeZen.

J. Shell, January 4, 2003 11:53 AM, in Zope

January 03, 2003

Two big alpha releases were made for the new year: Python 2.3a1 and Zope 3X a1.

Python 2.3 doesn't make any major changes to the language (unlike previous Python 2 series releases, which brought things like list comprehensions, generators, nested scopes, iterators, etc). Andrew Kuchling, as always, covers the changes extensively. Of interest are - ability to import from .zip files, universal newline support!, a new logging package, a new Set datatype and default Boolean datatype.

Zope 3X (x for "experimental" - a final Zope 3 release without the 'X' is expected to have some Zope 2 migration features) is a completely different beast from its ancestors. Its primary focus is still the Object Publishing mission that's been in place since the days of Bobo, but beneath the covers it is shockingly different from Zope's 1 and 2 before it.

Zope 3 is also dubbed the component architecture project. Its design focuses on many interacting components with well-defined interfaces. It's an aggregation heavy design, as opposed to the inheritance heavy design of Zope 2. Adapters exist to take the burden off of objects for out-of-scope elements such as text indexing or sorting-by-size. As the author of a particular object, you can implement those interfaces (ISearchableText, ISized) on the class itself, or as separate classes. Code that requires searchable text or sizing information asks for an ISearchableText implementation for your class, and since that's the only interface that it's expecting to use, it doesn't matter if it gets an adapter or your class - it only matters that the ISearchableText interface is implemented correctly. Design by Contract finally makes a strong appearance in the Zope world.

Zope 3 should also score big on the packaging and deployment front. Zope 3 uses a new configuration language called ZCML. ZCML is used to register new components at load time, and to load in still further components. It wrests control away from Python's import statements and need for special functions in __init__.py such as the common Zope 2 initialize(context). As such, it can be not only more expressive, but allows control over the order in which items get initialized. Under the mantra of explicit is better than implicit, all new components have to be explicitly added (usually in the products.zcml file). A side effect of this is that heavily customized Zope distributions can be made. Some such distributions exist now with Plone installers and BizarShop. Zope 3's customization and configuration capabilities should allow similar distributions to be made that don't look like Zope at all, while still tying in to all of the available features of Zope.

The combination of heavy Interface use combined with rich configuration options should mean that any part of the system could be kicked out in place of a new one, as long as the expected interfaces are implemented. This is a fundamental feature of component systems, and Zope 3 looks like it will live up to this feature.

Another big feature of Zope 3 is the proliferation of View Components. Views can be individual ZPT pages, attached to a particular content interface via ZCML. But they can also be full-on components in their own right, usually as Python classes. And they're not limited to HTML. Other views may be written to correspond with the other publishing channels (ftp, xml-rpc, and others in the future). I wrote a post back in September about my early experiments augmenting other Zope 3 components, in which I include some example code making an XML-RPC view onto a Job Board component written by someone else. My final paragraph in that post reads:

And finally, Zope 3 should yield a usable scalable means of adapting the works of other developers into new solutions by providing better control of product/service/view configuration and overrides, such as adding a new XML-RPC API to someone elses bug tracking system without having to alter that bug tracking system, or use secret Python hacks to alter behaviour.

A few other positive notes about Zope 3X a1. The "grand renaming" went into effect during the final weeks of the beta. This involved cleaning up the Python package hierarchy. It also involved case-normalization of package and module names. They are now all lowercase, like most other well-written Python packages/frameworks (distutils, docutils, etc), which makes it easy to distinguish classes and other module exports from the modules themselves. Zope 3 also uses Python 2.2 "new-style-classes" and gets rid of ExtensionClasses, since now you can write new extension types for Python in C and subclass them (which was the big point of ExtensionClasses). Zope 3 also (finally) makes use of other long-standing Python technologies such as distutils.

Now for the negative aspects. Since this is an alpha of the Zope 3 "experimental" line, it's not surprising that there is little or no documentation. The code structure is significantly different from that of Zope 2. It takes some time to find ones way around the code layout. Most things are pretty clear though (a benefit of having Interfaces) when you do find them, but there's so much new technology and terminology here that even when you grasp the terminology, it's not obvious to an outsider how to put it all to work.

Zope 3 is heavily reliant on Services, which is a good thing. Services are like Tools in the CMF - well known objects that provide a service to a global or local region. Examples of services are Event Channels (yay! Events!), or something like the Error Log that showed up in Zope 2.6. Other examples of Services are Database Adapters. In Zope 2, most service objects existed in the same namespace as all other objects. Zope 3 manages them in special namespaces. This allows content objects to be managed separately from service objects while still retaining placefulness. There are numerous upsides to a service based architecture. What's the downside? The downside is there's significant "what the...?!" effect when first encountering Services and Configuration objects. I'm sure it will all make more sense as future Zope 3X development releases are made, but right now it's a proverbial kick in the head.

There are some other aspects of Zope 3 that I'm likewarm to right now, mostly because they're difficult to fully comprehend how/when/where to use at the moment. Zope 3 allows for automatic user interface generation to occur. This was a feature of OS/2 (2.0+), and the defining motive of Naked Objects. Zope 2 has a subset of this feature in its use of properties. What Zope 3 seems to have done is to marry Interfaces (software, not user) and Formulator together. In essence, this allows easy edit forms to be generated off of the objects interface description. From the 'src/zope/app/browser/content/configure.zcml' file, here's an example of how an editform is configured for a ZPT Page:


  <browser:editform
      schema="zope.app.content.zpt.IZPTPage"
      name="edit.html"
      menu="zmi_views" 
      label="Edit a ZPT page"
      permission="zope.ManageContent"
      />
And from the IZPTPage interface:

    source = zope.schema.Text(
        title=u"Source",
        description=u"""The source of the page template.""",
        required=True)
  
    expand = zope.schema.Bool(
        title=u"Expand macros",
        )

Whew! That's about all I can cover for right now. If I have time this weekend, I intend to write a new Content Component (probably a reStructuredText Document) to see how different it really is from developing a similar product for Zope 2 or the CMF. I have no promises right now that it will get done this weekend, but it is something I've been wanting to do. Now that Zope 3X is at alpha1 stage, the fundamental structure should be fairly stable.

J. Shell, January 3, 2003 03:22 PM, in Zope