[<<] Industrie Toulouse

May 31, 2003

It's been a relatively stressful few weeks. My trip to Portland last weekend, while enjoyable, was not relaxing. There was a lot of walking around and quite a few blisters as a result. So yesterday after a visit to the dentist (for root canal and crown), I stopped by my Grandma's house. As we sat in her front room talking (everything from family to politics), I noticed how actually totally relaxed I was feeling. The house was very well air-conditioned, the chairs were comfortable, and there were no computers. I'm going back out there today (when I had originally arranged to stop by), and am quite looking forward to it. It will be nice - again - to step away from it all for a bit.

On Monday I go back to the dentist to meet the hygienist. While the bill for the root canal/crown is actually far more terrifying than the event itself (during which I watched The Matrix), I worry now that the visit with the hygienist will be worse than the bill for it.

Amuse yourself with watching some Daily Show videos, particularly the well crafted debate between Presidential Candidate George W Bush (2000), and President George W Bush. The 180 degree turnaround brought about by the September 11th attacks is amusing (if disturbing) to watch as it plays out in debate format.

J. Shell, May 31, 2003 02:34 PM, in Etc

May 27, 2003

The Daily Show had an interview tonight with Diane Ravitch about her book, The Language Police. A fascinating, mind-boggling, exacerbating cycle of language washing going on by both the right and the left (more left than right).

The most stunning example, to me, was that you couldn't tell a story about a blind man who climbed Mt. McKinley (a true story). It's not just that you can't tell about a blind man with courage (it means, apparently, that "other blind people are handicapped and need special courage"), but you also can't say that he climbed the mountain in an ice storm. See, some children might have never seen an ice storm, so the story indicates regional bias. Yet - all of this stuff you can't say is on TV, on the Internet, out there in the wide world.

Boggling.

J. Shell, May 27, 2003 12:42 AM, in Etc

May 26, 2003

Senator Robert Byrd of West Virginia seems to be one of few making sense these days. From recent Senate Floor remarks, May 21 2003:

The reality is that, sometimes, it is easier to ignore uncomfortable facts and go along with whatever distortion is currently in vogue. We see a lot of this today in politics. I see a lot of it – more than I would ever have believed – right on this Senate Floor.

...We were treated to a heavy dose of overstatement concerning Saddam Hussein's direct threat to our freedoms. The tactic was guaranteed to provoke a sure reaction from a nation still suffering from a combination of post traumatic stress and justifiable anger after the attacks of 9/11. It was the exploitation of fear. It was a placebo for the anger.
There's a lot more, covering questions of governance, etc., before he delivers my favorite line to the senate:
We cower in the shadows while false statements proliferate. We accept soft answers and shaky explanations because to demand the truth is hard, or unpopular, or may be politically costly.
Before saying that "this house of cards, built of deceit, will fall." I hope he's right.

On a related note to today's themes, Lewis Lapham delivered the following as part of a commencement address at St. John's College, May 11 2003:

Liberty has ambitious enemies, but the survival of the American democracy depends less on the size of its armies than on the capacity of its individual citizens to think for themselves.

Tyranny never has much trouble drumming up the smiles of prompt agreement, but a democracy stands in need of as many questions as it can ask of its own stupidity and fear.

J. Shell, May 26, 2003 04:56 PM, in Industrie Politico

The weekend trip was really quite nice. I quite like Portland from my brief exposure to it. My hotel was right by many record stores and the bigger-than-I-could-possibly-imagine Powell's Books. I hated that place. Or, more accurately, I hated not being able to buy more (expensive dental work starts this friday). I found many books that I had been looking for and was finally able to inspect them personally. I walked away with Lewis Lapham's Theater of War and a sketchbook that fits in my back pocket. Among other books I wanted was Projects for Prada Part 1, a Rem Koolhaas book about his ideas for various Prada megastores. I want it even more now that it seems Prada is backing off their major expansion campaign. The San Francisco property they had bought a few years ago to be one of their epicenters is said to be for sale. Not that I can even dream of affording Prada now, and back when I had a decent salary it was still a bit out of my range, but they do make some beautiful items. And I admire the power of their brand.

I spoke of wanting to get away from many of the aggravating world and U.S.A. stories that continue to trouble me (and much of the world, I'm sure). I was only partly successful. I spent much of the time in Portland walking around and taking pictures, eating pizza, and drinking beer. But, on top of picking up the Lewis Lapham book, I also picked up the latest issue of Harper's and the June 2 2003 issue of The Nation. It contains a grim (but not unsurprising) article by Alisa Solomon titled The Big Chill, described as "Is this the new McCarthyism?". It's an absolutely sickening article about the wide spread ravages against those who supposedly dissent. Five students in a house hung a US flag upside down on the day the war started. It was responded to with broken windows, death threats, et al. Some professors have had to move out of their houses and teach surrounded by armed guards. Many professors receive a massive volume of hate mail / death threats daily, often for spurious remarks that really really really cannot be threatening to anyone. People carrying signs that say "I love President Bush" can stand in the public area, while others carrying protest signs (like the typical and sadly unimaginative "No War for Oil") have to move to a "designated protest area", or face up to six months in prison on a federal charge. If you say that you wish the Iraqi army were victorious and mass death was visited upon Americans, you have basically signed your own doom. However, if you gleefully read an email from a soldier describing the scenes of carnage in downtown Baghdad, like:

You would not believe the carnage, imagine your street you live own with body parts about knee deep, with hundreds of vehicles burning to include the occupants, we fill up trucks of body parts daily- this is every checkpoint we run.
[News straight from the war front]
Apparently, Bill O'Reilly read this enthusiastically. There is nothing enthusiastic about war! I don't understand how anyone can really really be pro-war. To be pro-war is to be pro-death. If that world view is acceptable to you, you have to understand that it's acceptable to our enemies. And when they hit us again, you can't say we didn't deserve it. Because, if you are pro-war and believe THESE guys, these 5,425-7041 (current count) Iraqi civilians deserved it, then you must think we do too. The right has attacked the anti-war protesters saying they "give comfort to the enemy." I would challenge it with the notion that the pro-war "protesters" give reason to the enemy. And that enemy has shown themselves to still be alive, active, and going strong. Alright, so we kicked out the Taliban and Hussein and may be able to make life better for [surviving] citizens in those countries. Al Qaeda, Hezbollah, and others are still strong, and only likely to get stronger in the face of American arrogance.

In the hours following the September 11th attacks, (which Alisa Solomon, the author the article that has my stomach in a knot, was personal witness to), footage was shown of apparent celebrations of the attacks in parts of the arab world. These were not even prominent (ugh) media figures like Bill O'Reilly - just street celebrations (and some of the footage was found to actually be unrelated to the attacks at all. sigh). This footage was, naturally, inflammatory to many Americans. As it probably should be. We don't want to see, nor should we see, people actually reveling in the deaths of so many undeserving civilians by the hands of so few. So what makes us think that Bill O'Reilly and others like him enthusiastically reading off the descriptions of carnage won't be used as inflammatory imagery by the recruiting machines of the world's terrorist organizations? Wishing for a more diplomatic solution to the Iraq situation (WMD's - still missing!) does not give comfort to the enemy. Appearing to gloat over the war, the carnage, and the destruction of so many civilian lives - that only strengthens our real enemies. Until the United States stops attacking nations and really puts an effort into using international and local police efforts behind stateless terrorism organizations, we're going to keep losing the war on terror. The civilian populations of certain nations will diminish for a time, but all the while the ranks of the truely dangerous terrorist organizations will keep growing.

This memorial day, I remember my Grandpa and his siblings and relatives who fought in the second World War. I remember how my Grandpa tried to keep my dad out of Vietnam, a war he knew served no real purpose. I remember how he was hoping to get better so he could move me and my brothers to Canada to get us away from any potential drafting for the Iraq war - which he also saw as serving no purpose. This man fought. This man smelled burning flesh, and had to stay at his post on his ship while they burned and others were injured around him. And, like George McGovern and other WW II fighters, hoped that "the war to end all wars" would live up to that moniker. Instead, we find ourselves in a state of perpetual war, perpetual war profiteering, perpetual enemies, and perpetual conflict in the homeland between those who question this perpetual state of war, and those who seem to want more. My Grandpa survived the war (we lost him this last October, a loss that's hit me deeper than I ever expected), but another member of the family didn't. This from a family that had to alter its name to make it appear "less Germanic" during the anti-German feelings of the first world war (another dark time on the homeland's political landscape).

J. Shell, May 26, 2003 03:13 PM, in Industrie Politico

May 22, 2003

My original travel plans did not take into account that this is Memorial Day weekend, but it should be a nice getaway anyways. I'm off to Portland for a couple of days (there's a Nurse With Wound record release party at the Cobalt Lounge). It's a rare opportunity to step away, even if only for a couple of days. I expect it to be nice. If anything, it will be nice to leave the laptop behind and as much of the world behind as possible. And, I'll get a chance to check out Powell's in person.

The world continues in its downward spiral, which will be nice to get away from:

  • The debt increase looks likely to balloon by another trillion dollars. "The $984 billion increase, to $7.38 trillion, would be the largest ever."
  • All of the states are running huge deficits, cutting programs, and getting little or no help from the federal government - especially on government mandates such as security. With a huge bloody debt, and the fiscal situation in the states, why is it that tax cuts make sense? Oh yeah - political trickery to keep those who have money in power to help those with money.
  • Molly Ivins has an excellent writeup about the nonvictorious peace in Iraq. No WMD's, no real damage to Al Qaeda, no real blow against terrorism, absolutely NO help in the Israeli-Palestinian conflict, and more American soldiers AND Iraqi citizens are likely to die in this "peace" than in the war (which, given the current Iraq Body Count could be grim indeed).
  • Watching Law and Order last night, I was pummeled with ads for NBC's summer lineup full of insane game shows and bad clones of Fox's reality series (and Fox is already doing bad clones of its own!). The game shows remind me of Your Money or Your Life (a game show the parents in Time Bandits are addicted to), which just cannot be good. When life imitates a Terry Gilliam movie, well... I'm just happy I have a fair amount of summer reading stacking up.
  • Oh yeah, and the U.S. wants to start building and testing new nukes nearby. sigh.

J. Shell, May 22, 2003 04:14 PM, in Etc, Industrie Politico

May 20, 2003

Now I really regret not paying more attention to Earational 2003, as The Hafler Trio performed opening day. In the same building and at the same festival that I had the privilege of doing the same a year and a half ago. It's great to see McKenzie in action again and his performance certainly looks entertaining and intriguing.

Today I received two new H3O recordings: one, cleave: 9 great openings on CD is part of a larger trilogy. The packaging is incredible (and much more white than those pictures would lead you to believe); two La chanson dada is a 10" translucent vinyl release with voice and strings, a recording of Tristan Tzara's words and George Auric's melody.

J. Shell, May 20, 2003 02:29 PM, in Aesthetics

Kurt Vonnegut: "What has happened to us? We have suffered a technological calamity. Television is now our form of government."

Read more of it - lots of great Lincoln quotes which, like many Benjamin Franklin quotes, seem to be achingly poignant today when discussing the evils of many American military ventures.

Speaking of television becoming our form of government, I certainly hope that we do not become Scarborough Country. It seems that more and more often television is proving to me that our language needs a lot more colorful adjectives for me to yell. Furthermore, Scarborough's apparent victory is apparently not. Sweet.

J. Shell, May 20, 2003 08:10 AM, in Industrie Politico

May 16, 2003

RIVE 026: Still Cooler Muse
ELW/EUCCI

This is a collection of live recordings from 1999 and 2001. In May of 1999, we were the ELW, turned on my concepts of touch and sound blending. Four nights of analog and percussive shows followed, and excerpts of two nights are presented here. Also here is the indefatigable Whitefield, one of my favorite performances. Powerful white noise and waves, it still echoes my current sentiments.

In 2001, I alone (with occasional help) was Eucci. Presented here are two festival recordings - one from Baltimore, MD [USA] (the once.twice festival), the other from 's-Hertogenbosh, NL (at earational 2001). The recordings aren't terribly great, but bootlegs can be so much fun. The acoustics at Het Muziekcentrum were amazing.

J. Shell, May 16, 2003 07:01 PM, in Sound Design

May 15, 2003

All of a sudden, Mac OS X has looked more beautiful than ever. I don't know if Apple's made some minor tweaks in the 10.2.6 update, or if it's the result of checking out a stellar Cocoa application, OmniGraffle 3. Or maybe I've been looking at too many advance screen shots of Longhorn.

Regardless, the new OmniGraffle is an amazing application. Traditionally, I've found it to be great for agile modeling. The new versions add to that with all sorts of really cool and useful layout time hints. As you're moving objects around, little blue hints pop up to tell you when your object is evenly spaced with objects around it, or aligned with objects around it. This little nugget alone makes it easier to put together simple object diagrams that are balanced and easy to look at. The new OmniGraffle user interface has reorganizable inspector palettes, similar to what can be done in Adobe and Macromedia tools these days. But OmniGraffle employs a subtle but cool Quartz effect - as you move a palette close to another one, little radio waves can be seen, showing potential communications between the two palettes. Once they actually touch, they join up into a single item with expandable and collapsable parts. The OmniGroup has also put the keyboard shortcuts needed to show/expand any of these palettes right on them, allowing very quick access to any tool you might need. Very nice, especially in low resolution settings where only a few can be displayed at once.

There are a lot of other great new features, and there's a professional edition available as well. This is an application that should be in everyone's toolkit.

J. Shell, May 15, 2003 07:48 AM, in Apple / Mac

May 14, 2003

Those who follow this weblog for stories from the software development side (instead of the gut-level screams of anguish on the political side) know that Object-Relational systems have been a minor fixation of mine. A few weeks ago, I wrote up my own evaluation criteria covering what I was looking for. I wrote this up because there are a lot of O-R solutions available for Python, but very few that came close to fitting my situation. This is fine - there are different designs for different needs. But now, it's a few weeks later and I'm nipple deep in a project where we're trying out some new things in this area. This post will cover the design decisions and where the current successes (and potential issues) lie.

I've cut back on my desires for pure object-relational mapping. One of the reasons for this is that making the leap to object-relational, particularly in regards to existing applications, is a substantive one. It's also a big leap if you are using an application and persistence framework that puts its own expectations on the behavior of objects. Also, there may well be very good reasons for wanting to use a relational database, and the use of an O-R mapping layer may impede some of the RDBMS advantages.

Knowing the issues that I faced with wanting to go to a pure O-R system, I decided to reevaluate the situation. It came down to this:

  • Zope's SQL Methods are great... for reads. They enable the complex and adaptive queries that I often need in an application.
  • Maintaining insert and update statements, particularly during development, sucks. Lately I've often had the pattern of wrapping a Python script/method around a Zope SQL Method. The Python method doing a tiny bit of extra data preparation, but usually would just pass data through. On INSERT statements, the Python method would add the extra step of calling out to a UID generator service to create primary keys. Often, adding just one new column to the database would require touching at least four different scripts just to get the data into the database.
  • Our data entry ('admin') screens have often been weak. Much of the UI work (forms, validation, etc) has often been focused on the public side of an application. We needed those same form and data validation capabilities to be in the admin screens. Because, like the previous bullet, manually entering new HTML fields to respond to a new column just sucks.
With these bullets in mind, I then started to evaluate potential architectures. And I don't quite know how it all happened, but during my regular HBO sunday night viewing on May 4, this new design just hit me. I believe most of the influences can be traced back to the designs and design patterns behind Zope 3 and Ape, along with some Martin Fowler writings (which are strong influences behind Ape as well). A simple overview of the architecture follows:

gatewayarch.png
Simple Architectural Overview

So first, we have the AdminView. This is a Zope 3 "view component" inspired object which contains one or more Page Templates and methods to respond to input from those pages. The "Form" is built dynamically (typically at instantiation time, but in development mode it's rebuilt constantly) from a series of Field Definitions. This is similar to Zope 3's use of Schema's which not only help define a data/attribute interface but are used to generate management screens. For most purposes, adding a new column that doesn't require any extra domain logic now involves adding in a single field definition to these forms.

When the data from the form is submitted, Formulator's (the engine being used) validation services kick in. These help weed out potential errors from bad data, and also ensure that all incoming data that needs to go to the database is in the correct format (ie - a float is a float is a float, a date is a date is a date, etc). Further post-Formulator validation may also happen to respond to multi-field situations. Then we ask for a gateway.

The AdminView is usually intimately involved with its form(s), but only loosely involved with the gateway. Gateways are gotten out of registries, with the hope that gateways to other storage solutions can be inserted for the same schema. By my understanding, this is similar to how APE works. It's also similar to the Table Data Gateway, Row Data Gateway, and general Gateway patterns from Fowler's Patterns of Enterprise Applications Architecture book. [note: I say similar because I myself don't own a copy of this book...yet]. So, a registry is asked for a gateway, usually in the form of: agate = core.getGatewayFor(self, 'SomeGateway'). The other thing this does is return the gateway wrapped in the context of the calling object. This enables use of one of Zope's most powerful features, Acquisition, allowing the gateway to access elements in the system near the caller. Typically this is to allow access to an already established database connection object, but it could allow access to other service objects as well.

Each gateway determines their own destiny. By that I mean, each gateway is different. Some only save data, others can save and read and clean data. Typically on a save operation a gateway will determine as to whether this is a new object to be inserted into the database, or whether it's going to be an update (yay!). Then it will clean out the data passed into the save to ensure that the datatypes are formatted properly for the database (ie - sql-quoting strings, formatting DateTime types, wrapping certain values in database functions like password(). When that's all prepared, a single method handle_op(...) is called with the operation to perform, the table name, the id column name, and the data to use for the operation (typically a dictionary of values to insert or update). An optional "wherespec" query may be passed in as well. handle_op then dispatches to an appropriate SQL method to dynamically generate the SQL statement required. The number one benefit of this - I don't have to update INSERT and UPDATE statements to deal with different column combinations! Another benefit is that certain gateways will be reusable in other situations across the application. My hope is that everywhere data manipulation needs to happen, these gateways will be able to do the job. This then leaves SQL methods with the primarily responsibility of querying and accessing data, which they're very good at.

This is, of course, a simplified view of the overall architecture. But I must say that so far, it's been successful. It's responded well to the database schema changes that have come up already during development - in many cases dropping the column from the database and removing the mapped Field Definition has been enough. We have a system that's well componentized already and under CVS control that seemed impossible to do a year ago.

Something else I have learned (or at least come to accept) in recent months is that the data/model/business object layer of an application needs very little intelligence. It's all the components that work on that model that can get complex. It was in trying to figure out how to combine the complex business logic AND data into a single object in an O-R system that worked with Zope that I kept running into walls. By moving that business logic that needs to manipulate data out into separate components, it all becomes much easier. A shoe is a shoe is a shoe. It might now how to update its own price, but it shouldn't know the complex pricing rules that may exist governing it. Another subsystem or component can handle those rules, and then get around to saying "hey shoe, your price is now $39.99". That is - if the shoe needs to know its price at all. wink. It's all so obvious, and it's all been in my head for years. But only recently has the logjam seemed to clear enough to actually get something done.

J. Shell, May 14, 2003 10:28 PM, in Objects and the Web, Python, Zope

While most of us who have practiced our patriotism by actually thinking (not that this fact takes much), the media is falling all over themselves with the realization that 15 of the 19 September 11th hijackers hailed from Saudi Arabia, not Iraq. I've seen this story and its responses (shouts of "well, duh!") mentioned elsewhere today and I just shook my head and sighed. But flipping through the channels this evening and seeing it for myself in big white letters over video loops of the admittedly tragic scene in Saudi Arabia, the string of obscenities that flew from my mouth were something to behold indeed. It's no wonder that the news networks have lost me as a viewer.

So with terrorism showing its face again in Saudi Arabia, does that mean we can attack Zimbabwe now? Mugabe's a bad bad bad man. It would make as much sense as what the United States has recently put the world through.

President Bush has already said they will "learn the meaning of American Justice" because we are the law.

This was a terrible event. But the war on terrorism is falling behind even the war on drugs record. What will continue to happen is that Americans will live in government prescribed fear and bear the brunt of unwarranted search and seizure policies and other fun surprises related to the PATRIOT acts, while the worldwide terrorist organizations will continue to recruit new members internationally and strike when and where we don't expect.

If we had a generally unified international community and respected international law bodies and even worked to strengthen those bodies, the situation could very well be less severe. There would be more resources available to deal with the worldwide problem that terrorism poses, with more local support that knows languages and customs where needed. But now we stand more alone than ever with a large army, larger ego, and a plethora of economic and foreign policies and attitudes that will continue to put the lives of our citizens at risk, worldwide.

J. Shell, May 14, 2003 12:15 AM, in Industrie Politico

May 13, 2003

From the Whiskey Bar:

Dirty wars usually get lousy ratings.

Which, of course, is why politicians don't like to fight them. There's never going to be a Victory Over Terrorism Day. Shrub's never going to be flown onto the deck of an aircraft carrier to celebrate the fall of Al Qaeda's capital. Self-important journalists in safari suits won't get to do standups in front of Osama bin Laden's looted palace. Think tank nerds won't get rich off consulting contracts with the Terrorism Occupation Authority. ["Meanwhile, Back at the Real War," billmon, 13 May 2003]
Which reminds me of a great line from the opening salvo of Get Your War On: "I can't wait until this war is over and there's no more terrorism!" "I know! Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore? It'll be just like that!"

J. Shell, May 13, 2003 11:04 AM, in Industrie Politico

It's still early in the process, but going along with the frustration theme echoed earlier, there's likely to be a loud new ELW release coming up on RIVE in summer, continuing the theme found on the "one minute no silence, one minute suspended detonation" work on gdbodycount Although, I should learn from my own history and not say these things too early.

J. Shell, May 13, 2003 12:30 AM, in Sound Design

kuro5hin.org has a post on How to quit smoking cigarettes. Last time I almost quit, I lasted about five months. I've had intervals of non-smoking since (usually lasting one or two months - max). It's nearing time (but not quite time) to finally fully completely do it. Consider this another "leaving myself a note" posts.

J. Shell, May 13, 2003 12:10 AM, in Etc

May 12, 2003

I finally have my film supply restocked. Even got a bonus roll of 400 that my neglected SuperSampler will love. Now I've got to take in some forgotten 120 film from the Holga to verify it's working so I can have all three cameras in tow when I go to Portland later this month to meet Nurse With Wound (one hopes that all turns out as advertised).

The excerpt from the new Nurse With Wound release is pure NWW, and still so different from the exemplar current release Salt Marie Celeste (excerpt).

J. Shell, May 12, 2003 10:21 PM, in Etc

It turns out that there's just a lot to be pissed and cranky about in the world. At the time of this posting, the suspected Iraq Body Count (namely civilian casualties) stands in the range of 3,736 - 4,771. Well, now that we've helped cause the deaths of more of them than a group of hijackers (primarily from a neighboring country and having so very very very little to do with Iraq in any case) caused for us, I wonder if the pro-war side is going to be satisfied? Or do we now have to cause this sort of toll on another country (and if so, do we have to go through the process of starving the people and depriving them of decent medical and sanitation goods? Or can we just go in right away?). It's been a bad week for the US in Iraq. Remember how we got tired of waiting for the U.N. inspectors to find anything for us to give healthy government contracts over? Well, our team's given up on the Weapons of Mass Destruction front too.

The 75th Exploitation Task Force is dismantling its operations for a likely departure in June, says the newspaper, after the group failed to find any biological and chemical weapons.

Members of the team told the newspaper that they no longer expected to find such stocks, and that they had consistently found targets identified by Washington to be inaccurate, or to have been looted and burned.[BBC Online, 11 May 2003]
I'm not even going to repeat the lies the pundits told us, outside of the typical fond memories of "oh, when the war is over and we have free reign over the country, we'll find shitloads! It'll be a piece of cake! My Grandma could find some WMD's when this is done!" And yet - nothing. Even with all of those detailed blurry condemning photographs of incontrovertible proof that Colin Powell presented us. You'd think we'd figure out where those pictures were taken and could at least find something there. This was the imminent threat that provoked the worlds only superpower into preemptive attack mode?

I'm not saying that Saddam Hussein was a saint, or even anything resembling a good person. But there are a lot of bad dictators in the world today. And, of course, the World Bank and IMF historically have preferred it that way. Well, they probably would have preferred a good dictator over a bad one, but it's still better than a man rising up from the working class being voted into office on a platform of taking back the privatized institutions that were taken by multinational corporations with no interest for the locals. But there's usually a minority of rich white folk around in those situations with run-off laws to keep that from happening. Lucky for us, I suppose.

We spend less in foreign aid than we spend in military budget increases. As we're the largest military in the world, why do we need to keep spending more and more to kick the shit out of people who have less and less?

The May 2003 issue of Harper's has an article by William Finnegan on The Economics of Empire. It's an excellent read on the lies and dualities of free trade (how it's still fundamentally tipped heavily towards the rich countries against the poor, and how the United States practices FAR less than it preaches) and the ill-fated (but not necessarily ill intentioned) programs of the World Bank and IMF.

With all of this in mind, plus normal stresses of work and personal life, I guess it's no great wonder that I find myself back in the land of Ministry, getting (surprising?) enjoyment out of the new album, Animositisomina. The Apple Music Store turned out to be helpful today to in letting me get What About Us?, Ministry's contribution to A.I. (and the only truely good scene). You know life's good when Ministry become your soundtrack... Good times!

J. Shell, May 12, 2003 10:10 PM, in Etc, Industrie Politico

May 09, 2003

author_wears_a_monkey.jpg

I love my LC-A. That is all.

J. Shell, May 9, 2003 08:38 PM, in Aesthetics

May 08, 2003

It took me a while to realize that I never restored the old galleries on the euc.cx site. New hypr-minimal galleries are now up. Random designs and photographs from recent (but not terribly recent) years.

J. Shell, May 8, 2003 02:12 PM, in Aesthetics

In the context that "one should read and analyze source code written by great programmers to become a better programmer," Jarno Virtanen asks "what would you recommend as a sort of source code literature to study?"

It's a good question. I don't know anything about truely great software, but source code that's been particularly inspiring to me lately in the Python realm has been:

  • Docutils - the document processing framework for reStructuredText.
  • APE - An adaptable persistence system that plugs into Zope/ZODB to not only offer good object-relational mapping, but also object-file (ie - an editable, understandable file) mapping, and the possibilities for anything else.
  • Zope 3 - Zope 2 is some of the worst Python code to take good examples from (a little bit too much cleverness, and also strange namespace population games). Zope 3, on the other hand, maintains well structured packages and modules, and backs away from the package/module/class name collision (ie - no "is it 'DateTime.DateTime.DateTime'? or 'DateTime.DateTime' that I should import?). While you can now end up with long full names like zope.app.browser.form.editform.EditView, in Zope 3 you can easily trace that down to the class 'EditView'.
And while I haven't looked at the source code of Twisted, its API documentation looks as if it's all in this style as well. I count all of the above as good Python style. Many of the newer additions to the Python standard library (particularly large subsystems like the new email package and distutils) seem to follow these guidelines as well. It's funny, however, to see some newer Zope 2 products claim "follows Zope 3 conventions." These conventions have always been there, Zope 2 just seemed not to promote them.

I also found myself being particularly impressed with the C source code for Ruby. I found it much easier to read than most of the C source for Python (at least, based on the few glimpses I've put into each).

J. Shell, May 8, 2003 11:59 AM, in Python

Taken in a rush on an early season snowfall with my beloved LC-A (last photo is a late season picture):

J. Shell, May 8, 2003 11:18 AM, in Aesthetics

I haven't even taken the time to read it yet, but I'm watching this weblog (I hate the term 'blog') purely for it's beautiful name: Whiskey Bar. Mmmm... That reminds me - it's time to get a new bottle of scotch for the home.

Curiously enough, when TAPPED referred to it, they spelled it the scotch way - whisky.

This is especially prescient as there are a slew of potential new EUCCI tracks slated for a limited run CD that I'm thinking titling around the them Whisk(e)y Valentines.

As for the word 'blog'. That sounds like the sounds I was making friday night after waaay too much whisky. A night that involved a foosball game that left all players with bruises...

J. Shell, May 8, 2003 11:15 AM, in Etc

May 06, 2003

Writing about ASP.NET, whyTHEluckySTIFF writes:

Validation controls are way too simplistic. What if I want to validate a control based on the condition of another control? On many forms, I want to ignore some fields based on the state of a checkbox. This should be easy. I've built some complex validation controls and I hope to put them up here sometime to soothe other developer's frustrations. I imagine this is a common complaint.
Ohhhhh. Yes it is. I'm sure it's a very common complaint. I'm not using ASP.NET, but a godsend in my life for Zope has been Formulator. I'm now in the habit of defining my forms on disks in Zope products (just using regular Python code - not the Formulator XML syntax), and in the last couple of days have had some tremendous experiences with it. Inspired by Zope 3's schema capabilities (which is what Formulator morphed into when it became part of Zope 3), I'm using my forms as so much more than just display data. They've become an interface definition of sorts (which is exactly how they're used in Zope 3). I rely on them to prepare data before sending it off to a database. And there's this wonderful validation thing.

And let's face it - simple form validation is better than none. We've been using Formulator for quite some time on the public side of our sites. Where we've avoided using it is in the administration screens. Normally, we keep these to ourselves and they're not terribly glamourous. But as we're turning more products over to customers, validation's become increasingly important. Now that a form definition is being used to prep data for the database, it's become exceedingly important.

But now that the simple validation is out of the way, what now? I have a situation where I have multiple date/time fields. I need to put in some rules that say "The off sale date can't be earlier than the on-sale date" or "the show date can't be earlier than the display date". It's easy to process this stuff brute force, but it would be nice to tie it in to the core validation framework. Pulling rabbits out of my ass here, I'd imagine a way to add extra validators onto Formulator - objects that contain some sort of validation code that effects multiple fields, and has a way of highlighting which fields are in error. But... Well, there are all sorts of ramifications of this that might change how the validation errors are or can be reported. I do know that I can probably make something work for my own system. Hmmm...

J. Shell, May 6, 2003 10:02 PM, in Objects and the Web

J. Shell, May 6, 2003 01:20 PM, in Photo Anyday

Yes, it's been quiet lately. I'm buried deep in a project where I'm still (as always) wrestling with the SQL/Logic/Object gap. I've decided that:

  • Using APE would require a significant application rewrite, which I don't have time for in the current schedule.
  • Other tools, such as Modeling, are too immature or put too many SCM burdens on me in their dependencies that, again, I don't have time in the schedule for.
Sigh.. It's always a matter of scheduling. In the meantime, I have come up with (sigh) an in-house solution that seems to be working, thus far. It primarily tries to cut down on the database access in the area that's the most mundane - inserts, updates, and deletes. And it also works to cut down on having to add new fields manually to an HTML page through form definitions (which reside on disk now) that are used to validate and prepare data that is to be sent to the RDBMS. It's nothing terribly fancy - it's a combination of some Zope 3 schema concepts with some patterns that Ape uses, in a way that doesn't require overhauling my perception of the application revision in question.

That said, I'm going to take a look at this Martin Fowler article about Domain Logic and SQL to see if it has anything extra to teach me. Which makes this post as much of a reminder of what to read when I hit the office as it is an update on what's been going on in the software architecture front.

J. Shell, May 6, 2003 09:28 AM, in Objects and the Web, Zope

May 01, 2003

Happy Loyalty Day! (Who knew?) Stay loyal, watch what you say, study your whitewashed history, stay alive.

J. Shell, May 1, 2003 02:28 PM, in Industrie Politico

Without a doubt, the web is going beyond the browser. This is actually the name of a bundle package, which I believe expires today, that features the Watson, Spring, and NetNewsWire applications for Mac OS X.

I love NetNewsWire (I'm using it to post this entry, in fact). I've tried Spring, but have very little use for it. Watson... I've tried Watson on and off for a short while. Watson was Sherlock 3 before Sherlock 3 was. These apps (Watson and Sherlock) are forms of Web Service clients. They have many channels which grab web data - sometimes from XML/HTML scraping, sometimes from actual Web Service calls - and wrap it up in native widgets. This allows, for example, being able to browse movies at local theatres and to get showtimes and even QuickTime previews. It's similar to what we're seeing in the iTunes 4 Music Store experience. In iTunes 4, the contents of Apple's music store can be browsed using the familiar native column view widgets of Mac OS X. Song listings show up in a table view. Navigational breadcrumbs show up as a new type of native button widget. But other visual data, such as artist pages or a header bar for album/search results, is HTML. It's an interesting blend. Similar in ways to Microsoft's strategy, but Apple (so far) hasn't chosen to make everything look like a web page.

It was because of iTunes that I decided to take another look at Watson. I remembered Watson's Amazon module being really fast as a result of using Amazon's web services API's. I downloaded the latest version of Watson and started playing around. The Amazon module is indeed fast. It presents a column view of Amazon's categories to browse around in, and results load quickly. I had forgotten about Amazon's magazine subscriptions section until I saw it in Watson. But after the Apple Music Store experience, I started wondering - when will I be able to subscribe to Harper's via Amazon through Watson, without going to the browser?

J. Shell, May 1, 2003 01:25 PM, in

From Mac Central, today:

Some early users of the iTunes Music Store have been disappointed that the 200,000 songs published so far have been major commercial releases. That's about to change, however: Jobs said that independent music labels want to come aboard the iTunes Music Store and have "already been calling [Apple] like crazy."
While this was expected, it's still good to hear. It's especially good that the labels have been contacting Apple. I think smaller labels have more to gain from this service: there's less competition for shelf space, distribution, etc.

J. Shell, May 1, 2003 11:42 AM, in Etc