September 2005 Archives

David A. Chappell

AddThis Social Bookmark Button

Next week I am going back on the road to deliver another round of the SOA Architect Forum series. This time the Architect Forum is returning to Europe, and visiting a number of cities including Frankfurt, Madrid, London, Milan, Utrecht (Netherlands), Zurich, and Stockholm. I am co-presenting with VP of Event Stream Processing Mark Palmer of Progress Real Time Division (formerly ObjectStore), which is our sister company. I’ll be talking about ESB and SOA, and Mark will be talking about ESP (Event Stream Processing) and the Apama event processing engine. We have a great demo that shows ESB and the Apama engine working together in a Complex Event Processing (CEP) scenario. That’s ESB and ESP for CEP in a SOA – got it?

I was supposed to depart for Europe a week ago, but due to my recent surgery for a sports related injury, I had to delay traveling by a week. However, the show must go on! Hub Vandervoort, Sonic’s VP of Financial Services, was gracious enough to fly over there and deliver the first two Seminars in Frankfurt and Madrid. The audiences should not have been too disappointed that Hub was there instead of me. :) Hub is an extremely dynamic speaker and is also very knowledgeable of the SOA space in general, and in particular he is always ready to discuss in detail how customers are using Sonic ESB to build and deploy their SOA projects.

In fact, in our last round of the SOA Architect Forum series, Hub and I presented together in Mid-town Manhattan, along with two of our local field SE’s Dmitri Lelchuk and Suman Cuddapah (April 2005). Brent Williams, a financial analyst for First Call Corporation, a Thomson Financial company, was in the audience. At the end of the show, he came up to the book-signing table and asked me for a copy of the presentation, which I happily provided to him. I thought nothing of it at the time, since attendees do that quite regularly.

It turned out that Brent was so impressed by the level of audience enthusiasm that later that day he wrote up and issued an official report that aggressively favored PRGS, which is Sonic’s parent company. He actually included 4 of the slides from the presentation in the report. Included here are some excerpts from his report:

“We recently attended a sales seminar from PRGS’s Sonic Software middleware division. The well-attended event featured detailed product presentations and demonstrations for the Sonic ESB (Enterprise Service Bus) high-end middleware product family. In our view, the key points ahead of our expectations were the size of the audience, a bit larger than usual, in our opinion, for an event of this type, the sophistication of the customer base, and the aggressive positioning against well-established competitors.”

“We were impressed by the size of the audience, with about 75 people attending a routine sales seminar (most of the hundreds of these we’ve attended over the years run 25-30 people). We feel raw audience size is significant, because smaller middleware vendors such as Sonic, who compete with giants like IBM and BEAS, often find it relatively difficult
to fill their sales pipeline; a key early step in filling the pipeline is to get sophisticated technical evaluators and first-level management to commit the majority of a work day to attend these events.”


“The audience seemed to be more knowledgeable than many initial sales event audiences. The overall technical sophistication of the questions asked was particularly high, with most questions showing significant familiarity with high-end middleware solutions. Many asking questions
publicly, as well as others we spoke with privately, had used other products from larger vendors such as IBM and Tibco Software, so were already well aware of the performance and reliability problems that Sonic focuses on
solving.”


“Given the sophistication of the audience, we were impressed that the [Sonic] technical sales staff was able to answer every question from audience members with what we viewed as a sufficiently sophisticated answer, often referring by name to reference customers who have already faced similar technical challenges or performance requirements in their applications. This is important for building credibility to ensure that Sonic emerges on the “short list” of vendors considered for detailed applications; smaller software companies often operate at a disadvantage compared to larger vendors, who often make it onto short lists by default. Thus, ability to “play with the big boys” is far more critical for upstarts like Sonic, particularly as Sonic attempts to move to a more enterprise sale over time.”

“We also spoke to the Chief Executive Officer of a software company focused on high-end proprietary trading applications. Some of his customers are using his software to process 40,000-50,000 plus events per second, and he is looking for products to replace significant amounts of hand-written C and C++ code. We think that Sonic’s ease of development plus its increasing number of high-performance reference accounts, can help accelerate adoption on Wall Street, which in turn can be used to accelerate adoption of the technology on Main Street.”

Thanks Brent for that extremely flattering write-up, and we look forward to seeing you again on the next go-round.

Coming soon to a city near you,
Dave

Dan Zambonini

AddThis Social Bookmark Button

I’m not any kind of programming language zealot/fanboy - syntax is pretty much irrelevant; each to their own.

But I’ve been thinking about the bigger picture of choosing a language, from the business perspective. Sure, most languages can do the same thing, give or take. But what other (non-syntax) issues are there that can influence the ‘cost’ of adopting one language over another?

We use a mixture of languages (the best tool for the job), but I’m personally a fan of PHP, and have used it religiously for 6 or 7 years. So here are my initial thoughts on the cost of using PHP, based on this experience. I haven’t really elaborated on them, but you get the idea. What have I missed out? Do any of these make sense?

  • Recruitment. This one’s probably the most controversial. I think there’s more ‘chaff’ to filter through when recruiting/advertising for PHP developers. You could spin this into a positive, and call it ‘more choice’. But - compared to, say, advertising for a Ruby or J2EE developer, I’ve found that there are more ‘designers’ who think they can develop because they’ve written a random image function in PHP. And filtering through CVs costs money.
  • Recruitment. Conversely, this low barrier of entry (and cost) means that kids start using it when they’re young. So, arguably, an application from a 23 year old PHP developer is often better (at least, more experienced) than an application from a 23 year old VB developer. Some might elaborate on this (he says, in fear of being flamed) and propose that those people who are born developers - the best, 10x achieving people - are more likely to use PHP (or similar; Ruby, Python, Perl) over, say ASP, as they will have started programming at an early age, when their interest was first piqued. If you are 12, 13 years old and you want to start programming, it’s a lot easier to get up and running (and experimenting/learning) with PHP than ASP.NET/Visual Studio.
  • Windows. Like it or not, there are a lot of Windows boxes out there. We probably install an equal amount of our software on Windows and Linux servers. But the PHP development effort have (until recently) not taken Windows too seriously, which does increase our cost of using it in Windows environments (lack of ISAPI support was a real downer for a long time). Consistent, cross platform support is a real plus for many languages.
  • Maintenance/Debugging/IDEs. The majority of most large-scale software development effort is through maintenance. PHP has had (in the not-too-distant past) a lack of good quality debugging support (OK, there are some, but they aren’t as good as many other languages) and error handling features (e.g. Exceptions, until recently).
  • Market Perception. This shouldn’t be under-estimated. In our market, the majority of our competitors throw around terms like ‘J2EE’ and ‘.NET’ and all other kinds of frameworks. Big business loves these - they’ve heard of them, they’re trusted, they are low risk. So a PHP solution is often seen as the ‘open source’ or lesser solution, unable to contend with these big frameworks. This adds to the ‘cost’ in lost sales. I think Zend/PHP are now starting to take this very seriously.
  • Standards/Speed of change/Backwards compatibility. I’ll lump these in together, and just cite one example - XML support. Incredibly important for many web based systems, and hence you’d think it would be an important part of PHP? It was quite slow in coming, it changed over many versions, and didn’t have backwards compatibility with the earlier functions! That all adds up to extra costs (lost opportunities and additional maintenance). I’d still argue that there are some important XML features missing (I know, I know - I should shut up and develop them myself…)
  • Richness. I’m getting a bit close to the ’syntax’ thing here, but one of PHP’s killer attributes is the richness of the language - the sheer number and flexibility of its native functions and extensions. Want to do just about anything with an array? Sure, there’s probably a single function for it. Dynamically create PDFs, Images, or anything else? Yup, a couple of extra lines. This is where PHP has real value - in RAD/Agile environments.

This sounds more negative than I imagined it would have. It’s not meant to be - I’m very happy with the progress PHP has made over the last few years (finally, native Unicode support is coming!).

M. David Peterson

AddThis Social Bookmark Button

Related link: http://blinqx.net/linq.xml

As mentioned in the intro, the following code will create a local copy of the latest RSS feed for any particular tag on del.icio.us social bookmarking. The general idea (at least what I’m using for) is to take a bit of the load off the del.icio.us servers, make them available from a site that is focused more towards this particular tags content, and as a result be enabled to embrace-and-extend from there in any particular direction you feel appropriate.

See this post for an idea of what I’m using this for now and some ideas I plan to implement as time allows.

The XML looks like this:


<?xml version="1.0" encoding="UTF-8"?>
<delicious>
  <tags>
    <tag id="blinqx" saveResult="/srv/www/htdocs/blinqx.net">All items tagged on del.icio.us as
      blinqx</tag>
    <tag id="linq" saveResult="/srv/www/htdocs/blinqx.net">All items tagged on del.icio.us as linq</tag>
    <tag id="xlinq" saveResult="/srv/www/htdocs/blinqx.net">All items tagged on del.icio.us as
    xlinq</tag>
  </tags>
</delicious>

The XSLT 2.0 based source looks like this:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:output name="xml" method="xml"/>
  <xsl:template match="/">
    <xsl:apply-templates select="delicious/tags/tag"/>
  </xsl:template>
  <xsl:template match="tag">
    <xsl:result-document href="file:///{@saveResult}/{concat(@id, '.xml')}">
      <xsl:copy-of select="document(concat('http://del.icio.us/rss/tag/', @id))"/>
    </xsl:result-document>
  </xsl:template>
</xsl:stylesheet>

Which, when processed by a series 8.x Saxon processor will result in what you find in the files below:

http://blinqx.net/blinqx.xml
http://blinqx.net/linq.xml
http://blinqx.net/xlinq.xml

To get this transformation to run automagically I added the following line to my crontab file using ‘crontab -e’ which will run this transformation at :45 minutes after each hour. [NOTE: Thanks to Uche Ogbuji who helped me figure out that I needed to add the directory location of the Java run-time as opposed to just using ‘java -jar …’]


45 * * * * /usr/lib/java/bin/java -jar /etc/saxon/latest/saxon8.jar /srv/www/transform/del.icio.us/tags/get.xml /srv/www/transform/del.icio.us/tags/get.xsl

Thats it. Thats all that needs to be done. Now obviously you may run a site whose topic is nothing to do with Microsoft’s new Linq and XLinq technologies so changing the ‘id’ attribute value to the tag name you desire is an obvious and necessary modification. You will also need to change the ’saveResult’ attribute value to the location on your server you want it saved such that the results are accessible to your site visitors.

What may not be immediatelly obvious is that you probably don’t have the latest Saxon 8.x processor contained in the ‘/etc/saxon/latest’ directory. Wherever you unzip and store the latest Saxon processor is where this piece of the above crontab entry should point to.

[IMPORTANT!]
Please don’t use this to create a local cache at :45 after each hour (or whatever time you decide works best for you) on your personal dev-box that you and you alone will access. The idea is to help take some of the load off of the del.icio.us servers by creating a copy(s) of the RSS file and allowing your site visitors to add the copied feed(s) to their feed readers as opposed to accessing the tagged feed from the del.icio.us servers.

Also, as specified on the ‘about‘ page on del.icio.us:

Please do not poll any single RSS feed more often than every 30 minutes. RSS feeds are not updated more than twice an hour, and you will receive an error if you try to crawl more frequently.

With these two things in mind the above code is licensed under the following terms (clicking yes will gain access to the zipped file):

I promise that I won’t make the author of this code regret he ever made this post by using it for my own personal and selfish desires (and thus increasing instead of decreasing the load on the del.icio.us servers) and instead for the greater good of a particular community I take part in.

[Yes, I agree.] [No, I don’t agree.]

Whichever option you chose, enjoy!

Do you have any other ideas of how something like this could be used. If so, please post the idea with links to any sample code as a comment so that others can gain the benefit as well.

Jim Alateras

AddThis Social Bookmark Button

The latest version of the maven-hibernate-plugin only supports Hibernate v2.x and cannot be used for projects that depend on Hibernate v3.x. Fortunately, there is a patch you can apply to v1.3 of the maven-hibernate-plugin to support both Hibernate v2.x and v3.x.

This short article provides a step-by-step guide for applying the patch and installing the new plugin, version 1.4.

  1. Have a look at theJIRA Entry, which talks about Support for Hibernate 3.0
  2. Download the patch.
  3. Download the v1.3 of the maven-hibernate-plugin using svn
    svn checkout http://svn.apache.org/repos/asf/maven/maven-1/plugins/tags/MAVEN_HIBERNATE_1_3.
  4. Download the plugin-parent directory, since this is referenced by the maven-hibernate-plugin using svn svn checkout http://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk/plugin-parent
  5. Change into the \MAVEN_HIBERNATE_1_3 directory and apply the patch by executing
    patch -p0 < version2and3comat.diff .
  6. Build and install the plugin maven plugin:install

And that’s all there is to it. Alternatively you can skip steps 1-6, download maven-hibernate-plugin-1.4.jar and drop it in MAVEN_HOME/plugins directory……but where’s the fun in that ;-).

Kendall Clark

AddThis Social Bookmark Button

Lately I’ve been trying to increase my Gadget Quotient. At times that process has been a joy, but other times…

The Good

This weekend I was on the hunt for a new camera and a new television. I bought the latest Elph back in January, took it to Finland, then promptly lost it in a cab in Washington, DC. I was depressed for weeks.

Since Kate and I are headed to Mexico next week for a vacation, we decided we should replace the camera. Kate used to be a food stylist and food photographer, so she knows from cameras. We decided, based on our elaborate research, on the Nikon D50. The research process, by the way, included me reading the Washington Post ad about the Nikon D50 at Penn Avenue Camera, a local DC mini-chain. Kate said Penn Avenue was great, so we strolled down on Saturday.

I can’t say enough about local chains full of knowledgable experts. The people at Penn were helpful, friendly, and fun. We talked pros-and-cons and ended up with the D50 2-lens kit, for what turned out to be a really great price.

I’m sure Froogle would have told me a cheaper price, but now I have some friends (okay, they’re not friends, but they will help me with my camera!) in the business. We spent so much they even threw in a free 512mb SD card to go along with the 1gb high-perf SD card I bought.

Anyway, the Nikon D50 is an amazing digital SLR, maybe two steps above prosumer, though not quite to full pro. These categories are fluid, but the D50 should be my camera for many years.

The Other Good

Okay, so, camera done, we went out to the Virginia suburbs to look at some big-box retailers’ HDTVs. We just finished renovating a very old row house in the old DC neighborhood called Shaw, and we want to fill it with thousands of pixels of pure digital TV.

I knew we weren’t buying from a big-box, for no other reason than that I don’t trust the way they display TVs. I think the whole game is rigged like high-end HiFi shops used to rig equipment to favor their favs. Anyway, BestBuy, Tweeter, and Myer-Emco all had mixed results. We saw a lot of TVs, figured out that we weren’t really that enamored of DLP-powered sets (though they are the best value in the bigger-than 50″ market segment), and started to narrow things down to LCD.

On a lark, on the way home, we stopped at a very local chain called Belmont TV. Where we met Alex, with whom I promptly fell in love (well, you know how it is when you find a fellow geek who’s got your back and whom you immediately trust!). 30 minutes later we were hooked. We picked a 50″ Sony Grand Wega projection LCD for the living room (it’s only 16″ deep, but thousands cheaper than a comparable flat-screen LCD), and a 32″ Toshiba flat screen LCD for the bedroom. Belmont’s prices weren’t great, just like Penn Ave Camera, but they weren’t bad, and the customer service was amazing.

The Bad

Now my tale of electronic commodity fetishism takes a turn for the worse when the subject of HD DVR came up. A DVR is, basically, a TiVo — a computer for recording TV. I’ve had a TiVo since the summer of 2000, when they were first introduced. They ran a giveaway when they first released the Series 1; you had to write an essay on why you wanted a TiVo and they gave away 50 or so. When I heard this, I grabbed the Communist Manifesto and did a bit of Emacsing: replace “capitalists” with “network TV execs” and a few other choice substitutions, and I had myself a winning essay. Woohoo.

At any rate, I’m a complete TiVo junkie. Can’t live without it. (Well, really, I’m a complete DVR junkie; I’d be just as happy with a ReplayTV, likely.) Though I’m an old Linux hand, I’ve never even mod’d my TiVo… Didn’t see the need. Works fine as-is.

Since we’ve got two new HDTVs on the way, I want an HD DVR. And, thus, the bad: there is no such thing! At least, there’s no such thing that’s worth the time or effort or investment. DirecTV has an HD TiVo, but it’s a lame-duck piece of crap, apparently, and expensive ($599). I say lame-duck because DirecTV will soon release (like, first quarter 2006) their own DVR, marooning all of their unlucky HD TiVo owners.

I say piece of crap because while it’s a Series 2, the USB port is disabled, which means you have to use a phone line to transfer program data. Which stinks. To high heaven. I’ve been using a USB ethernet adapter on my regular-TV Series 2 for at least a year, and I’m not going back to a phone line. Which won’t work anyway since our only phone line (who needs POTS these days?) is at the opposite end of the house. Upstairs.

Comcast has an HD DVR coming out soon in DC, but Comcast is a really gross company in my experience. Plus Matt’s PVRblog suggests that it’s unlikely to be a very capable device. (And, okay, I had my heart set on DirecTV’s NFL programming package.)

I don’t understand why Mark Cuban — who’s made a huge, multi-pronged HD content play over the past few years, going so far as to invest in HD production houses and movie theatres — doesn’t buy ReplayTV and build an HD DVR. It wouldn’t take very long. You could use free software throughout. Put 2 very big SATA drives into it and an MPEG-4 encoder, a ton of I/O options, and Bob’s your uncle…

In short, I’m finally on the cutting edge, again, and it kinda sucks. There’s no good HD DVR solution, so I’m going to use my existing TiVo, which won’t record HD, but will record something.

I’m hopeful this mess will be sorted out soon!

The Unbelievably Broken

Let me bring this rant to a quick close by saying, flatly, that DirecTV’s customer support is the single worst corporate customer relations experience I’ve ever had. I’d rather wade through ten layers of Soviet-style bureaucracy in the old Yugoslavia than deal with them again.

(Alas, that being said, I signed up for their service anyway. My NFL addiction is sad but real. Please help me!)

Here are the lowlights:

  • I called them 5 (five!) times before I got a customer service rep who knew a little bit what he was talking about. The first four were totally ignorant.
  • I was quoted 4 (four!) different prices for the same service and hardware. I talked to reps who could not, systematically, distinguish between HD hardware and regular hardware, whether tuners, receivers, or DVRs.
  • DirecTV charges one price for poor people and another price for rich ones. That stinks. They call this a security deposit based on credit worthiness, but that’s crap.
  • I was told grossly wrong technical information by two different supervisors. I had to explain to several DirecTV employees that there actually was such a thing as a cable-ready HDTV, introducing them to the very idea of a CableCard.

In short, my experience with DirecTV was nasty, brutish, but not short.

My recommendation is that they train a separate unit of CS folks to do HD sales. It would be very simple to start the sales pitch with a simple question: are you calling about regular TV or HDTV?

Tallying up the score:

  • Belmont TV: Yes!
  • Penn Avenue Camera: Yes!
  • Local retailers generally: Why not give’m a shot?
  • Nikon D50: Absolutely.
  • Sony KDF-E50A10: Drool city.
  • Toshiba HL95: Oh, momma!
  • HD DVR scene: Bleak.
  • DirecTV customer service: Completely useless.

It ain’t all roses…

Dan Zambonini

AddThis Social Bookmark Button

There I was, trying to re-write Batman using only *nix commands

Batman with Unix commands

when I came up with an equally appalling idea. A comic strip about Apple and Microsoft, called Mac and Mike. Has this been done before? It feels like it should… (and the sequel could go a bit more unix-y, with Mac, Mike and Son).

Anyway, I ran out of juice at that instant. Couldn’t think of any way of personalising/stereotyping Apple and Microsoft into people. This is the best I could come up with:

Mac and Mike change a lightbulb

I think you’ll agree, it’s bordering the ‘nearly funny’ mark, but isn’t quite there, and is just toppling over the ‘embarrassingly unfunny’ side. Any ideas? How could Apple and Microsoft be represented as people? Any ideas for situations for them? Am I the worst computer artist alive?

David A. Chappell

AddThis Social Bookmark Button

Today I got to see some x-rays of the area where I recently had surgery to reattach my torn pectoral muscle. I took a picture of it with my camera phone -

image

This is cool. There are 4 pins that are inserted into my left arm. The pins have a small eye loop in each one, which the suture attaches to. The pins themselves are much like anchor screws that you use in a sheetrock wall. The surgeon drills a hole in the bone. He inserts the pin into the hole. The bone is hollow, and the pins have these littel spring-tensioned wings on them that pop out once they reach through to the inside of the wall of the bone. You can see the little wings in the pins in the photo.

For now, this is all that is holding the muscle in place. Over a period of about 4 weeks the tendon will reattach itself to the bone and heal naturally.
Dave

Dan Zambonini

AddThis Social Bookmark Button

I was recently talking to Lee from
Social Technologies gurus Headshift,
who made a compelling argument for the use of flexible, organic,
evolving taxonomies (folksonomies) in “the enterprise”
(big business), rather than the typical retrospective, pre-conceived
taxonomies that are prevalent in enterprise
document, customer and content management systems.




This got me thinking about other
aspects of the internet that are forking into two alternatives,
especially those where there is a traditional, or ‘assumed’ school of
thought and an interesting competing idea that doesn’t always suppose
the same restrictions.

Of course, things are rarely black and
white; most of these are not ‘either/or’ choices, and the internet
will continue to support these, and further choices. But ignoring
that, I’ve started to list some areas of internet technology where
it’s possible we could see a major technology/culture-shift towards
one of two opposite directions. I’d be interested to hear from
anyone who can comment on these, or can add further polarised topics
to discuss.



  • Big apps vs Small apps

    • This is another topic that Lee
      raised. Whereas companies used to seek ‘all in one’ solutions
      which could, for example, create all your data, manage it, keep it
      under workflow and versioning, apply access control, publish it,
      and give you statistics on its use, is there now an emerging trend
      to use multiple pieces of simpler software that each delivers a
      specific function? With more software publishing simple interfaces
      that people can actually understand and use (e.g. REST over SOAP),
      does this make the collection of smaller applications more
      attractive? Or, alternatively, are companies fed-up with
      supporting an increasing number of applications with differing
      interfaces, processes and user accounts? Will there be a clear
      winner, the niche providers or the big super-packages?

  • Local rich apps vs Online apps

    • This debate is as old as the web,
      but it’s no closer to being resolved. There has always been hype
      around the central online hosting/provision of all your software
      and services – to a point where you don’t need anything more
      than a basic dumb terminal on your desktop, because it will only be
      handling the interface. But common web browsers - after over 10
      years of evolution - can still only render a relatively primitive
      software interface, and bandwidth and latency have a significant
      impact on many potential online software applications (e.g. for
      music, video, or graphics). Will there be a shift back to
      powerful, rich local applications?

  • More control vs Less control (of personal information)

    • This was just a quick thought I
      had, and could be completely off-the-mark. There are many
      occasions on which you need to enter your personal information into
      a website (signing up for a forum, buying CDs or travel, social
      networking services, and so on). Your personal information is
      spread out all over the place, and there’s just no hope that you
      can manage it all. It makes sense, to me, that this could move in
      one of two directions. In the first, a centralised online service
      provides a single, hosted location for your personal information
      (possibly in FOAF format). It will probably manage more than just
      this, but the important point is that this service can be used to
      easily enter and synchronise your information with other
      third-party websites. I see this as ‘less control’ –
      certainly more efficient, but you will increasingly rely on this
      (remote, not fully under your control) service to manage and
      protect your personal information. An alternative option is to
      retain the same ’single service’ idea that provides personal
      information, but bring it back to your local computer. In other
      words, have a P2P (or otherwise) local application that manages
      your personal information. If anything or anyone wants to access
      your information, it has to go through this (local) software, which
      can be changed or deleted at any point.

  • Standardised Taxonomies vs Folksonomies

    • Following on from earlier, are we
      going to see the communal development of one or more ’standardised’
      taxonomies? A personal hope of mine is (or, used to be…) that
      Wikipedia will allow users to create and manage RDF-like
      data/relations between entries; thereby making Wikipedia URLs/terms
      an open, standardised (and inter-related) taxonomy of terms, usable
      by anyone in their RDF (or other) metadata. RDF data in China
      mentioning ‘Cats’ (the animal) could therefore be easily and
      automatically mapped to RDF data in Mexico mentioning ‘Panthers’
      (the animal). But could this ever work? Arguably, folksonomies
      are currently so popular (and conversely, standardised global
      taxonomies rare) because of the lack of (or necessity of) thinking
      about the bigger picture, and fitting in with the work of others.
      Folksonomies are built and evolved quickly because of this lack of
      process and red-tape. Should we give up hope on a slow,
      cumbersome, politically-heavy standardised taxonomy?

  • Common Browser technologies vs Browser diversification

    • The differences between web
      browsers (platforms, products and versions) currently accounts for
      34% of all web designers/developers nightmares (that’s just a rough
      guess, but it can’t be far wrong). There is therefore an argument
      that, like in the music and film industry, effort could be
      concentrated and money saved if only a single browser/platform
      existed. If Mr IE, Mr Moz, Mr Opera, Mr Safari and all the others
      could get together around a table and square their differences,
      developing for the web could be made so much more efficient. No
      more CSS hacks! No more Javascript switches! Yes, you can rely on
      SVG support and PNG transparency! But is that really likely?
      Well, who knows – but it could also get worse. Like in the
      early days of the browser wars, web browsers could increasingly add
      new functionality and features that are only supported in a
      specific browser, in an attempt to add value for users of that
      browser. Through this, the browser could guarantee its success by
      providing useful additions (which is why Netscape — who added
      width and height attributes for images — is now so popular, and IE
      – who added <marquee> — is nowhere to be seen).

  • Explicit Metadata vs Implicit Metadata

    • We don’t really have much
      metadata on the web at the moment. That’s not to say we don’t have
      the data, we just don’t usually expose it on the internet. If the
      Semantic Web is to happen, then we need for a new layer of
      data/metadata to be published on the internet, underneath the
      current articles, CDs and images that already exist. With this new
      web of data at our disposal, a whole new world of opportunities
      open up. But is this really likely? What if we find that the
      trust issues (or quality issues) can’t be resolved? Maybe we don’t
      need any explicit metadata at all – Google seems to cope with
      measuring importance through implicit metadata (links between
      pages), so could we not take this further? Can we further develop
      the natural language processing algorithms and image processing
      algorithms to deduce meaning and all kinds of other metadata from
      existing content?

  • Death of Email vs Re-birth of Email

    • I’ve been foolish at many points
      in my life, but none more so than publishing my email address on
      the internet since about 1992 (who was to know that Usenet postings
      would still be available now?). This probably explains why I get
      about 800 spam emails a day (thankfully, my spam filter cuts this
      down to only a dozen or so). But I know of some people who have
      given up on email altogether. Email is drowning in unsolicited
      messages, it’s too easy to ignore, and did they really receive that
      email? Has it been caught by their spam filter? So, could email
      be on its way out? Or will it be given a new lease of life through
      the injection of digital signatures, encryption, and new
      technologies that let us ensure delivery, receipt, and limit
      maliciousness?


Do you see any of these choices being more likely that the other? Can you add any more discussion points?

Michael(tm) Smith

AddThis Social Bookmark Button

I just came across chromatic’s posting The Short-Term Allure of the Proprietary Trap — which points out a logical flaw in the rhetoric within a recent bit of anti-open-source, pro-Microsoft propaganda disguised as a press release from a supposedly “nonpartisan” organization (and, as usual, an organization that, at least based just on its name, one would assume has no vested interest in bashing open-source software).

In this case, the source is an entity that calls itself “Citizens Against Government Waste”, which nobody else I talked to seems to know much at all about. So I figured it might be worthwile for me to share what I know about where it came from it, what it promotes, and what its history and realationship with Microsoft is.

Where CAGW came from

For those unfamiliar with “Citizens Against Government Waste” (CAGW): It advertises itself as a “grassroots” organization and as an organization whose mission is “eliminating waste” (nice phrase, that) in the federal goverment. But CAGW actually is neither. Not by a long shot.

You can find out more info by following some of the links on the Center for Media & Democracy’s page about CAGW. The following are just some brief details.

First of all, despite what you might assume from its name, CAGW was not formed by, say, some average taxpayer or group of average taxpayers fed up with wasteful government spending and it is has never been driven by such a person or group of people.

Instead, CAGW was started by Peter Grace, chairman of the board of W.R. Grace and Company, a conglomerate that was a US$5+ billion-a-year operation at the time. CAGW is basically the outgrowth of a government-funded group, the President’s Private Sector Survey on Cost Control (a.k.a, The Grace Commission) that Ronald Reagan set up during his first term, and chose Peter Grace to head.

The Grace Commission, like a few of the other stellar brain-trusts that the Reagan administration prudently spent good government money on at the time (for example, the Meese Commission — let’s take a moment to remember all the important work they did, and the big return on investment that US taxpayers got out of the money spent on that work) ended up producing pretty much what was only to be expected: A set of “recommendations” that (shock) aligned exactly with the “revolutionary” sort of “get the government off our backs — especially us poor little corporations who are just trying to make a buck” policies promoted by the Reagan administration in the early 1980s and promoted in subsequent administrations by “government servants” of the “yes, I am the recipient of a variety of ‘corporate generosity’ and/or the board member of several large corporations but of course that does not bias my decisions in any way” fold.

In the case of the Grace Commission, the recommendations included making changes in federal legislation — fairly radical and sweeping changes, in fact — to promote corporate deregulation.

What CAGW promotes

CAGW continues to work in the “degulation good, regulation bad” spirit of the recommendations the Grace Commission made. And CAGW continues to be driven by the interests of large corporations — including the Phillip Morris corporation, Exxon, and (surprise) Microsoft — from whom it has solicited and received a large part of its funding.

In fact, a more accurate name for “Citizens Against Government Waste” might be “Corporations Against Government”. Period. Because much of CAGW’s efforts actually center not around promoting federal waste-cutting per se, but instead, much more narrowly, in promoting federal departmental spending cuts and specific legislative changes to weaken the US government’s powers to monitor corporate abuses — in particular, by getting rid of stuff like all those tiresome and costly (to corporations, that is) environmental, health, and safety regulations that current US federal law requires their US operations to comply with. And opposing efforts by the US government to punish corporate violations of federal law.

Which brings us to Microsoft…

CAGW and Microsoft

CAGW has very consistently and very publicly come out on the side of Microsoft in the legal efforts in the US (and in the EU, and wherever else) related to Microsoft’s violation of anti-monopoly laws.

And despite the fact that it makes no effort at all to inform the public (or even the individual people hoodwinked — mostly on the basis of its name, I would guess — into financially supporting it) that it receives funding from Microsoft, the CAGW has for years now been churning out “Microsoft good, open-source bad” propaganda (though not on the same scale as their “deregulation good, regulation bad” stuff”).

Specifically in regards to chromatic’s posting about the latest CAGW press release: CAGW’s opposition to the state of Massachusetts’s efforts to move to open-source software (and thus away from Microsoft products) is old news. CAGW has been issuing, um, helpful warnings about it for more than two years, ever since Massachusetts officials first began publicly discussing the possibility.

Try entering “Microsoft” into the search box on the CAGW site and see what you get (for added fun, try entering tobacco and read a few of the thoroughly unbiased CAGW press releases which cover or mention that).

Or just take a quick look at the “Technology Reform” section of the CAGW Links page, where you’ll find a link to the Microsoft corporate site, along with the following statement:

Visit the Microsoft website to examine the future of cyber technology!

More details about “Citizens Against Government Waste”?

David A. Chappell

AddThis Social Bookmark Button

Related link: http://searchwebservices.techtarget.com/originalContent/0,289142,sid26_gci112477…

During the press flurry that resulted from IBM’s recent ESB announcement, I got interviewed by a couple of journalists -
IBM trots out muscle-bound SOA
By Michael Meehan, News Writer
14 Sep 2005 | SearchWebServices.com
http://searchwebservices.techtarget.com/originalContent/0,289142,sid26_gci1124772,00.html

ESB Guru Dave Chappell Welcomes IBM’s Big SOA-Related Push
September 14, 2005
Web Services Journal
http://webservices.sys-con.com/read/129795.htm

Dave

David A. Chappell

AddThis Social Bookmark Button

Related link: http://tv.sys-con.com/read/77492.htm

Earlier this year I was on my way back from grabbing a cup of coffee when Jeremeny Geelan of Web Services Journal pulled me aside for a video interview, which recently got published. I guess I was thinking about SOA and ESB at the time because that’s what most of the discussion is about.
Dave

Kendall Clark

AddThis Social Bookmark Button

Related link: http://www.alphasmart.com/products/neo.html

Part of being a savvy technologist includes staying on the perpetual
hardware upgrade habitrail — or so people too often assume.

Some of us, however, are done with hardware. I put myself through
college, back in the day when Intel’ 80386 CPU was a big deal, by
building computers for aeronautical engineering students at the
University of Texas, where I wasn’t a student.

I am so over hardware, and I have been for more than a
decade. I take pride in making my living from technology and doing so
with very old, even decrepit hardware. My main server for five years
has been an IBM Thinkpad I found in a dumpster. My only extravagance
was to max out its RAM at 512 MB. My everyday system is a nice 15″
Powerbook supplied by UMD. While OSX is nice, it’s not exactly Linux
on an Opteron.

I’m bored by hardware and a bit cheap about it, too.

All of which makes the fact that I’ve fallen in love with a new box
(and a new kind of box) all the more curious. I’m talking
about my new Neo
by AlphaSmart
, upon which I’m typing this weblog entry. Before
saying more, thanks to Paul Ford for
telling me about the Neo. Paul rocks.

Oddly enough, the Neo is basically a computer for school
children. It’s stunningly stupid and, well, primitive. I’m enjoying it
so much, and being so productive with it, that it’s got me thinking
about what I’ll call Primtivie Computing and
Power User Devolution.

The Neo is interesting not because of what it does or what features
it has, but what it can’t do and the features it’s missing. It’s all
about one thing and one thing only: writing. I’m most comfortable
turning any task into a writing task (when all you have is a
hammer…), which means I’m super comfortable with a primitive device
that’s really only good for writing.

Specs? I don’t even know what kind of CPU this thing has, and I
couldn’t care less. The OS is some homegrown thing, apparently,I think the OS is some variant of PalmOS, but I
don’t really know. Or care — cultivating ignorance about irrelevant details is part of the ethic here, I think. The word processor, the only app it has, is brain
dead. Which means no distractions; it gets out of my way as well as
venerable Word Perfect 5.1 for DOS used to — a writerly experience
I’ve only come close to replicating with Emacs.

The keyboard action is passable; not great, but no impediment. The
screen is a measly six lines, and I’m finding it perfectly
acceptable. Especially when it meaans that battery life — powered by
3 AA batts — is a remarkable 700 hours. Yes, 700
hours! The damn thing weighs all of 2 lbs, though it feels
lighter. It’s the ultimate road warrior’s tool, at least if you think
of a road warrior as a writer.

My joy at the sheer utlity of the Neo — even at the rather
inflated price of $250 — leads me to wonder whether Primitive
Computing is a trend of larger significance. Maybe the sign of a real
power user is someone who’s happy to get by with less, rather than
ever insisting on more. Using the Neo is of a piece with the href="http://merlin.blogs.com/43folders/2004/09/introducing_the.html">Hipster
PDA and with Danny O’Brien’s ethnographic observations about the
ubiquity among the power set of text files as a first class
organizational tool.

The Neo is the closest I’m going to get to the kind of intentional
simplicity that could lead to something like href="http://en.wikipedia.org/wiki/Henry_David_Thoreau">Walden on the
job. (A chimerical goal, to be sure, since Walden was mostly about
not working for The Man, rather than doing so sanely. Oh
well!)

I recently wrote, as part of a proposal to build some Semantic Web
infrastructure for a large US government agency (not military or the
spies, thank the stars!), that the three crucial characteristics of
the system in question were propinquity (how close is
the system to where user’s actually live?), ubiquity
(how universally available is the system?), and
expressivity (is the system powerful enough to let
users do what they need and want to do?).

Now that I think about it, that’s a pretty good description of
Primitive Computing as I understand it and of the AlphaSmart Neo: it
can be ready to hand a all times, in just about any ordinary
situation, and it has just enough power and features to do what I care
about most.

As the man used to say back in the day: Highly
Recommended
.

You ready to devolve?

Kendall Clark

AddThis Social Bookmark Button

I didn’t expect anyone to pay much attention to my href="http://www.oreillynet.com/pub/wlg/7823">modest efforts to
mashup “Web 2.0″ and “Semantic Web”. I guess I didn’t expect much
feedback because I’ve always thought of the Semantic Web and Web 2.0
as somehow connected or related.

And I’ve always thought that because I know what some people don’t
know: there isn’t one Semantic Web, there are two of them.

There is the scruffy Semantic Web, and there is the
neat Semantic Web — these terms come from two different
tendencies (we won’t call them factions just yet) in the Artificial
Intelligence part of computer science, the Scruffies and the Neats.

As I said last
time
, the Semantic Web can be thought of as an effort to
reimagine, and to rebuild, part of AI, the part called Knowledge
Representation, as having the Web as its proper environment. In other
words, the Semantic Web is webized knowledge representation or
knowledge representation added to the Web.

My point in the last weblog entry was that it may best be added to
the thing that’s starting to be called Web 2.0. And, yes, Virginia,
“Web 2.0″ is a marketing term. So what? Language itself is a marketing
term; it’s all just scribbles and noises in patterns intended to help
someone get closer to achieving one of their projects.

The funny thing about, say, href="http://www.shirky.com/writings/semantic_syllogism.html">Clay
Shirky’s anti-SemWeb schtick is that it more or less recapitulates
very old debates in AI itself, all while adopting a very mannered,
very anti-AI pose.

The problem with his schtick, if I may be so bold, is that either
he doesn’t really understand AI or KR very well or his attempts to
popularize it are very poor. All of that talk about syllogisms and
ontologies is really just rubbish. It’s roughly equivalent to someone
writing a very popular article criticizing the contemporary practice
of physics as being all about the href="http://en.wikipedia.org/wiki/Phlogiston_theory">phlogiston. The
point isn’t that Shirky is wrong to claim that modern logic (since,
say, Frege) is about “syllogisms”, but that he’s laughably,
embarassingly wrong. OWL ontologies have about as much to do with
syllogistic logic as href="http://en.wikipedia.org/wiki/M-theory_(simplified)">Edward Witten’s
M-theory has to do with phlogiston or the ether.

Setting Shirky aside, all the talk amongst href="http://blogs.zdnet.com/web2explorer/index.php?p=13">Web 2.0
advocates like Robert McManus about getting by with “just enough”
semantics and “good enough” standards is exactly the kind of debate
that Scruffies and Neats have been having for ages. As my friend and colleague Bijan Parsia likes to say, the Scruffies just
are scruffy precisely because they think less semantics more widely
realized will work; the Neats are neat precisely because they think
you really have to get the semantics and the formalisms and the logics
just right before getting a lot of benefit.

See, Web 2.0 and Semantic Web folks really aren’t that far
apart.

Who’s right, the Scruffies or the Neats? I don’t know who’s right, and, more,
I don’t care. Both are doing their thing, and as with
all evolutionary struggles, reality will be the harshest and best
judge. Because of my background in the kind of philosophy that always
made my brain hum the happiest (Rortyean pragmatism), I’m happiest
trying to subvert such distinctions rather than trying to inhabit them. Why choose till or unless you absolutely have to?

But the Scruffy Semantic Web and Web 2.0 are a good fit, not only
because their advocates care about the same things, but also because
their Good Enough intuitions are congruent.

For what it’s worth, the key Semantic Web technologies, RDF and
OWL, show signs of the struggle between Scruffies and Neats. (I’ll
explain some of the details about that claim in the comments if
anyone’s really interested.) I also think Tim Berners-Lee, who’s
original vision for the Web just was the Semantic Web, is a
scruffy. Which makes him a natural ally, at least in my opinion, of
Web 2.0 advocates. Of course Sir Tim speaks for himself!

Some people call Web 2.0 the Web as a platform. I don’t think
that’s correct; or, at least, if it is, it’s not very interesting. The
plain old Web is a platform — that’s the point of REST.

Web 2.0 as a marketing term is a shorthand term for a set of sites
and a set of informal policies and attitudes that have coherent,
stable properties. I think every Web 2.0 site is both a web app and a
web service, and they’re almost all lightweight REST web services
(instead of heavyweight SOA services). They all use semistructured
data (XML, RDF, JSON, YAML, etc.) to exchange representations of first
class resources. They’re all intended, and achieve to varying degrees
of success, to be used in a kind of mashup, mixup fashion. Which is to
say that the services are meant to be composable in some sense. (But
not like Semantic Web Services, where the composability is done by
computer programs using AI planning techniques and very complex OWL
ontologies, rather than by humans, by hand.) And every Web 2.0 site
has some kind of explicit or implicit commitment to letting you retain
control of your data.

I claim that every one of those properties is also something that
SemWeb folks have been working toward for as long as there have been
SemWeb folks. (Want to control yr data? The raison d’être
of RDF is to let anyone say anything about anything. Now
that’s control!) That doesn’t make SemWeb better or worse or
more important than Web 2.0. It makes them congruent. And congruence
is a precursor of convergence. Woohoo!

Finally, I believe every Web 2.0 site (or, as I’m going to start
calling them “apps/services”) exists firmly within the Scruffy side of
the camp: tags, for example, are all about the hunch (or is it a
fact?) that a little semantics (a very little, actually) being widely
distributed goes a long way.

So, thanks for all the feedback and enlightenment, but I haven’t
heard anything yet to put me off my convergence oats: Web 2.0 and the
Semantic Web are closer than you think, and SPARQL may very well be a
linchpin.

Don’t let me stop you…

M. David Peterson

AddThis Social Bookmark Button

Related link: http://www.aspectxml.org

[UPDATE : [2005.09.30 08:07:00AM MST]

Russ is busy trying to finish three other *MAJOR* projects at the moment, including his Master’s Thesis for his MSc in Computer Science from Oxford University. As soon as he is able to break away for a few moments he plans to make his follow-up post to this overview.

In the mean time… At the moment I am working on updating the XSLT Test Suite I wrote a while back to introduce the concept of using reusable pre-defined XML-based ‘templates’ that can be called by its ‘id’ attribute and as such ‘woven’ into the result output of the ‘calling’ XML. While this post from last January is more focused on using this general idea with an idea that Dimitre Novatchev posted to XSL-List, it should give you a good feel for how things work. I plan to extend things a bit more and prep the code-base to be integrated into AspectXML. When I’m done with that I will make a post explaining how things work. I’m not sure if that will happen today (Sept. 30th, 2005) but at the moment thats the plan.]

[Original Post]

Wow! Its been a combination of both fun and crazy all rolled into one over the last week and a half, the result of which is still being baked, but is getting closer and closer by the minute for the initial release. However what I am refering has nothing to do with the content of this post, that of Assets, Atom Feeds, and AspectXML. Before I get ousted from the good graces of the O’Reilly development community (a membership in which I greatly cherish!) I want to quickly post the updates I made a week or so back to the AspectXML source files.

The plan for this post is to cover the following-topics in short explanation, relying on the idea that if the code is written and documented well it should be able to speak for itself without need for extended explanation.

Still, Aspect-Oriented Programming in general can have a difficult learning curve in and of itself if things are not handled carefully from the beginning. To ensure that this doesn’t become a factor I have spoken with Russ Miles, my good friend and partner in several OSS, Open Standard development efforts who also, as many of you know, just so happens to be the original visionary behind AspectXML.

Over the last year and half since the two of put our heads together, developed, and released the first implementation of the AspectXML concept Russ has continued in his role as project motivator/leader promoting the AOP development paradigm in general to pretty much anyone who would listen, even go as far as jumping on a plane and flying over that great pond that divides the US from the UK, to plant his foot in my general corner of the world to help promote these ideas to the development staff at Amazon.com. In fact, that reminds me… I have pics of Russ, Kurt (Cagle), and myself that I completely forgot to post. I need to take care of that pronto! I’ll let you know when I do.

Regarding the approach to first understand AspectXML before moving forward with the integration of the Assets stored in Atom feeds

Keeping things on focus, while AOP in general sits at the core of everything that lives in the hacker side of Russ Miles, the AspectXML project is without a doubt his AOP baby. In moving forward I want to ensure that the proper person is placed into the proper mindset within the XML development community when thinking about AOP and AspectXML in general. As such, Russ and I have started to coordinate our efforts in developing the content for the concept I presented for the first time nearly a month ago, this being the third piece in this series entitled "Assets, Atom Feeds, and AspectXML : The Triple Threat of Web Development?" This is a very new, very exciting, and potentially far-reaching technology in the area of XML-based web development which contains the potential to gain extensive amounts of XML developer mind share. But at the same time there is risk in losing that mindshare just as fast if these concepts are presented before the well-known hurdles that exist between an OOP-minded developer and the AOP development paradigm are given proper focus and attention, extending from this new area of understanding once it has been established and then reached.

At present time Russ is working on an extension to this post, but with a more more AOP-centric focus to ensure that this core foundation of Aspect-Oriented Programming is given proper airtime. It is my understanding that he plans to have this ready and posted in the next 24-48 hours. Once he has made this post and feels confident that we can move forward without alienating the entire XML development community in doing so we plan to focus on the extended pieces of this series, that of bringing the ideas of asset management together with your standard, run of the mill hyperlink, blog entry, photograph, etc… and using the Atom publication format to both contain as well as list these resources in a collection of common threads that exists between these items whether that be person, place, or thing that these items represent.

With all of this said, I also don’t want to step in the way of progress

Because AspectXML has been around now for well over a year, many of you may have at least some experience with looking at the general idea presented and as such have a decent understanding of how things work. As such, withou taking things beyond the basics, focusing completely on AspectXML from a general technology standpoint I plan to quickly showcase the basic foundation of AspectXML to then leave you with full access to the source files to take a look at if you feel ready to do so, or simply hold off for now if you don’t. This will act as a good study source to aid in understanding the basics as well as laying the groundwork for how we are going to use the principals of Aspect-Oriented Programming in combination with your the standard Atom 1.0 data feed to act as a storage and retrieval mechanism in which the content can be woven with other related content and the output "re-written" to something more appropriate to the current platform and technolgy in use.

First, the code file names and a definition of their general purpose:

There are three(3) total files that are a part of the basic weaving AspectXML package. They are as follows:

  • instance.xml : The file we use to represent any given instance in which a weaving process is invoked.
  • aspectDefinition.xml : In essence this is the "language" in which we use to tell the weaving engine what to do when it encounters an element with a specific element or attribute name.
  • aspectXML_basic_weave.xslt : The transformation file in which does all of the weaving magic based on the combination of instance.xml and aspectDefinition.xml.

NOTE: While the actual weaving processing can seem somewhat complicated, if you always keep in mind that the instance file is driving the show, using the names of the elements and attributes as a way of telling the weaving engine what it should look for within the aspectDefinition.xml file to match against, things will be easier to keep in order during the weaving process. Of course once a match has been made control is temporarily handed over to the aspectDefinition.xml in which tells the weaving engine what elements and attributes need be put in place of the current instance being evaluated, and what the values of these elements and attributes should be. But once this process has completed the instance file is given back control to continue in its recursive ways until each and every instance element has been evaluated and processed, resulting in the final output of the overall weaving process.

The AspectXML "Language"

So that we can gain a basic understanding of the general language elements contained withing AspectXML the following is a list of the keywords that we will be using to gain total control of the outputm, no matter what we might want that to be. Each keyword contains a general definition which should be helpful in understanding things as we move through the explanation of the weaving process.

Keywords that apply to elements only:

  • before : element with the specified name and value should be placed before the current instance element in the output.
  • after : element with the specified name and value should be placed after the current instance element in the output.

Keyword that can be applied to both elements and attributes:

  • around : In quite literal terms the around keyword tells the weaving engine to swallow the current element or attribute whole and replace it with the specified element or attribute with the specified value.

Keyword that can only be applied to attributes:

  • flow : the specified attribute name and value should be placed within the flow of the attribute set of the current instance element. Because there is no such thing as attribute "order" (unless of course your speaking in terms of conanical XML, using a specified algorithm as a way of comparing two XML files for differences. But even this is application specific and has nothing to do with XML from a parsing standpoint. As such, theres no such thing as attribute order as far as anything we’re concerned with)

The code

Before we get into extending our understanding into why there is no ‘before‘ and ‘after‘ keywords for attributes, and the ‘flow‘ keyword for elements, lets first look at the code from the above mentioned files, run this code through various tests, then look at the result of these tests to see if this alone might bring things into light in a way that can be seen directly through code, rather than a textual explanation in and of itself. Once we reach that point I plan to leave things as is, allowing time for Russ to develop his follow-up piece, to then extend, as mentioned above, into the new areas that this series is intended to present.

[NOTE : I have posted the updated files to http://www.aspectxml.org/files. This directory is browseable.]

Again, the indivdual files to take note of are:

File One: instance.xml

File Two: aspectDefinition.xml

File Three: aspectXML_basic_weave.xslt

For the purpose of showcasing the result of the above keywords "in action" I have created six separate aspect definition files that, when applied to our sample instance file, will enable us to look at a complete base of the results each keyword will have on the element and/or attribute that has been specified as its "processing target". With these results in place it is my hope that you will make the immediate connection to the effect this could possibly have in regards to the overall subject matter of this series, causing a similar "heh! I get it" that is common in the XSLT world when things finally come together and ‘click’, which is a word often used to describe the moment of sudden and overhwhelming realization at just how simple ’simple’ truly is. When this happens (and I’m pretty sure that for most of you reading this it will happen almost immediattely) my hope it that you will then recognize the same potential that both Russ, myself as well as several other members of our collective development project communities have seen and as such are extremely excited about the possibilities and potential that this subject matter brings forth.

For now I will simply list the:

  1. original XML instance file
  2. the element and attribute names and values for each of the 6 test cases
  3. the resulting woven instance file directly following each test case. 

 
This format should allow for a clean, simple, and direct comparison of each of these three states, showcasing quite visibly the difference between the instance and the result.   With the test case values sitting between the original and and the output  it should allows for a clean reference point to compare what the keyword and associated value(s) used to instantiate the various pieces of each instruction at each recursive pass through the associated portion fo the aspectDefintion file which, again, is representative of the keyword and associated values contained in the linked aspectDefinition-*.xml file for each portion of the test:

In quick reference the test values are as follows: 

Test 1: <elementAdvice name="current" type="before"/>
<attributeAdvice name="current" type="flow"/>

Test 2: <elementAdvice name="current" type="before"/>
<attributeAdvice name="current" type="around"/>

Test 3: <elementAdvice name="current" type="around"/>
<attributeAdvice name="current" type="flow"/>

Test 4: <elementAdvice name="current" type="around"/>
<attributeAdvice name="current" type="around"/>

Test 5: <elementAdvice name="current" type="after"/>
<attributeAdvice name="current" type="flow"/>

Test 6: <elementAdvice name="current" type="after"/>
<attributeAdvice name="current" type="around"/>

 


The aspectDefinition.xml file format that the above elements and attributes apply to is as follows:

This particular file the from test five showcased below, but the general structure and layout is exactly the same for all associated aspectDefintion.xml files


<?xml version="1.0" encoding="UTF-8"?>
<!-- filename: aspectDefinition-5.xml -->
<aspects>
	<aspect name="HelloWorld">
		<pointcut name="namedElementPointcut">
			<unaryPointcutExpr operator="" pattern="Message"/>
		</pointcut>
		<pointcut name="namedAttributePointcut">
			<unaryPointcutExpr operator="" pattern="Message/@format"/>
		</pointcut>
		<pointcut name="namedAttributePointcut">
			<unaryPointcutExpr operator="" pattern="Message/@type"/>
		</pointcut>
		<adviceDefinition>
			<elementAdvice name="current" type="after">
				<pointcut>
					<namedPointcutExpr reference="namedElementPointcut"/>
				</pointcut>
				<adviceContents>
					<WovenTag> Hello World </WovenTag>
				</adviceContents>
			</elementAdvice>
		</adviceDefinition>
		<adviceDefinition>
			<attributeAdvice name="current" type="flow">
				<pointcut>
					<namedPointcutExpr reference="namedAttributePointcut"/>
				</pointcut>
				<attribute type="xs:string">
					<name>wovenAttribute</name>
					<value>Some Woven Value</value>
				</attribute>
			</attributeAdvice>
		</adviceDefinition>
	</aspect>
</aspects>


The test results, layed out as explain above are as follows:

 

Test 1


instance.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
	<Greeting>
		<Message format="text" type="urgent">AspectXML is getting there!</Message>
		<Message format="text" type="critical">Getting Closer!</Message>
	</Greeting>
</root>

Test 1 keywords/values:

<elementAdvice name="current" type="before"/>
<attributeAdvice name="current" type="flow"/>

result-file: wovenInstance-1.xml

   	 	 	 	 	 	
<?xml version="1.0" encoding="UTF-8"?>
<Greeting>
    <WovenTag> Hello World </WovenTag>
    <Message format="text" type="urgent" wovenAttribute="Some Woven Value"/>
    <WovenTag> Hello World </WovenTag>
    <Message wovenAttribute="Some Woven Value" format="text" type="critical"/>
</Greeting>


instance.xml


<?xml version="1.0" encoding="iso-8859-1"?>
<root>
	<Greeting>
		<Message format="text" type="urgent">AspectXML is getting there!</Message>
		<Message format="text" type="critical">Getting Closer!</Message>
	</Greeting>
</root>

Test 2 keywords/values:

<elementAdvice name="current" type="before"/>
<attributeAdvice name="current" type="around"/>

result-file: wovenInstance-2.xml


<?xml version="1.0" encoding="UTF-8"?>
<Greeting>
   <WovenTag> Hello World </WovenTag>
   <Message wovenAttribute="Some Woven Value"/>
   <WovenTag> Hello World </WovenTag>
   <Message wovenAttribute="Some Woven Value"/>
</Greeting>


instance.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
	<Greeting>
		<Message format="text" type="urgent">AspectXML is getting there!</Message>
		<Message format="text" type="critical">Getting Closer!</Message>
	</Greeting>
</root>

Test 3 keywords/values:

<elementAdvice name="current" type="around"/>
<attributeAdvice name="current" type="flow"/>

result-file: wovenInstance-3.xml


<?xml version="1.0" encoding="UTF-8"?>
<Greeting>
   <WovenTag format="text" type="urgent" wovenAttribute="Some Woven Value"> Hello World </WovenTag>
   <WovenTag wovenAttribute="Some Woven Value" format="text" type="critical"> Hello World </WovenTag>
</Greeting>


instance.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
	<Greeting>
		<Message format="text" type="urgent">AspectXML is getting there!</Message>
		<Message format="text" type="critical">Getting Closer!</Message>
	</Greeting>
</root>

Test 4 keywords/values:

<elementAdvice name="current" type="around"/>
<attributeAdvice name="current" type="around"/>

result-file: wovenInstance-4.xml

   	 	 	 	 	 	
<?xml version="1.0" encoding="UTF-8"?>
<Greeting>
   <WovenTag wovenAttribute="Some Woven Value"> Hello World </WovenTag>
   <WovenTag wovenAttribute="Some Woven Value"> Hello World </WovenTag>
</Greeting>


instance.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
	<Greeting>
		<Message format="text" type="urgent">AspectXML is getting there!</Message>
		<Message format="text" type="critical">Getting Closer!</Message>
	</Greeting>
</root>

Test 5 keywords/values:

<elementAdvice name="current" type="after"/>
<attributeAdvice name="current" type="flow"/>

result-file: wovenInstance-5.xml

   	 	 	 	 	 	
<Greeting>
    <Message format="text" type="urgent" wovenAttribute="Some Woven Value"/>
    <WovenTag> Hello World </WovenTag>
    <Message wovenAttribute="Some Woven Value" format="text" type="critical"/>
    <WovenTag> Hello World </WovenTag>
</Greeting>


instance.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
	<Greeting>
		<Message format="text" type="urgent">AspectXML is getting there!</Message>
		<Message format="text" type="critical">Getting Closer!</Message>
	</Greeting>
</root>

Test 6 keywords/values:

<elementAdvice name="current" type="after"/>
<attributeAdvice name="current" type="around"/>

result-file: wovenInstance-6.xml


<?xml version="1.0" encoding="UTF-8"?>
<Greeting>
   <Message wovenAttribute="Some Woven Value"/>
   <WovenTag> Hello World </WovenTag>
   <Message wovenAttribute="Some Woven Value"/>
   <WovenTag> Hello World </WovenTag>
</Greeting>


And there we have it…

As mentioned, either sometime today or tomorrow Russ Miles will be following things up such that he can bring into this conversation the true background and expertise of a — well, AOP expert. I then plan to coordinate with him what should take place next based on the response that he receives and the impression he is left with after analyzing the thoughts and questions brought forth by the community at large. While I encourage you to leave any comments or questions at the end of this post, unless they are specific to the XSLT weaving process specifically I plan to leave these questions for Russ, someone who has gobs and gobs of experience, training, and understanding in all that is Aspect-Oriented Programming and how to present the AOP programming methodologies in a way that doesn’t sent the XML community “running for the OOP Borders” in which all of us, myself inclusive, tend to have fairly strong backrounds in.

So until next time (which I hope will be sometime soon , all based on the evaluation I receive from Russ in regards to where we should take things next), Russ, I’ll pass things on on over to you :)

Enjoy your XML-based Development Day Everyone! :)

So where do we go from here? Do things make complete sense and you are ready to start weaving some magic out of Atom feeds? Or should we slow things down a bit and focuse more on the concepts of AOP, how they related to AspectXML, the then further extend the discussion of AspectXML just what is capable and why?

David A. Chappell

AddThis Social Bookmark Button

Related link: http://www.talklikeapirate.com/piratehome.html

Monday, September 19th. In addition to that being my birthday, it also happens to be “Talk Like a Pirate Day”. There’s a web site and everything! Arrrr!!!!!!!

Perhaps all those years I spent celebrating with Captain Morgan and Coke is what made these pirates decide to put their national holiday on my birthday :)

I have long since given up my propensity for Captain Morgan, but perhaps now I can still have a good reason to act like a pirate one day a year.
Dave

Dan Zambonini

AddThis Social Bookmark Button

Although regular readers of O’Reilly Weblogs probably already grasp the difference between XML and RDF, I still occassionally talk to a developer who is unsure of the difference.

I recently co-presented a discussion at the British Computer Society on the Semantic Web and Social Technologies. This is how I described the difference between the technologies.

I’ve created a new reality TV show called The XML Factor, set in the future (I’m not sure if you get The X-Factor in the U.S., but it’s just like Pop Idol). In this show, Simon Cowell (whose body has been replaced with robotics, for some reason - probably just because it’s the future) judges mark-up languages and technologies on their relative merits.

Simon Cowell and XML

With XML, Simon is impressed by his technical ability - very flexible, can perform any song - but just isn’t feeling any emotion. This is because XML is basically just a data format. A pretty good one, but there is no built-in meaning to an XML file; unless your computer has prior knowledge of a particular type of XML (a particular schema, like XHTML or SVG), it won’t be able to do much with it.

Simon Cowell and RDF

With RDF, it’s a different kettle of fish. Simon’s really feeling it. RDF may not have the technical flexibility of XML, but she’s got real emotion in her voice. And that’s because RDF is all about conveying semantics (OK, maybe that’s a bit of a twist of the truth, it conveys statements about things). RDF isn’t a data format, it’s… a model (hence the picture above, and the following particularly bad pun).

Are you sure you’re ready for this pun? OK… Well:

  • like all good models,
  • RDF is very simple,
  • and hence is easy to take advantage of.

See? Told you it was bad… Anyway, in conclusion, RDF is not a data format, but a simple model (which goes a bit like: something has a something of something). Which means that whenever a computer gets hold of an RDF file, no matter how complex, or what it’s about, it can always break it down to a set of these statements - i.e. information that follows this model.

Any more bad XML or RDF puns out there?

Niel M. Bornstein

AddThis Social Bookmark Button

We’ve