Archive for the 'specifications and standards' Category

Flash THIS! Mac OS X and Flash Audio

Tuesday, September 12th, 2006

Recently, the audio on Flash movies viewed in all web browsers stopped playing on my iMac. And apparently, I’m not the only one. Starting GarageBand fixes the issue temporarily, so I’ve ruled out the problem being exclusively an Adobe-created one; upgrading to Flash Player 9.0.2 didn’t change things.

In fact, initially, installing the update created more problems. I ended up having to run a disk repair utility because the volume information on my boot drive was mangled, and some permissions on Flash files got hosed.

See what happens when Dave Winer gets a new toy?

Wednesday, August 30th, 2006

First, Dave Winer coded NY Times River (and BBC River) to give Blackberry and Treo users a better way to get headlines. (I wish I could check them out from my mobile, but it’s a WAP phone, and the sites don’t display. What can I say–I’m a poor journalist.) And now, Dave has create a blogging tool for the Blackberry.

Nuts. I’m stuck with “moblogging” through Flickr with my webcam. And that doesn’t do very well with papercasting. I guess I gotta find a way to shake down some cash from the Internet tree and get me a Crackberry.

Sun Open-Sourcing Java? It’s Too Late, Baby.

Monday, May 1st, 2006

There’s rampant speculation about whether Sun will announce that it is going to open-source Java at the upcoming JavaOne conference. With Scott “I’ll open-source Java when IBM open-sources DB2″ McNealy stepping aside, and John “what about the shareholders” Loiacono now safely ensconsed at Adobe, maybe this time Jonathan Schwartz will follow through all the way and release the reference implementation for Java Enterprise Edition under some form of open-source license, as Sun has done with Solaris. And who knows? Maybe Sun will do the same for Java Standard Edition and Java Mobile Edition.

There’s just one problem: open-sourcing Java won’t change anything at this point.

I’ve been beating the open-source-Java drum for a very long time. Seven years ago (back when some of the plankholders of the JCP were bitching about Sun’s grip on the process, and Sun was arguing that it didn’t want the IP corrupted), I suggested that Sun spin off the JCP as a nonprofit and retain the rights to the Java trademark for revenue-generating purposes–as sort of a half-step toward open-sourcing.

(Ironically, Sun did eventually spin off a nonprofit out of the Java community–except it was GELC, and not the JCP.)

But now that Sun seems close to actually going all the way, it’s almost moot. Open-sourcing Sun’s Java intellectual property won’t dramatically expand the reach of Java into the developer community on the middleware side–there are already open source Java Enterprise implementations that have paved the way. And with an Apache-licensed, J2EE-certified server already available, why would anyone use a CDDL-licensed Java server instead for development (aside from it being the ‘official’ reference version)?

Besides, Java Enterprise Edition has already won the war for a substantial chunk of enterprise architecture, and it did so in great part because of the success of JBoss and Tomcat as development environments (and Eclipse, and all of the other open-source tools built around the Java standard).  On the other hand, Sun has been giving away its reference implementation for free
to developers for a while now. And despite a host of curiosity-inspired
downloads, Sun Java System Application Server Platform Edition hasn’t
exactly won Sun much more market share in the enterprise application
server space.

On the desktop, there’s not much room for celebration either.  Sure, an open-source Java Standard Edition could get bundled more tightly into Eclipse–if the licensing model allows it.  But open-sourcing Java probably won’t increase acceptance of Java Standard Edition on Linux, because Sun will most likely veer away from a GNU-compatible licensing scheme. And with Loiacono’s new home making major inroads into the mobile space with Flash as a developer plaform for phones (and fragmentation of the Java Mobile code base) don’t exactly make an open-source JME any more attractive to the mobile developer community.

So, Sun won’t be giving anything up really. Except its royalties off Java certification. But there’s still an opportunity to derive revenue–perhaps a better opportunity than there is with Java’s current licensing scheme–to get trademark licensing and support licensing revenue. Sun wouldn’t necessarily lose any more control over the destiny of enterprise Java than it has already, between the Java Community Process and JBoss and Geronimo already available as open-source.

In effect, Sun has waited until there was nothing left to really lose by open-sourcing Java. As a result, the potential impact that the move could have had, say, three or four years ago has been squandered. With nothing to lose, there is also very little besides PR to gain–other than possibly hoisting off the cost of maintenance of future versions of Java onto the Java developer community.

And that, folks, is why you shouldn’t use .htaccess

Thursday, March 23rd, 2006

I just recovered this server from a really hideous .htaccess failure. Since I’m hosting multiple domains on this one virtual server, I had constructed a whole bunch of .htaccess Rewrites to redirect requests to the proper subdirectories. During maintenance yesterday, the .htaccess file got corrupted, and my multidomain housr of cards fell flat–just before I had to leave the office to go visit my wife and son at sleep-away camp (a long story for a different blog).

I couldn’t figure out why the file had gone bad. On inspection, it looked intact; to be sure, I renamed the old file and saved a backup copy to the server in its place. No joy, the site was still sending everything to the root page. Fsk.

Tech support for my host, Powweb, was no help either. “We don’t support .htaccess,” they said. I said that the config had been working for literally years before the failure, and I thought that maybe there was a glitch in the server configuration or there was something wrong with the file system. They “elevated” the call — a fancy way of saying that they would eventually look at it.

So, rather than wait for them, I went back and beat on the server some more in an attempt to evict whatever demon had infested .htaccess. It took about 10 deletions and renames and reloads before I finally got a backup .htaccess file to take properly (or maybe someone rolled back a change they made in server configuration at my hosting company…I’ll never know). So at midnight tonight, I finally had everything where it should be. Sort of.

When Blogarati Attack

Friday, March 17th, 2006

If you ever doubted that personalities shape the path of technology, all you have to do is look at the checkered history of RSS. Even its acronym is the source of rancor: is it Rich Site Summary? RDF Site Summary? Really Simple Syndication? Any answer is bound to piss someone off.

When Steve Bryant pointed me at Rogers Cadenhead’s blog today, I suspected I was in for another RSS-related rumble. And I wasn’t dissapointed. Cadenhead got a letter from Winer’s attorney last week, threatening legal action over a variety of claims, such as infringement of copyright and a dispute over “third-party information”–other people’s publicly-shared OPML feeds.


Here’s Dave Winer’s side of the story.

Update: Here’s Burningbird’s summation of the whole timeline of this mess.

At its most basic, this is the story of a verbal agreement that went bad. But at another level, this is a fight over the future evolution (or not) of RSS, and something much subtler –if someone makes an API “public”, how public is it? And how open is a standard if someone can come along and slap you with a legal threat when you don’t use it in a way that they like? And just how far can you go using information provided openly by an agreement between two other parties–like an OPML feed, or phone directory listings?

The future of RSS is of more than passing personal interest to me. As the newly-minted director of IT strategy for Ziff’s enterprise group, I have to figure out how to make stuff work together, and right now RSS figures pretty heavily in that. But Atom could just as easily fill that role for my integration purposes, and if the whole RSS process is going to drop dead because of personality issues, I’m going to get as far away from it as I can as quickly as I can.

It doesn’t help any that the entire blogosphere is gathered around Winer and Cadenhead chanting, “Fight, fight, fight!” But then, we’ve seen this happen to people who’ve gotten on the wrong side of Dave before. And inevitably, it makes the higher questions involved subordinate to the battle of personalities. Which means the movement toward fixes in the holes in RSS is going to cease while Dave postures.

Before I go into full rant mode here, it’s time for full disclosure. I once worked with Dave Winer tangenially, as he was a columnist for XML Magazine, of which I was editorial director. I have spoken with Rogers Cadenhead all of twice or three times, more if you include comment threads on blogs and email exchanges (but not much). None of the above qualifies me to be much of anything other than an informed passing observer of either of these guys at the moment. But I do know that Rogers is one of the nicest guys in tech that I’ve ever interacted with, and Dave is…well, Dave.

If you take everything at face value here, the center of the dispute is OPML content. OPML is an outliner format, widely used as a format for exchanging sets of RSS feed subscriptions. We use it on Ziff to package our feeds for easy uploading onto RSS readers, and it’s used by a variety of blogrolling and RSS-based services for similar tasks.

The OPML Factory site that is the main point of this dispute is a port to the LAMP platform of the functionality that Winer had originally run at feeds.opml.org. The site didn’t scale well, so Winer turned to Cadenhead to port it to LAMP. Cadenhead had stepped in to save the bacon for Weblogs.com users who found their Manila blogs dropped when Winer could no longer support them, and had also helped Winer port the Weblogs.com “ping” service to LAMP before Winer sold the service to Verisign.

The two never arrived at a formal contract for the OPML project — the verbal agreement included parntership, says Cadenhead, and the written contracts offered none of that, making his contribution purely work-for-hire. So he refused to sign them, and now Dave wants to take his ball back (plus the $5,000 he paid Cadenhead up front for the work he’s done so far) and go home.

Cadenhead says the third-party data is “open” by agreement–it’s subscribers’ OPML files, which they voluntarily posted to Dave’s defunct OPML service in 2004. But Dave says that the data is not “open” — that people trusted him with the data, and he’s claiming copyright on it.

The dispute is not over OPML itself. OPML is claimed on opml.org as “a trademark of Scripting News Inc.”. The specification for OPML, however, states: “No claim of ownership is made by UserLand to the format it describes. Any party may, for commercial or non-commercial purposes, implement this protocol without royalty or license fee to UserLand. The limited permissions granted herein are perpetual and will not be revoked by UserLand or its successors or assigns.”

The OPML data from subscribers is another matter. Winer’s interest in it is probably fuelled by the indications it provides of what subscribers’ “attention” is trained upon. My former colleague Steve Gillmor, and my boss Mike Vizard, are both big fans of the potential of the “attention economy,” and I’m sure that Winer sees some potential “monetization” of information about what RSS feeds people are subscribing to. And I can see Winer being reluctant to dilute his interest in that cash flow by sharing it with someone who merely stepped up on more than one occasion to save his ass with generosity and programming skill.

But the dispute does have other root causes. In a post I made about RSS advertising recently, I noted that Dave and Rogers were having something of a disagreement about the future of RSS. Rogers wants it to keep evolving, as he thought Dave had intended when he set up the RSS Advisory Board and licensed RSS under Creative Commons, donating the standard to Harvard’s Berkman Center. Dave doesn’t want anybody touching the damned spec, because he says it’s done.

There is no other single person I can point to in the world of web technology who has shaped the development of web standards so much with his or her personal enmity as Dave Winer. If you’re involved in blog or syndication technology, odds are you’ve at least virtually bumped into Winer in some way, and you’ve formed very strong opinions about him. The Atom spec came about mostly because Dave claimed RSS as his intellectual property, and a large set of web developers just couldn’t bring themselves to work with him. Some, like Rogers ,who intially had mostly good things to say about Dave’s knowledge and contributions, have been driven off later by his orneriness.

Scoble weighs in on the competing lynch mobs, or at least on the group that’s been gathering around Rogers’ blog. Mike Arrington, Winer’s former lawyer who is now better known for TechCrunch, takes a driveby potshot at Rogers without any sort of explanation. Rogers responds to Arrington’s comment here.

It’s almost impossible to have a civil conversation over any topic through duelling weblogs. In the end, nobody’s mind is going to be changed about Winer one way or the other. All this argument will do is cast a bigger shadow over further development of the RSS standard for new applications, and we’ll be stuck with whatever proprietary extensions of RSS get hoisted on us by Apple, Microsoft, Yahoo, et al.

And so, I’ll be left with having to deal with a different framework for every point-solution integration point for my syndicated content, podcasts, etc.. All because of a clash of personalities.

My Friend Flickr: pulling Flickr photos into your site with XSLT

Friday, March 17th, 2006

Here’s another fun server-side XSLT (Extensible Stylesheet Language Transformations) hack for you. Previously, I talked about the idea of using RSS for loosely coupled content management. Well, I’ve been wanting to do some Web 2.0 mashup kind of stuff, but given that my XPath skills are a lot sharper these days than my JavaScript and AJAX (Asynchronous JavaScript and XML) skills (I still need to find the time to exercise that part of my brain again), I decided I’d attack them from the server side with PHP and XSL instead of writing some pretty browser-choking client-side applet. And the first target of opportunity was Flickr.

I’ve been wanting to add a live feed of my Flickr photo stream to one of my sites for a while. Fortunately, Flickr provides an Atom 0.3 feed (as well as RSS feeds) for each photo stream, so there was already a well-structured XML source to pull the data from. So, using Dreamweaver’s PHP XSLT library, I created a component that pulls in the Atom feed, strips off the extraneous text that gets put in front of each image, and renders the images from the feed wherever I use a <?php include(’flickr.php’); ?> in the page.

In the Atom feed for Flickr, every item starts with the user name and the text “posted a photo:”. So, I wrote an XSL statement using the “substring-after” function of XSLT to prune off the extraneous text. Then I made sure that the image tags in the feed would render properly by disabling output escaping:

<xsl:value-of select=”substring-after(atom:content,’posted a photo:’)” disable-output-escaping=”yes”/>

I didn’t want every photo in my feed to get displayed, so I used a parameter, “ItemsPerPage”, to control the number of items processed by the XSLT. The parameter makes it possible to select the number of images displayed from the feed at run-time. Alternatively, I could use two parameters to select a window of items to display, and use PHP or Javascript code to page through the feed. (I’ll save that for another project.)

Here’s the full XSL file:


<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp ” “>
<!ENTITY copy “©”>
<!ENTITY reg “®”>
<!ENTITY trade “™”>
<!ENTITY mdash “—”>
<!ENTITY ldquo ““”>
<!ENTITY rdquo “””>
<!ENTITY pound “£”>
<!ENTITY yen “¥”>
<!ENTITY euro “€”>
]>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” xmlns:atom=”http://purl.org/atom/ns#” xmlns:dc=”http://purl.org/dc/elements/1.1/”>
<xsl:output method=”html” encoding=”ISO-8859-1″/>
<xsl:param name=”ItemsPerPage” select=”4″ />
<xsl:template match=”/”>
<xsl:for-each select=”atom:feed/atom:entry[position() <= $ItemsPerPage]”>
<p><xsl:value-of select=”substring-after(atom:content,’posted a photo:’disable-output-escaping=”yes”/></p>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

The results of this XSLT can be seen in the right-hand sidebar of the example attention stream page I built in PHP, combining this blog, a del.icio.us feed and Flickr.

Building Blortals with Blogs, RSS feeds, XSL Transforms and Dreamweaver

Friday, March 17th, 2006

For the past month or so, I’ve been busy working deep under the hood here at eWEEK to pull together the worlds of lightweight content management (or, in other words, weblogs) and “enterprise” content management (as in the software guts that drive eWEEK.com) to create a new set of hybrid sites that my colleague Mary Jo Foley jokingly christened “blortals”. They combine the interactive, personal approach of blogs with the stream of news, analysis, opinion and product reviews related to a particular topic from eWEEK and other Ziff publications. And they’re put together almost entirely with RSS and XML Style Language (XSL).

While XML-based client-side browser magic like AJAX is all the rage right now, sometimes simple server-side XML magic is better–especially when you’re dealing with aggregating content from multiple sources, and you want your page to load somewhat faster than continental drift. Besides, syndication formats aren’t just for clients anymore–as the number of applications and services that produce RSS and Atom feeds grow exponentially, the XML syndication formats can provide a quick and easy way to integrate related content from disparate sources. Call it “Loosely-coupled content management.”

For example, take a look at Stan Gibson’s new IBM Watch site. It runs on our weblog server, but it could really run just about anywhere, because almost all of the content is rendered from XSL files that are pointed at RSS feeds from Stan’s weblog, eWEEK.com, and other Ziff sites. In the case of Stan’s site, the inbound IBM news feeds from eWEEK are created by a query against our content management system for any stories where IBM is a related company.

In fact, getting the RSS feeds configured was half the battle. That’s because Adobe’s Macromedia Dreamweaver 8 not only includes a relatively designer-friendly mechanism for adding XSL transforms to dynamic pages, but the actual code components required to do server-side transformations for ColdFusion, ASP, ASP.NET and PHP.

The only real coding I had to do was in XPath language in the XSL files used to define the transforms, to control how many items from each RSS feed are displayed on the page. So, for example, to only get 4 items from a feed, I could just use:
<xsl:for-each select=”rss/channel/item[position() <= 4]”>

</xsl:for-each>

And, since in some cases I was able to re-use existing RSS feeds (for example, the “What Your Boss Is Reading” section of the right sidebar of Stan’s site uses the RSS feeds of Baseline and CIO Insight), I also had to strip out the advertisments that get inserted into those feeds.

Thanks to XPath, that’s not a problem, since I was able to insert conditional statements into the XSL. The ads in our RSS feeds all have “ADV” at the beginning of the title, so all I needed was a conditional statement that skipped items starting with ADV:
<xsl:if test=”not(starts-with(title, ‘ADV’))”>

</xsl:if>

Since I wanted to be able to reuse the XSL fragments I created to render other feeds, and wanted to be able to set the number of items rendered and the advertising test string at the time the RSS feed is rendered, I made those values into parameters. Here’s the XSL fragment I used to render the headlines from an RSS feed, linked to their stories:

<?xml version=”1.0″ encoding=”ISO-8859-1>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp “ ”>
<!ENTITY copy “©”>
<!ENTITY reg “®”>
<!ENTITY trade “™”>
<!ENTITY mdash “—”>
<!ENTITY ldquo ““”>
<!ENTITY rdquo “””>
<!ENTITY pound “£”>
<!ENTITY yen “¥”>
<!ENTITY euro “€”>
]>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”
http://www.w3.org/1999/XSL/Transform” xmlns:wfw=”http://wellformedweb.org/CommentAPI/” xmlns:slash=”http://purl.org/rss/1.0/modules/slash/” xmlns:dc=”http://purl.org/dc/elements/1.1/“>
<xsl:output method=”html” encoding=”ISO-8859-1″/>
<xsl:param name=”ItemsPerPage” select=”4″ />
<xsl:param name=”advertcheck” select=”ADV” />
<xsl:template match=”/”>
<xsl:for-each select=”rss/channel/item[position() <= $ItemsPerPage]”>
<xsl:if test=”not(starts-with(title, $advertcheck))”>
<a href=’{link}’><h3><xsl:value-of select=”title”/></h3></a>
<p><xsl:value-of select=”description” disable-output-escaping=”yes”/></p>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

So, throw five or six transformations onto a dynamic web page, and before you know it you’ve got a portal. As they used to say in the Ronco ads, “It’s just that easy.”

And, since it’s XSL, that means that I can move the pages that render the feeds to any dynamic server platform I want with minimal recoding– to do a proof of concept, I took a site developed on our .NET-based Telligent blog server and ported it over to a Linux box running Apache and PHP in just under 4 minutes.

Turn off delight, the party’s over

Friday, August 19th, 2005

Last night, I went to an open house at MICA run by the graphic and digital design group of their Continuing Studies program. I went mostly because Sean Carton was speaking, and he had invited me to come by.

Carton has started writing a weekly column for my day job. Considering he’s now Dean of Philadelphia U.’s School of Design and Media, it was kind of strange on the surface that MICA would ask him to come speak–it almost seemed like GM having Lee Iacocca come speak at a Chevy product launch.
But I was also there to network, and to find out about MICA’s graphic/digital design programs. Plus, it gave me a chance to check out the new Brown Center at MICA, the concrete and glass monster on Mount Royal that’s most famous here in Baltimore for catching a bullet shortly after it opened. And besides, I wanted to steal some ideas from Carton.

After a whirlwind tour through the last 20 years of digital convergence and its impact on culture — and on the amount of available attention people have — Carton talked about how important design has become to the success of a product. Products (be they physical or information-based) succeed because of the total experience people have with them, and much of that experience is a result of design. The “that’s cool” factor, what Carton bullet-pointed as Delight, is what seperates the iPods, BMWs, Mini Coopers, Muvicos, Googles and such from the rest; people overlook the specs if something engages them in a way that goes beyond just the function of the product.

Delight with a web site isn’t just about the graphics, the beveling, the font choices, or demonstrating mad CSS skillz–it’s dependent upon creating a connection with the audience. The content needs to speak to people at a whole level beyond just passing along information. Eventually, the technology is irrelavent–it’s about making people feel like they belong within the world that the site reflects.

I look at the stuff my company does. Does it “delight”? I don’t think so. How do you “delight” IT people, corporate executives, etc. with a tech website? Or with a weblog, where it’s hard enough to just suck less?

The answer, I suspect, isn’t one that media companies are going to like.

Papercasting: Dead trees gone digital

Thursday, April 7th, 2005

A month ago, as I was coming off a conversation about podcasting with a friend, I decided to do a little satire of the technology and created a new RSS-based media distribution technology: padcasting. I had an almost unused .Mac site that was begging to be used for something, and a mind for mischief.

As I continued the prank, I actually put some dev time into it, fiddling with the guts of Blosxom to leverage its static rendering features to automate the page generation for the “plog”. I substituted a set of scanned graphics for the usual text date headers, and *bing*, I had a completely (well, almost)scanned paper website.

What amazed me was that some people took it seriously. I had people writing me, asking questions like “what about accessibility?” and “what about search engines?” Well, duh. Those are the same problems facing podcasting and audio blogging. That was sort of the point in the exersise, no?

But then I found that I liked the format. I started playing with it some more. The great thing was that I was still getting traffic from Google–but only from people who were actually trying to find my site, not people who accidentally stumbled onto it from some stray keyword or some stupid trackback for all-nude Texas Holdem that I hadn’t deleted yet.

And I could do low-tech visual storytelling, still use hyperlinks within the content (which you *can’t* do in podcasting), and plog while totally disconnected and sync later without having to lug around a laptop or re-key.

Then these guys in Switzerland started to riff on the concept, and dedicated their site to me, “The Father of Papercasting”.

Maybe there’s something to this. Maybe it’s just a long-running April Fool’s gag gone awry. Either way, I’m sticking with it. I’m going to shift over to Pyblosxom so I can do some more automation…maybe I’ll even build a GUI.

Revolting? They Stink on Ice!

Thursday, March 10th, 2005

(Apologies for the headline to anyone who hasn’t watched Mel Brooks’ History of the World, Part I. It’s good to be the king.)

Microsoft MVPs are revolting. They’re petitioning for redress of sins against VB6. There aren’t tires burning in the streets of Redmond yet, but it’s clear that some very loyal MS developers are truly torqued.

I did a lot of development in VB 4, 5, and 6, once upon a time. A set of applications I wrote in VB once for a couple of customers earned me loads of software maintenance work that got me through some tough financial times. I can understand the source of frustration that VB programmers who have a big installed base feel now that the tool they’ve built their empires with is no longer being supported.

But.

The conversation going on over at my old friend Rich Levin’s blog shows that there’s definitely more than one side to the story. And, in all honesty, I can watch this argument with total neutrality because I’ve moved on to PHP, Python and other dev tools for my programming work. (By the way, VB’rs, PyCON is coming up soon…maybe you should go.) VB.NET is pretty powerful, and VB6 makes me feel all warm and fuzzy with nostalgia, but I like to deploy things on the Web on any platform, and Python and PHP just work. They work on the Mac, which is now my primary Unix desktop. And they work on Windows.

Speaking of Windows, VB’rs, I wonder what Jim Hugunin is up to these days. I know that he went to work for Microsoft on the CLR… looks like he’s giving the keynote at PyCON. I may have to figure out a way to get down to it despite the dicey logistics of my daily life these days.