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 been planning to finish off an area in our basement for an office and a separate storage room for some time now. In the last few weeks, the time has come to begin the actual work.

It’s nice to have a handy father-in-law who lives only a few miles away; he was able to begin the construction while I was away on a project. He did all of the framing, with the help of my wife and mother-in-law, and, when I’ve been around, me.

But when it came to the electrical work, we decided to call in a professional.

After getting some quotes from electricians via servicemagic.com, we punted. The quotes were all too high and we found a retired electrician who works through a handyman service. He gave us a great rate, and even suggested some wise changes to our plans.

After he had come and gone, I realized that I needed to move one existing outlet in order to make room for some drywall. All I had to do was remove and unwire the old box, nail in a two-foot piece of 2×4, attach a new box, and wire it up.

This was not as easy as it sounds. The removal was easy, sure, and putting in a new box was pretty simple. But the existing wires were old, and there was not much slack.

It took me more than an hour to attach three pairs of wire to a single outlet.

I don’t know how these guys do it, but cheers to the electricians.

Otherwise, the construction is going fine. I’ve set up a closet for my DSL modem, wireless router, and VoIP modem, and run a few category 5e cables as well — everything’s not wireless yet, so it’s nice to have some good old-fashioned wires here and there.

I found a good resource on telephone wiring at Phone-man’s Home Phone Wiring Advice Page, so I hope to get the appropriate phone lines installed tonight.

Then the sheetrock work can commence.

Done any home wiring lately?

David A. Chappell

AddThis Social Bookmark Button

The recent surgery I had in order to reattach my pectoral muscle tendon was a success! After opening me up and seeing the extent of the damage, the surgeon determined it was the best case scenario which meant that the tendon had been detached at the bone, and there was still plenty of good healthy tendon attached to the muscle to work with.

I now have a couple of titanium anchor screws in my humerus bone, to which the tendon is attached with sutures. A good description of the procedure can be found in Scenario #1 of this article that I found on the subject.

I have to keep my arm in a sling for the next 4 - 6 weeks while the tendon grows back into the bone. Until then, any kind of jerky movement in the wrong direction can cause the sutures to tear out. The arm sling has an extra strap on it that wraps around my waist in order to keep the arm closely attached to my body.

After tendon reattaches itself, I’ll still have plenty of physical therapy for a few months but I should be able to start rebuilding the muscle. It can take up to a year to get back to close to 100%. I hope to be there in 6 months :)

The downside of this is that I am going to have to pre-empt my 4 weeks of business travel plans I was supposed to start on today. The surgeon explained that even doing any heavy lifting with my good arm which causes my pectoral muscle to flex, such as lifting luggage, could also send a signal to my damaged pectoral muscle to flex as well, which could tear out the sutures.

Dave

Kendall Clark

AddThis Social Bookmark Button

Related link: http://www.w3.org/TR/2005/WD-rdf-sparql-protocol-20050914/

The Semantic Web. It’s an odd duck, and not only from the publishing point of view. Academic computer science is starting to take the Semantic Web (which means, for them, webizing the Knowledge Representation part of AI) seriously. There are conferences, journals, books. Government-funded SW research, especially in the EU (but also in the US and Japan), is also on the rise.

But in the geeky technical world, everything is about Web 2.0, not the Semantic Web. Which is fine, since there is considerable overlap between the Web, Web 2.0, and the Semantic Web. Lots of overlap, actually, and some pretty similar goals; the differences are mostly about use cases, emphasis, and some technical approach.

Anyway, so SPARQL. RDF is pretty foundational to the Semantic Web, and it’s got a data model, a formal semantics, and a concrete serialization (in XML). What it didn’t have till lately was a standard query language. Imagine relational algebra and RDBMSes without SQL. Pretty hard to imagine. So the SemWeb needed a SQL. It stood up the Data Access Working Group, which has been working for about 20 months and has come up with SPARQL — an RDF query language and protocol.

Most Web 2.0 applications and services involve a REST protocol or interface. In other words, you can interact with the app or service by means of HTTP and manipulating resource representations, many of which are in XML, but others may be in JSON, YAML, RDF, etc.

I think that’s the way to build such apps/services, far better than an explicitly RPC-style interface. However, there is a bit of a problem. While using REST offers a standard set of operations (GET, PUT, POST, DELETE), it doesn’t offer anything like a standard data manipulation language. In others words, there is no standard way to execute an arbitrary query against a Web 2.0 app or service’s dataset and get back a representation of that resource or those resources.

And, more to the point, the service or app provider has to explicitly support just those data manipulation primitives or operations which it thinks are most useful.

That’s great, but it’s limiting.

Since RDF is such a useful data representation formalism, and it now has an equally useful query language, more and more Web 2.0 sites can push more and more smarts and functionality into the place it belongs, namely, the data. REST conceptualizes (and HTTP standardizes) public interfaces; but neither does anything to standardize how one interacts, ad hoc’edly and without central control, with arbitrary slices of someone else’s data.

But SPARQL gives you precisely that, even when the data on the other end isn’t really RDF, since all it has to do is support SPARQL query and map that into SQL or relational algebra or AtomStore or whatever.

Okay, so SPARQL gives the SW and Web 2.0 a common data manipulation language in the form of expressive query against the RDF data model. Web 2.0 needs something exactly like that. (Imagine the horror of trying to get all of these totally uncoordinated Web 2.0 services and apps to support the same SQL queries? That’s completely impossible. It will never happen. It may be hard to get them all to map SPARQL into how they really store data. It may never happen, in fact. But it could happen, and it will long before everyone uses the same RDBS schema.)

What else does it need? It needs a way for those queries and their results to be schlepped back and forth between apps/services and other computer agents that want to consume those apps/services’s data. In other words, the SW and Web 2.0 need a data access protocol, which is the other thing SPARQL gives the world. Using WSDL 2.0, SPARQL Protocol for RDF describes a very simple web service with one operation, query. Available with both HTTP and SOAP bindings, this operation is the way you send SPARQL queries to other sites and the way you get back the results. The HTTP bindings are REST-friendly (though perhaps not maximally so, or so says REST advocate Mark Baker. Perhaps more about that later…) and a simple SPARQL protocol client takes about 10 or 15 lines of Python code.

So what, really, can SPARQL do for Web 2.0? Imagine having one query language, and one client, which lets you arbitrarily slice the data of Flickr, delicious, Google, and yr three other favorite Web 2.0 sites, all FOAF files, all of the RSS 1.0 feeds (and, eventually, I suspect, all Atom 1.0 feeds), plus MusicBrainz, etc.

Damn, that’s not only a lot of data, but it’s a lot of the data people actually care about. That’s powerful stuff.

How powerful? Well, imagine being able to ask Flickr whether there is a picture that matches some arbitrary set of constraints (say: size, title, date, and tag); if so, then asking delicious whether it has any URLs with the same tag and some other tag yr interested in; finally, turning the results of those two distributed queries (against totally uncoordinated datasets) into an RSS 1.0 feed. And let’s say you could do that with two if-statements in Python and three SPARQL queries.

Pretty damn cool.

What needs to be done? Well, Web 2.0 fans, builders, and advocates need more love from SW fans, builders, and advocates. These two worlds really belong together. Next, Web 2.0 apps/services need to export (or make it easier for others to wrap) an RDF interface around their data. Then we need — as Leigh Dodds mentioned to me recently — a good SPARQL client implementation in Javascript, along with some conventions for building and moving queries around in an AJAX-friendly way. SPARQL over AJAX just by itself is so cool it gives me a headache! Last, SPARQL implementations have to spread and mature, but they’re already off to a very good start. There are SPARQL tools in Java, Python, and other everyday languages.

Frankly, I’m starting to catch the scent of one of those big convergence things just possibly starting to happen. It smells like money!

Dan Zambonini

AddThis Social Bookmark Button

During the last 6 months, there’s been much speculation over the controller for Nintendo’s next
games machine, the Revolution. All will be revealed soon, but until then, we’re going
to have to guess. And given the stance Nintendo are currently taking in the gaming scene - that
games have become too complex, and that the entire family should be easily involved - I’ve
knocked up what I think the controller is probably going to look like:

height="258" border="0" alt="Possible design for Nintendo Revolution controller - a button" />

This would allow all ages to easily get to grips with the new wave of gaming. The simple, elegant
curves of the controller will immerse you in the next-generation games, including button bashing sports
simulations and some of the exciting launch titles, Morse Code Mania and George’s Desk:
the Road to Annihilation
(which takes full advantage of the built-in rumble pack).

Kendall Clark

AddThis Social Bookmark Button

Related link: http://ragi.sf.net/

For me there is a technology continuum that runs from home renovation stuff (drywall, plumbing, HVAC, electrical, etc.) to home geekery hacking. My girlfriend and I have spent a lot of time and $$ during the past 15 months having a home in Washington, DC, renovated. Now that we’re pretty much done, I’m wondering how much geekery I’m going to add?

The house dates from 1895, had been badly renovated and expanded somewhere after WWII, and we’ve now spiffed it up throughout. New HVAC, expanded livable space about 25%, new windows throughout, nifty skylight, all-new kitchen (Bosch appliances rock!), and so on. It’s taken a contractor and the two of us working really hard to get it to the point where we really want to live in it. Right now.

But, as a hardcore geek, I’m wondering whether that crawl space (very dry, new concrete pad) under the kitchen (accessible through the laundry room) would make a good server room? And do I want to geek into Asterisk and build a PBX/VOIP system for the house? Asterisk is starting to get some interesting stuff in its space, including RAGI, a Rails gateway to Asterisk. RAGI alone is like the 5th thing that makes me think I should sincerely add Ruby to Python as my two default languages.

Anyone out there done serious Asterisk work for yr home living space? I wonder if having a PBX when people call would be useful or off-putting (after all, a home is not an office!). How is Asterisk to work with?

The house isn’t huge, so I’m not especially interested in X10 stuff. But I wonder about a server room, given that I’m a geek, have lots of boxes, and I work from home. And I’m also wondering about a home PBX using Asterisk.

Anyone been down this road? Is it worth the effort?

David A. Chappell

AddThis Social Bookmark Button

I recently fell victim to a torn pectoral muscle tendon while water skiing. I’m going in for surgery on Thursday of this week to try and get it reattached. More on that below, but first, here is how it happened….

For most of my life, one of my favorite activities has been water skiing. I grew up on Webster Lake, which is otherwise known as Lake Chargoggagoggmanchauggagoggchaubunagungamaugg. I still keep a boat there at my parents house, which is only 45 minutes from where I live, and I try to get there as much as I can during the summer to ski.

Skiing on a slalom ski is not just about going around a set of buoys like you see in the competitions on TV. Freestyle skiing around an imaginary set of buoys that are at a distance of your choosing can also be an extremely rewarding experience. The act of “cutting” back and forth across the wake requires combination of strength, skill, grace, and style that can give you an extreme adrenaline rush. Each time out you are looking to achieve your personal best, whether its in “kicking up a spray” that is the biggest and best you have ever done, or in executing a perfect turn that leads into laying down as close to the water as possible with all of your might pulling against the rope as you cut across for another turn. When the best run of the summer happens, you know it, and its so fulfilling that you don’t care that there is no one else around to see it.

image

The picture above was taken of me recently in early August of 2005. That morning I achieved that personal best slalom run of the whole summer. This actual shot is not the best in terms of kicking up a spray, but this turn is just about to lead into a kickass cut across the wake. When your doing this, the boat is boat is traveling at 30mph, and you’re cutting across diagonally/horizontally against that force, which means you’re probably going about 50mph. This whips you out further to the other side, and the idea is to dig in with your back foot as hard as you can and execute a quick and powerful turn before you lose too much forward momentum, so that your return to the other side of the wake picks up even more speed. If you really get it right, you can execute that turn with only one hand holding onto the rope, since during that moment in time all of the force is going against the turn and not against the rope. At the outcome of that that turn you sometimes get a little slack in the rope which you need to grab with both hands and pull in towards your chest (as shown in the photo) to lessen the snapping effect as the rope suddenly gets tight again to whip you back across to the other side.

I got asked by several people (landlubbers) what was I doing water skiing at 6:00 am before work on a Tuesday morning, when the weather was rainy - For an avid slalom skier, the best time of the day to ski is early in the morning, just after sunrise. Any other time of day just after a rainstorm, which tends to smooth out the surface of the water, is also good. Being the first one out there ensures that you don’t have to worry about waves from other boats, which can disrupt your forward motion and your maneuvers. Equally as important is how smooth the surface of the water is. On smooth water the ski cuts through the surface like a sharp blade with no resistance except for what you are controlling with the angle of the edge of the ski with the help of the rear keel. Even the slightest disruption in the surface of the water can lesson your experience. As the sun begins to warm the air mass, the resulting breezes can cause the surface of the water to get covered with ripples. These ripples, however small they may be, can cause the surface of the ski to “slap”over them which creates more resistance and gives what feels like a harder surface. The ideal time to get out there is somewhere between 6:00 – 6:30 am. If there is a light fog rising off the surfaced of the water, then that creates a surreal effect as an added bonus. If there is too much fog, then you can’t see enough to be safe, so you have to wait for the fog to lift. However it is usually the wind that blows the fog away, which causes the ripples so you have to time it just right. There is a very small window of opportunity for the perfect conditions, so you stand there on the shore with the anticipation of a child who is waiting for the ice cream truck to arrive. I presume this is kind of like a surfer who stands on the beach during a storm, or just after it, waiting for the perfect waves.

Anyhow, the title of this is about an injury. The fateful morning of August 30th was just such a perfect one for skiing. There was no fog that morning, so we didn’t have to wait for the wind to pick up, and it had just stopped raining long enough for us to get out there. As I was leaning hard into a left hand turn, my foot suddenly slipped out of the read binder of the ski. This caused my whole body to suddenly shoot straight out horizontally while I was still holding onto the rope tightly with only my left hand. To add insult to injury, I then slapped down on the surface of the water in that position. In local Webster, Massachusetts terminology that would be considered a “wicked wipeout”. When you hit the water at that speed, it feels like a hard surface. This motion caused my left shoulder to joint to hyper-extend, and the tendon on my left pectoral muscle snapped.

I found a good article http://www.physsportsmed.com/issues/1997/08aug/selesnick.htm that describes the problem in more detail, and also the procedure for correcting it. If you want to get a better understanding of what’s broken, try this simple test – place your finger under your armpit and clench you arm down against the side of your body. You should feel something like a small cable that goes across the front of your armpit. This is what connects your major pectoral muscle to the top of your arm bone, and provides the sole anchor point for its function. In my case that cable-like tendon is just not there where it should be. After 2 MRIs that were examined by 2 orthopedic surgeons who collaborated on the diagnosis, it was determined inconclusive as to whether an operation would be successful or not. If the tendon is detached at the bone, then it should be able to be reattached using the procedure that is described in the referenced article. If it is detached at the muscle side, there is little that can be done to reattach it. Its kind of like trying to sew a piece of rope onto a piece of steak. There’s really not enough substance to hold the sutures. Normally the tendon has long fibers that grow deep into the muscle tissue. Once those are torn, then there’s not much that can be done. Unfortunately they have to open me up to find out whether its fixable. I’m crossing my fingers and being optimistic. Even if it can’t be fixed there are other muscles in that region that can control the arm movement just fine. I’ll just never regain the strength necessary to do the kind of water skiing that I am accustomed to.

Recovery time depends on whether or not the surgeon is able to make a repair. If he can’t reattach anything, then it will be just a week or two while the incision from the exploratory surgery heals. If he is able to reattach it then it could be 4 – 8 weeks with my arm in a sling. Either way the recovery period is going to include lots of physical therapy.

He said I should still be able to do the SOA Architect Forum across Europe in September/October depending on how well I feel, and whether he feels I’m capable of hauling luggage around airports for 3 weeks with one arm in a sling. Unfortunately he won’t know until after the operation is performed.

Dave

Dan Zambonini

AddThis Social Bookmark Button

My last blog entry was a throw-away, personal opinion (perhaps too opinionated) on the contents of Computing courses. What I didn’t expect was for it to get Slashdotted, and the number of personal insults - both online and in my email.

This got me thinking to how the Semantic Web could improve on the situation. Within a few days, when Google has caught up, a search for my name may return a number of Slashdot comment results with terms such as “idiot”, “ignorant” or “doesn’t know what he’s talking about”. They’re probably right, but that’s not the point. An average person, looking at these results, will conclude that I am indeed an idiot.

With the Semantic Web, the Web of Trust will theoretically allow us to state, through machine-readable metadata, who we do and don’t “trust”. So, for example, my bank and my employers could create files that declare their trust for me. If you then needed to ascertain whether or not my ramblings are trustworthy, your browser/agent could - in theory - analyse the chain of trust statements that lead to me, and present you with information to help you decide.

But trust has context. My bank may trust me with financial decisions. My employer may trust me with systems architecture decisions. But nobody may necessarily trust me on my ability to analyse the state of Computer Science…

So, this is more of a question really for the Semantic Web crowd; do the current plans for the Web of Trust logic include different contexts of trust?

Do you have any thoughts on the Web of Trust? Is it open to abuse? Can context be accounted for?

Kendall Clark

AddThis Social Bookmark Button

In this weblog yesterday I suggested something perfectly obvious: what if we built an MVC framework, like Rails-Django, using an Agile Language and the RDF data model and SPARQL query language instead of the relational algebra and SQL?

There are some issues, of course; here are some of them off the top of my head:

  1. RDF is or can be schemaless, which is part of its charm. It’s more agile than SQL, and that matters for some apps. But Rails-Django uses the database scheme in many core ways, including building forms and UIs, typing, etc.
  2. RDF Schema and OWL are more expressive than DDL. That’s both a good and a bad thing. It means, for example, you can really express in a machine-understandable way the concept of “uncle” (a man with at least one sibling who has at least one child). But the fit between RDF, RDFS, and OWL and programming languages is harder (or, at least, less widely understood), which is a problem.
  3. What does an object mapper look like in the RDF/S and OWL world? I honestly don’t have much of an answer here, and maybe it won’t matter for most apps? (There are several people trying to do Java to OWL mappings, including my Maryland colleague Aditya Kalyanpur. The smart folks at IBM have used some of Aditya’s ideas in Jastor.
  4. The point of using RDFS and OWL is to support reasoning services like inference. What role would these play in an MVC web framework? Could we use these richer logics to do more clever dispatching, templating, or code-generation? I don’t know yet…

Of course, this being the Age of the Lazy Web, I may not have to find out directly. People are already working on and thinking about this stuff, including students at MindSWAP, where I work.

But, as I also learned from commenters yesterday, others are hot on this trail, including Obie Fernandez, who’s been blogging about semanticizing Ruby and Rails: Deep Integration of Ruby with Semantic Web Technologies, and
ActiveOntology
Update
, and Semantic Web Meet Ruby on Rails. Heh, so maybe you should just go read Obie’s weblog instead! :>

Another reader wanted to point out the joys of Catalyst, which is apparently a Perl MVC framework (is it “kitchen sink”?) that I once read about briefly, but then forgot about. So that’s good. Perlers in the hizzous. But, then, they always are.

Okay, more later as I figure it out.

Dan Zambonini

AddThis Social Bookmark Button

We get a number of resumés trickling through every week, with a fair proportion coming from Computer Science graduates.

I look at the list of modules they’ve studied, and although they sound very interesting, there seems to be little relevance to the current jobs market:
neural networks, computer vision, artificial intelligence, robotics, compiler engineering, machine learning, quantum computing,
Bayesian networks, embedded systems
… How many of these graduates will go on to regularly use this information? And these aren’t dodgy
establishments teaching these modules; I took this list of modules from the curricula of the ‘Top 5′ computer science departments in the UK
(graded by a respectable national newspaper).

Part of this mismatch (between education and skills) could be caused by the misguided notion that ‘Computer Science’ graduates don’t
necessarily go into ‘Software Engineering’, so are taught a more scientific approach, rather than vocational. However, the
Computer Science graduates I know have software/programming careers, not science. Interestingly, from a random selection of
about 10 or 15 university courses I researched for this weblog entry, only 2 offered Software Engineering.

The ’science’ bias could also account for the large number of mandatory maths modules in these courses; one of the top 5 universities
has 25% of its mandatory modules dedicated to mathematics (including 1 mainly on 3D maths). Another top university states that the
final year project is to ‘Develop a game’. Great for attracting students, maybe not a great idea for getting them a job? I just
did a search on monster.com; there were 31 ‘games programmer’ vacancies, and more than 1000 for ’software developer’, and more than 1000
for ‘web programmer’. Not much use knowing how to handle three dimensional diffuse lighting vectors when
you’re trying to create a customer feedback form for an insurance company.

And, quite surprisingly, only 1 course mentioned XML, which was in an optional module. Is there any modern software
these days that doesn’t use XML? So why can’t computer science graduates tell me when to use SAX and when to use DOM?

So, what would you include in a modern Computer Science/Software Engineering course? I’ve started jotting some draft notes
below (in no particular order, this is just a stream of conciousness…)

  • The basics of Programming (variables, data types, references, pointers, scope, error handling, iteration, core algorithms - searching, sorting, etc.)
  • Basic mathematics, basic statistics
  • Patterns and Anti-Patterns (With real world examples, not just theory)
  • Real world Databases (Normalisation and De-normalisation, SQL, Indexing)
  • Basics of good code architecture: Loose Coupling, etc.
  • OO Design, Interfaces, etc.
  • The importance and tools of Planning: Spec’ing,, UML etc.
  • Architectures: client/server, SOA, P2P, etc.
  • A ‘Big’ language or two (Java, C#, C/C++)
  • A scripting/’agile’ language or two (PHP, Perl, Python, Ruby)
  • XML (DOM/SAX, XSLT/XPath, etc.)
  • Economics, Business Studies, Costing Projects, Commercial pressures
  • Copyright, Privacy, Data Protection
  • Project/Time Management
  • Internationalisation, Localisation, Encoding, Unicode
  • Grammar, punctuation, concise and clear writing
  • Interface Design, Usability, Accessibility, HCI
  • Security
  • Code Reading
  • Common Protocols (TCP/IP, HTTP, SMTP, FTP)
  • Testing, Debugging, Performance, Re-factoring
  • Problem analysis
  • Source control, change management
  • The typical Software lifecycle
  • Metadata, Information Architecture, etc.
  • The basics of GIS
  • Touch typing
  • Health and safety (nutrition?)
Kendall Clark

AddThis Social Bookmark Button

So I’m a Semantic Web researcher at UMD, when I’m not editing XML.com. Which means I spend a lot of time talking about RDF, OWL, formal semantics, as well as HTTP, content-negotiation, and RFCs. Recently, however, I’ve been talking to people on both sides of the aisle about Rails, Django, RDF, and SPARQL. Lemme explain…

The new wave of web frameworks, which usefully encompass web apps and web services, are what I like to call Kitchen Sink MVC frameworks. In other words, they’re based on the Model-View-Controller pattern (which is at least as old as Smalltalk), and they come laden with every feature but the kitchen sink. Add these two properties to the fact they are often developed in an Agile Language, and you end up with more productivity boosters than a case of Jolt.

Rails and Django are two of the hottest Kitchen Sink MVC frameworks around, and each trades on the strengths of its host language, Ruby and Python respectively.

But they have far more in common, ultimately, than it might seem, because, ultimately, both Rails and Django (Rails-Django from now on) are about turning relational database rows into programming language objects, and then doing the standard CRUD operations upon those objects. And whether you choose MySQL or PostgreSQL or something else, you’re still developing web apps and services backed by the relational model.

And that’s how Phillip Greenspun got to the point that anyone cares about his photography… But I digress. :>

My point here, and in the next weblog post or two, is to wonder aloud what Rails-Django would look like if instead of SQL and RDBMS… What if the “M” in MVC were composed of RDF, SPARQL, and a triplestore like Kowari?

Sure, Kowari is probably slower than MySQL, and you probably know SQL a lot better than SPARQL, but RDF is a schemaless data representation thingie. You can start with as little or as much schema as you want or need, and you can use the full expressive power of OWL (which is significantly more powerful than SQL’s DDL) when you need it.

This is a non-trivial undertaking, and there are lots of tradeoffs, but it’s an interesting space that I hope I’ll have to more to say about soon. For now, I’ll just point you to Sparta, which is an RDF databinding library for Python. It or something like it would play an active role in a Semantic Kitchen Sink MVC framework.

Dan Zambonini

AddThis Social Bookmark Button

If I see one more website claiming to
be accessible to a W3C
WCAG
AAA rating, or one more public sector tender document asking
for one, I’m going to scream like a big girly who’s just found out
that she’s won a two week holiday to the Maldives. With Brad Pitt.


If you think your website is, then I’m
sorry to tell you - you’re almost certainly wrong. And the reason
is: that the WCAG authors only made the AAA rating as a joke.
Well, I’m pretty sure they did.

I’ll start off with some of the
checkpoints which are pretty tough, but you could meet (with some
effort):


  • 12.3 Divide large blocks of
    information into more manageable groups where natural and
    appropriate.
  • 13.8 Place distinguishing
    information at the beginning of headings, paragraphs, lists, etc.
  • 14.1 Use the clearest and
    simplest language appropriate for a site’s content.

I’m not sure how you can conform
to these with any degree of certainty, but for the sake of the
argument, I’ll assume every piece of your content has been written
and edited perfectly.


  • 3.1 When an appropriate markup
    language exists, use markup rather than images to convey
    information.
  • 11.1 Use W3C technologies when
    they are available and appropriate for a task and use the latest
    versions when supported.

These are as equally vague as
each other. Should you be publishing all your diagrams as SVG
rather than GIFs? After all, the SVG markup language exists (3.1 -
tick!), and it is an appropriate (3.1 - tick!) - and accessible
- alternative to any GIF graphs or diagrams.


And if you’re publishing metadata
(which you have to, it’s another checkpoint), shouldn’t you really
make it available in RDF? And shouldn’t your multimedia be SMIL?
Do you have your privacy information in a P3P file (after all, IE6
- the most popular browser - supports it)? If not, I’m not
sure you can be certain of your conformance to 11.1



  • 13.7 If search functions are
    provided, enable different types of searches for different skill
    levels and preferences.

Again, a bit vague, but let’s
assume that there are three generic types of user: novices,
those of average skill, and advanced. So that’s at least three
different types of search I want to see on your AAA website.

And they must have been rolling around
giggling in their little W3C chairs when they came up with this real
doozy of a checkpoint:


  • 11.3 Provide information so
    that users may receive documents according to their preferences
    (e.g., language, content type, etc.)

Even better, the recommended
technique is to use Content Negotiation. Yes, Content
Negotiation
- that wonderful HTTP idea that has been around
since the beginning of time, that everybody agrees makes sense, but
nobody really uses. In my close group of friends, I have people
who are first-language Welsh, Spanish, Japanese and English
speakers. So their preference, when visiting your AAA website, is to
have the content in their native language.

OK, maybe I’m misinterpreting what
these checkpoints mean. But surely the guidelines should have been
written in “the clearest and simplest language” with no
room for ambiguity? Especially as the guidelines
(http://www.w3.org/TR/WCAG10/wai-pageauth.html)
claim to be AAA accessible? (Actually, even without me being awkward
about this dodgy argument, I’d claim that ‘R&D’ towards the top
of the document constitutes an acronym, that doesn’t have an
expansion in the HTML - hence no checkpoint 4.2 compliance. Goes to show how difficult these are to implement consistently.)

Having said all of this, I actually
think that these guidelines are one of the most important web
publications of the last 10 years. No matter how some accessibility
experts may argue, they have provided invaluable guidance and
techniques for the millions of users who can’t afford user testing.
Possibly more importantly, they have also raised the profile of
accessibility as a core attribute of the web - it isn’t an
addition, but something that sits at the heart of what the web is.

And, in the end, whether you technically achieve an A, AA or AAA is irrelevant, as long as you’ve made every effort to tackle as many of the accessibility stumbling blocks as possible. I just wish that, some of the public sector in particular, would view accessibility as a real-world problem, and not a points-based award system.

Kendall Clark

AddThis Social Bookmark Button

I’ve always been enchanted by the charms of New Orleans. I grew up in Houston, Texas, and New Orleans has been the site of many special events in my life. The first time I ever saw a “dancing girl” was in the Big Easy; the first time I ever had a drink of alcohol (sense a theme here?!); the first time I realized I wanted to make computer technology a career…

I was in NOLA for a Usenix conference, which must have been around ‘98 or ‘99 — O’Reilly had a big presence there, as I recall, but I wasn’t yet working for them. I was a Linux advocate and was just starting to make a transition from SGML dochead to XML dochead, Python programmer, etc.

NOLA was hot that summer, as always, but magical too. I always said that it was the only American city that could make shit seem charming — literally, sometimes there’s pretty much sewage in the streets and allies of the French Quarter, but somehow that seems appropriate there. Even charming. Yep, even charming.

I live in Washington, DC, now, far from Katrina’s rising waters and devastations. But my new city also has underprivileged, mostly African Americans, and a bunch of really messed up policies that will come back to haunt all of us if the right disaster strikes.

All of us who love this computer technology that’s changed everything so much are also, of necessity, lovers of the truth. The truth matters, a lot, in computer science, in IT, and so on. It matters, if nothing else, because we have so much hype to cut through.

Whatever your political leanings, I hope you’ll use the opportunity of Katrina to learn about why it happened, who it’s hurt the most, and what could have been done to prevent much of the devastation.

NOLA is changed forever, but most of its historical sections and districts will rise again from the waters. NOLA will regain its old magic soon enough. I trust, however, none of us who have looked carefully into what happened and why will be unchanged. It’s time for good people — people like geeks who know how to tell truth from lies — to stand up and be heard.

Dan Zambonini

AddThis Social Bookmark Button

I pulled a few strings and managed to get an exclusive interview with XML,
who’s really hot right now. Sitting in a café
just off Venice Beach, this is what she had to say:


Me: Hi XML, thanks for talking
to me. I know you’re not usually very flexible with these kinds of
things.

XML: No problem, I am:


  • Glad to be here

  • Pleased to meet you



Me: I wanted to ask about your
relationship with HTML, which has been in all the papers. It’s on,
it’s off, it’s back on again… What’s the story? In the photos I’ve
seen, you don’t seem like a very happy couple.

XML: Well:


  • The media

    • Have made a big deal out of
      nothing
    • Always take photos of me
      looking bloated
  • Me and HTML

    • Are trying to agree to a
      long-term settlement


Me: To be honest, I think it’s a
bit sick anyway. You’re pretty much each other’s parent, child and
partner all at the same time. You make me want to throw up. What
does your ex-husband think about this?

XML: I’d rather not talk about:


  • My relationships
  • My husband (type = “previous”), is:

    • A nasty little schema
    • A recovering alcoholic

      • With a bad case of the DTDs

Me: Fine. So let’s talk about
your new single, “No REST For The Wicked”. You were supposed to
be performing it live last night, but couldn’t; what happened?

XML: I had to cancel:


  • My guitar was OK
  • One of my &amp;s

    • Broke, and ruined the whole
      caboodle.


Right, that’s enough of that

I’ll tell you what got me started on
this: the essence of web sites hasn’t really changed at all in the
last 10 years. We’re still using a similar data format, with similar
navigational devices.

And I’m not sure that the hierarchical
organisation of information - on which these devices are built - is
the best solution. I’m guessing that it developed from the structure
of books; chapters, sub-chapters and table of contents acting like
a hierarchical menu system and site-map. And the book’s index
functioning very much like a typical keyword search (”you can
find instances of this word on these pages/resources
“).

Books were obviously far more limited
in the ways in which we could record, interrogate and browse for
information. Is there no better modern way to structure and explore
web sites than through these rigid hierarchies? And without
resorting to a cumbersome ‘advanced’ search or wizard?

I’m not really sure what the answer is,
or if there is one. It may involve metadata, the semantic web, topic
maps, graphical interfaces, or none of these. Maybe the combination
of hierarchical browsing and free text search is near to the
optimum solution, and is partly responsible
for the ubiquity of the web today.

Has anyone seen anything on the web
that demonstrates a viable new process for exploring web sites?

M. David Peterson

AddThis Social Bookmark Button

Related link: http://www.jabber.org/software/clients.shtml

As many of you know, GoogleTalk is built upon the XMPP/Jabber communication protocol, an IETF-backed standards-based way to communicate via the web, mainly via Instant Messaging, but in other ways as well. If, like many, you love the idea of GoogleTalk but hate the interface, try out one of these clients listed on the jabber.org website.

Having trouble getting set-up and connected? This entry from Uche Ogbuji should help take care of the problem.

Cheers :)

GoogleTalk: Hit or Miss and why…

Dan Zambonini

AddThis Social Bookmark Button

As Technical Director of a software company, part of my job is to
devise and develop ideas for new Internet-based software products. Some ideas don’t align with our
focus and chosen direction, and hence aren’t considered for development.

I’d like to share some of these ideas with you over the next few weeks, in the hope that someone may
be able to foster them into something more.

The first idea is for a collaborative creation tool.

Collaborative Creativity

I’m a big fan of The Postal Service, a band
that is comprised of a couple of musicians from geographically separated bands. Their album was written
by each musician recording their tracks or ideas, posting the result to the other, who would then add
their contribution, and post the result back, and so on (hence the band name).

The Internet can accelerate this process - at the simplest level by offering the transfer of files over
email. But I believe there could be a better way - specific software that can explicitly support the
creative process. The success of this new software idea will rely on two assertions:

  • That there is a huge amount of creativity waiting to happen over the web
  • That people want to work/create together

Evidence suggests that both of these assertions are correct. The boom in weblogs has demonstrated
the previously caged creativity of people from around the world. But weblogging is still very much an
individual process. Where people can work together - such as technical group mailing lists, discussion
forums, wikis, and open source projects - there has also been much success.

So then, on to the software.

At a basic level, it is a Peer-to-Peer application that lets you configure who you will be working with
(it could also let you define a personal profile to say what you wanted to create, and find similar people).
You also configure the files/directories that you will be working on, and the application will handle the
transfer of files between the members of the working party. For large files (e.g. a GarageBand song), it
might even trickle the file synchronisation overnight. It might also automatically version files, so that
you can revert unwanted changes.

At the moment, this is just a simple software application that shares files between groups of users.
The clever part of the application comes in the form of ‘filters’ – small plug-ins that are aware of the
data-format of different types of creative media.

For example, you could have plug-ins for GarageBand, and for various ‘creative’ XML vocabularies e.g.
movie scripts, plays, novels or reference books.

These filters would provide the killer functionality for the application: being aware of the data formats
will allow functionality such as:

  • Transfer changes quickly, by only transferring ‘changed’ parts of files (e.g. individual GarageBand
    tracks, or chapters within a book)
  • Even if multiple people are working on a file at the same time, changes could be automatically merged
    if they don’t conflict – e.g. people working on different tracks within a GarageBand file, or maybe
    even one person updating the mix settings, and one updating the MIDI notes. Or, two people working
    on different characters’ lines within the same television script.

Wouldn’t it be great to be working excitedly on your song, and to have the little application give you a
new message:

Ben_G has just created a new keyboard track, would you like to
add this new track
?”

What do you think? Would you use this software if someone created it? Does anything already exist that
I don’t know about?

P.S. Although the idea was originally created around media files, there’s no reason that file filters
couldn’t be created for other subjects. For example, business users could have Powerpoint or OpenOffice
filters to help dispersed team members work collaboratively on presentations or customer proposals.

Advertisement