Lazy Journalism, Anyone?

Paul McLeary at CJRDaily lobbed a ball over the net in a post appropriately titled “Distortion” last Thursday. It must have seemed a perfect opportunity for an “on the one hand/on the other hand” type of article: Harper’s editor Lewis Lapham wrote a widely-disseminated editorial titled “We Now Live in a Fascist State”, and Jonah Goldberg has announced a book titled Liberal Fascism : The Totalitarian Temptation from Mussolini to Hillary Clinton.

McLeary quotes a few short, inflammatory phrases from Lapham’s piece, then compares him with Goldberg, saying that the latter is “just as angry, just as distressed about contemporary American life, and just as removed from the ‘regular folks’ he wants to save as Lapham is”, although he offers no evidence that this is so, particularly on the last point.

He then quotes from the publisher’s blurb on Goldberg’s book. I think the first line is really all that’s needed to repeat:

Jonah Goldberg shows that the original fascists were really on the Left and that liberals, from Woodrow Wilson to FDR to Hillary Clinton, have advocated policies and principles remarkably similar to those of Hitler’s National Socialism.

McLeary’s conclusion from this?

But what does it say about the state of the opinion media when two writers who have traveled such different roads and have such opposite visions of the responsible parties somehow end up at basically the same place? Doesn’t really speak well for the seriousness of either enterprise, does it? After all, if the liberals are fascist, the corporations are fascist, the government is fascist, Harvard MBAs are fascist, proponents of campaign finance reform are fascist, then who isn’t fascist?

McLeary makes no analysis of the flaws in either argument. His assumption is that if they’re both saying the same thing but they’re on different sides of the political spectrum that they must both be wrong. He neglects to consider that there is another possibility: that one of them might actually be right.

Lapham analyzes fascism through a 1995 Umberto Eco essay, which says fascist states play up distrust of democratic systems, trump science with doctrine, label dissent as treason, and promote war and nationalism. There are certainly things to argue about in Lapham’s editorial, starting with whether Eco’s axioms are an adequate definition of fascism and how pervasive each of these features must be before the government reaches the “fascist” level, which itself might be different for individual observers. But it is a reasonably-stated argument, based on certain facts. While both men were too young to fight in WWII, Eco was born in Italy in 1932, and grew up as the country had to come to terms with its fascist legacy.

Goldberg’s thesis is that Mussolini, Franco, and other fascists were liberals. That’s a bit odd, because I don’t remember hearing that liberals went much for the uniforms and the goose-stepping. Artists, intellectuals, and writers — generally clumped on the leftish side of the political spectrum — were some of the first people attacked in 20th-century fascist regimes. When American leftists went to fight in the Spanish Civil War, they didn’t fight for Franco. Nor were they generally supporters of Hitler. On the face of it, Goldberg’s argument is doomed from the first sentence from an abundance of historical fact. Yet McLeary gives it equal weight to Lapham’s.

It’s possible that McLeary is making the erroneous equation of fascism with Nazism. Some people seem to think that a charge of fascism is the same as saying that the government’s heating up the ovens, and dismiss the idea that democratic America could slide into fascism as just too silly to contemplate.

However, anyone with a knowledge of the last century would know that there were different forms of fascism, just as there were different forms of communism. Mussolini was in power for a decade before (and after) Hitler took charge in Germany. Franco stayed in power so long that his eventual death was a gag line for Chevy Chase in the early days of Saturday Night Live.

But it’s a lot easier to write a column on deadline if you don’t have to actually think about that. Personally, if I was looking for a well-reasoned, fact-based argument, I think I’d probably go with Lapham and Eco rather than Goldberg.

MAX 2005: Using Flash and Director Together to Produce Rich Applications (9am, 18 October)

The last of the three MAX Director sessions I attended (aka the only MAX Director sessions) was the only one scheduled for repeat sessions.

Mark Jonkman’s been a regular speaker at Macromedia conferences for several years, where he’s usually spoken on Flash/Director interoperability, and MAX 2005 was no exception. He’s also contributed a couple of articles to the Director DevNet site.

Mark mentioned that there was still no public release date on the Flash 8 beta.

Much of the introductory material seemed to be aimed at Flash developers unfamiliar with Director (most of the Director developers I know have at least a passing knowledge of Flash, and some have a lot of experience with the program). Flash files are generally small; Director is more extensible. Flash uses vectors, a scripting language, nested movie clips, XML, a media server, FLV video. Director uses a wide range of media types, has two scripting languages, movies in a window, and Xtras.

Mark then showed some samples of Flash inside Director:

  • Flash as interface components in Director,
  • Director as a Flash application shell,
  • Flash as an integral component of Director.

To use Flash with Director, it’s essential to understand how the two application can communicate. In Marks’s view, simply modifying a Flash movie clip property is not real communication. True communication needs to be bi-directional. He then went through the evolution of communication between Flash sprites and Director applications over the eight years that Director has supported Flash cast members, then mentioned the ability to exchange image data planned for the Flash 8 Xtra.

Mark mentioned that the Lingo setCallback method used to notify Lingo that an event has occurred during ActionScript execution affects the prototype of a Flash object not simply the object instance.

The AS getURL method is the only way to pass messages out of Flash sprites. My notes mention he said Lingo’s getVariable method was not so useful.

Next, talking about the convert method, Mark mentioned it sends bitmaps to and from Flash 8’s BitmapImages object. He demonstrated some tests he’d done with the beta that showed convert was actually faster copying an image from Flash to Director (and vice versa) than simply duplicating the image with copypixels.

The Flash 8 Xtra should also be able to make use of the new abilities to upload files.

And finally, Mark experienced a crash showing his last example, of real-time imaging of a Flash sprite.

Strange Search Terms

My web provider’s server statistics page lists search queries from referrer data in both full and individual word versions, and I check them out every now and again to see how people are getting to my site. Back in the early days of my site, it was kind of scary to look at, because I’d written an article about my search to find out what happened to the royalties for Mein Kampf, and adolf hitler usually topped the list. Close behind was a page containing a Quicktime movie from the 1996 Macromedia User Conference showing a number of the top Director developers sitting in close proximity which I’d titled “Hand Grenade,” on the basis of a remark that a single hand grenade could have taken most of the well-known names in the field out. Often, it seemed as if the people looking for the first term were close behind with a search for grenade.

So I was looking through just todays’s top search terms, and I see things like flash 8 video alpha flame movie, actionscript code geometric shapes drawing, and actionscript code geometric shapes drawing, all of which I can understand, because the first is something I wrote about for MAX and I have mentioned ActionScript and game development in a number of posts. director rss lingo, otoy, hunter s thompson and pictures? All easily understandable. The top search was for nate sassaman, and since I’ve mentioned the Lt. Col. from Aloha a couple of times, that’s completely comprehensible.

But when I saw the second most common search term on the list was the british army in their treatment of our unfortunate brethren I really had to step back and think for a moment. That didn’t work, so I tried Google, and ended up in a post I’d written back in June of last year, not too many weeks after the Abu Ghraib scandal broke, which quoted George Washington on the treatment of prisoners (quoted in The New York Review of Books from Washington’s Crossing by David Hackett Fischer).

“…treat them with humanity, and let them have no reason to Complain of our Copying the brutal example of the British army in their Treatment of our unfortunate brethren.”

Referencing Flash XML Objects in Lingo

A few months back, I wrote a Director Online article about using the Flash Xtra to read XML data into Director. Now, I would never claim that this was the only way to work with XML; a fine Lingo alternative to the native XML Parser Xtra was created by Andy White six years ago and it’s still probably the best-known method for working with XML reliably. It’s even been extended, with the newer version (as well as the original) available through Shocknet.

But since my article was written in haste, I focused on the loading of XML data into Director and glossed over the actual access to the XML data. Since the XML object is not a Director list and because access to the data is through ActionScript properties executed in Lingo, that was probably a mistake on my part. A recent inquiry by Peter Wolf, who’d read the article, has prompted this attempt at explanation.

Here’s the sample XML document I’ll operate on:

<?xml version="1.0" ?>
        <item id="level0">This is Level 0</item>
        <item id="level1">This is Level 1</item>
        <item id="level2">This is Level 2</item>
        <item id="level3">
            <item id="level3.5">This is Level 3.5</item>
        <item id="level4">This is Level 4</item>
        <item id="level5">
            <![CDATA[<a href="/">This is Level 5</a>]]>


Refer back to my DOUG article to learn how to read in the file. The process creates an instance of a parent script, which can be assigned to an arbitrary variable. In the article, I named the variable doug; here I’ll just refer to it as x.

The XML data in the object is contained in a property named objXML. Typing put x.objXML.toString () in the Message window converts the XML data to a string and writes everything out.

The first node in the XML data is the testnodes container, which is the primary node for the XML document. It has 6 child nodes. You can determine that after reading this data in with the command put x.objXML.firstChild.childNodes.length. The firstChild reference is relative to the XML data, and points to testnodes. The childNodes refers to the children of testnodes.

If you’ve been confused by the whole goofy firstChild and nextSibling terminology in most XML references, don’t be ashamed. The people who came up with that scheme should be rounded up and shot. childNodes[0] is really all you need for firstChild because they mean the same thing. In the example above, you get exactly the same result if you type put x.objXML.childNodes[0].childNodes.length.

The first item in testnodes has both an attribute (within the opening tag for the item) and text between the opening and closing tag.

The item itself can be referred to as put x.objXML.childNodes[0].childNodes[0]. You can verify that by putting it (with the toString method following it) in the Message window and you’ll see both tags as well as the text between them.

Flash recognizes two node types: element and text nodes. The item nodes are element nodes. If you type put x.objXML.childNodes[0].childNodes[0].nodeType, you’ll get a result of 1.0000. Text nodes return 3.0000 (other types of XML nodes are assigned to 2 and other values).

The text between the opening and closing tags is technically another (text) node. The nodeValue property of the first item returns VOID.

The attribute (or attributes) of a node are accessed through a property of the same name, combined with the attribute name. In the items, there is an attribute named id. Typing put x.objXML.childNodes[0].childNodes[0] returns "level0".

To get to the text between the tags, you need to go down another level. First, make sure there is another level. Typing put x.objXML.childNodes[0].childNodes[0].childNodes.length returns 1.0000. Then, check to see whether the node is an element or text node. If put x.objXML.childNodes[0].childNodes[0].childNodes[0].nodeType returns 3.0000, you’ve got text.

You can access the text with nodeValue. Typing put x.objXML.childNodes[0].childNodes[0].childNodes[0].nodeValue will get you "This is Level 0".

A simple change, and you can get the fifth item’s text as well: put x.objXML.childNodes[0].childNodes[4].childNodes[0].nodeValue will return "This is Level 4". Note that the last childNodes index value didn’t change, the items are referenced by the second childNodes level, the final one just accesses the text node within the item node.

To make it a little harder, let’s try to determine the correct reference to the id attribute that says level3.2. That’s the third child node of the fourth child node of testnodes. Remembering that all index values in Flash objects begin with 0, if you try put x.objXML.childNodes[0].childNodes[3].childNodes[2], then you got it right. x.objXML.childNodes[0].childNodes[3] is the fourth child of testnodes, childNodes[2]is its third child, etc.

Finally, let’s look at the results of the text data in the node with the id of level5. If you type put x.objXML.childNodes[0].childNodes[5].childNodes[0].toString (), what you get is URL-encoded data for the text within the CDATA brackets: "&lt;a href=&quot;/&quot;&gt;This is Level 5&lt;/a&gt;". On the other hand, if you reference the data through the nodeValue parameter, you get non-encoded text: "<a href="/">This is Level 5</a>". This is useful if you need to pass text with links or tags in it, because otherwise the XML interpreter will attempt to render them into the XML structure.

Of course, this type of access isn’t limited to my own simple XML import implementation. They apply to any Flash XML object being manipulated in Lingo (or ActionScript, for that matter).

Drop me a line at blog at if this has been helpful or if you have any questions!

St. Crispin’s Day

I can’t think of a better day for indictments.

And Crispine Crispian shall ne’re goe by,
From this day to the ending of the World,
But we in it shall be remembred;
We few, we happy few, we band of brothers:
For he to day that sheds his blood with me,
Shall be my brother: be he ne’re so vile,
This day shall gentle his Condition.
And Gentlemen in England, now a bed,
Shall thinke themselues accurst they were not here;
And hold their Manhoods cheape, whiles any speakes,
That fought with vs vpon Saint Crispines day.

    Henry V, William Shakespeare

I Found My Job On the DOUG Job Board!

After over ten years of more-or-less full-time multimedia freelancing, I started a job today. Not just any job, but a Director job with Reality Engineering of Vancouver, Washington.

I mention this because — like any good Director developer — I got my job from the DOUG Job Board. Within days of seeing the posting on the Macromedia XML News Aggregator in September, I had an interview, and the only reason I didn’t begin work until this week was a project in progress and an impending trip to MAX 2005.

So, if any of you ever had any doubts about the Job Board, take it from one old Director developer who’s willing to say that it worked not only for himself but for the people who posted the job. At least, that’s what I hope they’re thinking!

Throwing Honor Over the Side

Dad called to let me know about the New York Times Magazine cover story this week on Lt. Col. Nathan Sassaman, an Oregon high school football star, subject of a laudatory profile in the Oregonian last year, and unindicted co-conspirator in the cover-up of an incident in which some of his men had forced two detainees to jump into the Tigris River from a bridge.

As I pointed out last year, the Oregonian ran their 6 July 2004 profile of Sassaman just days after an article with news of his role in the cover-up. In response to readers who pointed out the omission from the profile, the public editor claimed the reporter who wrote the profile hadn’t found any references to the bridge incident (although the editor did) on Google. Perhaps the Oregonian could spring for Lexis/Nexis or something more comprehensive.

MAX 2005: Sneak Peeks (5:30pm, 18 October)

It was another disappointing Sneak Peeks. There was a time not so many years ago when the Sneaks consisted of something more than looks at already-released features, possible UI tweaks, and stuff you’ve probably already heard is in the works if you’ve paid any attention to newsgroups, mailing lists, or (in recent years) blogs.

So perhaps it was apropos that the “Code Hunter” theme for the 2005 Sneaks took its inspiration from a TV show that jumped the croc about the time the movie The Crocodile Hunter: Collision Course came out over three years ago.

The Sneaks got underway with Captivate, and a statement that it would remove “the complexity of creating branded experiences.” Major new ability: export to Flash 8. Not too surprising, since it already exports SWFs.

Flex was up next. Macromedia’s partnership with Mercury was announced during one of the General sessions. Flex’s big “sneak” was a feature that enable Mercury’s automated testing tools to be used with Flex applications. In other words, a feature enhancement without which the already-announced partnership would be useless. Be still my beating heart.

One cool item — although not technically a sneak or even from Macromedia — came from James Kellik (sp?) of ESRI, a leading geographic information services company. Kellik showed a “next-generation mapping web service” that generates vector-based maps in SWF format, with features like auto-rotating labels and the ability to upload addresses in Excel-formatted files for mapping.

As I watched the Breeze sneak of a “collaborative journey from Australia to Anaheim,” in which the cursors of both collaborators appeared on map screens with identifiable tags, I wondered how long it would have taken to have written much the same thing with the Shockwave Multiuser Server.

The Flexbuilder application’s going to get a built-in RDS database browser similar to Dreamweaver’s. Also, a hot key that shows container heirarchy, and object browser editor window goodies.

Dreamweaver? JavaScript and XML interaction.

I didn’t write anything down for Contribute apart from the application name. Sue me.

I don’t have anything of significance to add to Tom Higgins’s Director Sneak, which was covered in a much more timely fashion by Gary Rosenzweig and on Macromedia DevNet. I do, however, have have a couple of photos.

Gary Rosenzweig, Chris Griffith, Mark Jonkman, and Mike Weiland in the Director ghetto of the Ballroom.

Tom Higgins demonstrating a preliminary version of the Flash 8 Xtra and its ability to move image data between Flash and Director with a version of Andrew Phelps’s fire demo that uses Flash’s image blurring on the flame bitmaps.

The obligatory Director-will-quit-execution now.

After Tom was off, the Flash team came up to describe the “most ambitous” remaking of ActionScript (again, something that was announced elsewhere). A “torture test” featuring 150 “boids” in a simulation showed a marked increase in speed — from about 4 to 15 fps — under the current version of the 8.5 Player, but I couldn’t help wondering how the same simulation done in Director would run. Nonetheless, I wish that some similar effort had been put into Director before so many of its engineering resources had gone away. With ActionScript 3, the Flash team has grafted an optimized language engine onto their Player as a foundation for the future and maintained backward-compatibility with the past.

Finally, some planned improvements in the mobile emulation engine were shown.

And that’s all I have to say about the Sneak Peeks.

Johnny Ramone Would Have Been 57

Prior to heading down to Anaheim for MAX, I spent a few days in Los Angeles with Barbara visiting friends and sightseeing. This time, we dropped in on a couple of cemeteries. Forest Lawn was extremely lawn-like, although I did stumble across Stan Laurel’s marker. Much more to our collective taste was Hollywood Forever, which had actual gravestones. And that was even before we came across Johnny Ramone’s marker. Oddly enough, we were only about a week late for what would have been his 57th birthday.