March 2004 Archives

William Grosso

AddThis Social Bookmark Button

Related link: http://www.cnn.com/2004/SHOWBIZ/Music/03/31/people.usher.ap/index.html

Here’s what CNN wrote, when talking about a new album.

The album was released March 23. Its strong showing may be another sign the recording industry, which has been in a long slump because of piracy, the illegal Internet downloading of music and other factors, is on the upswing.


I think that the recording industry has been in a slump. But was piracy a significant factor? The most significant factor? A factor so much more significant than the others that only it needs to be named? I know the recording industry claims that piracy is a factor, but last I heard, it was very much an open question with, for example, Forrester Research taking the opposite position:

Earlier this month, Forrester Research issued a study saying piracy was not to blame for the sharp decline in record sales. Its study discovered no evidence of decreased CD buying among frequent digital music consumers, noting that the general economy and competition from other media were larger factors.


Was that debate ever resolved? To the point where CNN can blithely assert in an offhand comment that piracy is the major cause of the record industry’s woes.


For that matter, aren’t the increases in sales evidence that the problem wasn’t piracy? Piracy hasn’t been solved. If the record industry was in a downturn because of piracy, and piracy hasn’t been solved, shouldn’t they still be in a downturn?

Maybe I’m just being picky, but don’t you wish the recording industry’s opinions weren’t treated as facts?

William Grosso

AddThis Social Bookmark Button

Related link: http://www.w3.org/TR/xhtml1/

So I was in London last week, and I stopped by Waterstone’s to browse. They had some XHTML books remaindered and I realized: I haven’t seen anything about XHTML in years, not even remaindered books (of course, I haven’t been looking for it either).


Is anyone using XHTML?

For that matter, what about XPointer or XLink?

Eric M. Burke

AddThis Social Bookmark Button

I started using OpenOffice 1.1.1 about a month or so ago. I wanted to use the presentation package for my RSS talk at OCI last Friday.

For me, the compelling features of OpenOffice are:

  • It is free. I have three computers and am tired of
    paying the license fees for MS Office.
  • It has built-in PDF export capability. I’ve used third-party PDF tools for Windows in the past, but it’s nice to have that built-in.
  • OpenOffice is “good enough”. It has its share of quirks, but it gets the job done.

Quirks

I encountered a few issues with the presentation package. It seems to turn on a password feature automatically. One day I opened my file and it prompted for a password. Talk about scary! Luckily, it wanted a blank password.

The other issue, a much more serious one, was that images vanished. I had pasted them in from the clipboard. I’m assuming they were stored as links to the original image, which was in some temporary Windows file. At any rate, I fixed the problem by first saving my images to the same folder as my presentation file, then inserting them as links.

Incidentally, these are known issues.

Usability

So far, I’ve figured out every thing I need to do by experimenting. I’m very proficient with MS Office, so OpenOffice slowed me down because I don’t (yet) know where everything is at. I do have the impression that OpenOffice is slightly less organized than MS Office. But the differences are very minor.

Stability

Nothing has crashed yet. But then again, MS Office never crashes on me, either.

Conclusions?

For anybody who is reasonably proficient with computer software, OpenOffice is easily good enough. They REALLY need to fix the problems with embedded images, however.

In my opinion, This article from Microsoft is the best evidence that OpenOffice is starting to get really good. If OpenOffice was not a threat, they’d ignore it.

Russell Miles

AddThis Social Bookmark Button

Related link: http://news.com.com/2100-1008_3-5178164.html

IBM have announced that AO is ready for the commercial world and that their tools will formally support the approach in the next year or so.

It has already been noted recently in these blogs that Google is certainly advertising for expertise in this area and touting that they have some of this in-house already, but formal recognition from the company heading up one of the most mature implementations is really a milestone achievement for the technology and the approach.

This is a full hats off milestone to the guys that have worked on AspectJ and generally to everyone involved on all the steps on the road to getting the aspect oriented approach into the mainstream. I would like to offer my own thanks to all involved on these technologies and that I am truly happy to see hard earnt recognition being applied to AO and particularly everyone who has been working on AspectJ.

Now it’s time to help out all the other implementations of AO like Aspectwerkz and AspectC to get the recognition they deserve by aiding in their route towards maturity. Anyone know of any other tools/IDE’s/companies who have formally recognised AO as a strategy for their development? It’s be really useful to hear of any success stories with AO from whatever platform you are using.

Marc Hedlund

AddThis Social Bookmark Button

We’ve seen Usenet spam, email spam, search engine spam, IM spam, and Weblog comment spam — how long will it take before we see RSS spam?

My RSS aggregator looks for new items and lets me know when a new item appears on a feed I read. It’s easy to imagine a very malicious feed that would just always make its entries appear “new” — change them subtly, report that they were just written, or whatever — so that its items would always show up in my aggregator — but I’d just unsubscribe. This “Fake New Item” approach could be used more subtly, though, such that I’d be less likely to unsubscribe. Let’s say a news site wants to include an advertising entry amongst its news entries — they could set it up, say, so that the ad shows up as new four times a day.

The Fake New Item approach could be used more easily with superaggregators, sites that bring together many RSS feeds and republish them as an aggregate. Centralized distribution means centralized response, but if a simple feeder wants to show its articles as new (slightly changed) twice a day, that might be hard to detect.

My aggregator currently displays HTML and follows redirects. An RSS Web Bug is already completely feasible — want to know how many people are really reading your feed? I haven’t seen a pop-up ad out of a feed, yet, but that doesn’t seem far off — if the pop-up goes to the background, which feed produced it? (There are other types of attacks possible, too, if RSS readers become more like full browsers.)

Those are a few I thought of. Anyone have other ideas? More importantly, since this is still a young format, is there anything that should change now to stem whatever ideas we think will occur to the spammers a month or a year from now?

AddThis Social Bookmark Button

The other day I was happily programming in my cubicle. Overjoyed with excitement that I accomplished my task early, I wanted to quickly check my files into source control. Some files were no longer needed by the application. Using my handy source control tool’s UI, I selected the files (all the changed files) and clicked delete. Uh! Oh! I knew as soon as I hit delete (and the ok button on the “Are you really sure?” dialog) many hours of work were lost. I am no longer a happy programmer.

But wait… I am using IDEA, which I know can help me. IDEA has a great feature called Local History. As you code, run, debug, etc. IDEA is tracking and labeling your code. At any time you can ask IDEA to show you the local history of a file. The local history displays a colorful side-by-side comparison of the file. Simply find the code you want, copy-n-paste, and you are back in business. In the case of a deleted file, simply show the local history for the directory where the file lived. IDEA then allows you to restore the file. Really cool!

Brian Coyner’s Rules of Thumb:

  1. Always “sit on your hands” before executing a command to delete something.
  2. Use an IDE that supports local history in case you forget to sit on your hands.
Eric M. Burke

AddThis Social Bookmark Button

Related link: http://www.weiqigao.com/blog/2004/03/22/1079998161000.html

Weiqi mentioned me in his latest blog on IDEA and colors.

I really love the way IDEA shows unused code with little yellow bars. Try opening up some of the JDK source code and count the number of yellow bars…yuk.

There is an awful lot of unused code scattered throughout our applications that other IDEs blissfully ignore.

Russell Miles

AddThis Social Bookmark Button

First things first, my apologies but I am not talking about an existing technology in this blog. I am not even talking about a complete concept for a future technology.

This blog is just about an idea only. An idea for applying aspect orientation to XML, nothing more and nothing less. I am blogging this idea to see if anyone has any thoughts on the potential concept, a brain dump really to see if anyone has thought about things this way and, even better, possibly has got it sorted out already. So my apologies up front if this is a done deal, but I wanted to raise the questions.

Now that I’ve got that out of the way I’ll explain a little about where I’m coming from. I’m a heavy user of Aspect Orientation (AO) in regards to Java. I’ve really found some distinct advantages of an architecture based upon aspects and objects rather than objects on their own. Right through from simple applications, sometimes just single classes, to large complex deployments, advantages can be reaped from modularising areas on the micro scale, right down to methods, through to the macro system-wide concerns. As mentioned before on these blogs, AspectJ et al already nail aspect orientation to a large degree for Java and other Object Oriented (OO) languages and this is starting to become a more recognised approach to architecting software applications.

But what about data itself….? or for the sake of discussion on this blog, what about XML?

XML offers the capability to create elegant hierarchies of relationships between data elements. Similar to the more familiar Object Oriented hierarchies, XML offers many good things when it comes to specifying the business data of a system to the right level of abstraction.

However, in XML based systems, not unlike OO hierarchies, there are some types of problem that do not sit well when interleaved with the business logic of a system. Aspects such as security that cross-cut the XML hierarchy are interleaved with the rest of the XML business logic schema definition and this seems to me to lead to some of the same problems that aspect orientation attempts to solve in OO hierarchies.

So, can XML benefit from an AO perspective? That’s the question that this blog throws out there for anyone who’s interested.

My thoughts on the concept are in the very early stages, and I’ll be the first to admit that I don’t have the worlds most comprehensive knowledge of XML and all it’s associated technologies (and acronyms!), but it seems to me that there may be scope for something here.

XSLT offers some of the answer from what I’ve gathered so far. XSLT builds on the capabilities of XPATH (ohhh, there’s never enough acronyms) and offers the ability to transform XML instances from one form to another, from one schema to another. XML Schema themselves are XML instances and so this transformation can work with the schema as well.

This is where I start to see a potential advantage to using aspect orientation in XML creation and processing. So far, my thoughts only go as far as the following simple example. And quite obviously I can’t currently offer much in terms of practical tools that put forward how this processing can be done. But maybe this example might get some of the XML experts out there to pipe up and either tell me that ‘hey, this has been done before … just use…’ or generate some interest in potentially taking this further.

I’ve been thinking of a simple example to illustrate how such an architecture might work. First of all I define the simplest business logic schema my lecturers at Oxford could put together for the recent XML module (thanks to Steve and Ian for such an interesting module).

The following is a simple XML Schema for a greetings message


<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="Greeting" "type=xs:string"/>

</xs:schema>

So we’ve got a very simple XML schema, here’s an instance of that schema.


<?xml version="1.0"?>

<Greeting>
    Hi there
</Greeting>

It is also possible that you could have a schema that defines a more cross-cutting issue such as security classification.


<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="SecurityClassification" "type=xs:string"/>

</xs:schema>


Then we can create a representative instance of this Security aspect schema.


<?xml version="1.0"?>

<SecurityClassification>
    Restricted
</SecurityClassification>

Security is a fairly common and useful cross-cutting concern. The data encapsulated within a business schema may benefit from security being applied to many elements within the document and it is this weaving characteristic that draws some parrallels to aspect orientation in more traditional OO languages.

So how could these two disparate schemas and instances be woven together in-line with aspect oriented methods? Figure 1 shows one way that the aspect weaving could take place producing a woven schema and instance from the examples above.

image

Figure 1. A possible architecture for XML aspect weaving

The process in this architecture is simple enough. Due to the fact that XML schema and instances are both XML then XSLT can be used to provide a form of pointcut-like logic for applying the advice-like data elements encapsulated in the SecurityClassification schema and it’s instances. The instances and the schema are woven to produce a traditional XML schema and instance that has the cross-cutting information, the aspects, applied.

So what would be an expected output from such a process? The following schema and instances are one possible output from such a process, highly dependant on the XSLT pointcut-like definitions shown in Figure 1.


<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="SecureGreeting">

        <xs:complexType>
            <xs:sequence>

                <xs:element name="SecurityClassification" "type=xs:string"/>

                <xs:element name="Greeting" "type=xs:string"/>

            </xs:sequence>
        </xs:complexType>

    </xs:element>

</xs:schema>



<?xml version="1.0"?>

<SecureGreeting>

    <SecurityClassification>
        Restricted
    </SecurityClassification>

    <Greeting>
        Hi there
    </Greeting>

</SecureGreeting>

So are we just talking about XSLT? Yes and no. We are talking about using XSLT, but the perspective is important. We are using XSLT to weave cross-cutting aspects in our XML. Although the technologies potentially exist already it is the perspective change towards aspect orientation that is crucial if any advantages are to be harnessed.

Ok, so that’s a very simple example of what AspectXML could be. By illustrating the ideas I’ve been kicking about I’m hoping to promote some discussion on this, even if it is along the lines of ‘we’ve discounted this ages ago!’. That would be totally fine by me.

I can see the same simple concepts shown in this example possibly aiding in the creation and processing of far more complex XML schema. I don’t have all the answers to the questions that AspectXML proposes. I’m not even sure I have all the questions straight. I could be way off in left field on this, but I can see advantages to the AO perspective for XML even if the approach here is wrong.

Some of the advantages to such an approach are effectively stated as the advantages of AO in general. AO gives us the ability to modularize cross-cutting concerns to better create and manage these areas within our application and/or data.

It is the disadvantages that can be more important to ay new concept and in this case the stand-out problem is that writing the XSLT’s is hard. Unfortunately things seem immature enough at this point to not have commonly reusable design patterns for XSLT available. The power of this suggested concept for AO in XML is in the XSLT’s but unless these can be made easier to create in terms of reusability then this trickiness of XSLT could hold things up. It’s possible that the first efforts then down the path of AO XML could be in terms of XSLT patterns and mechansims for their implementation and reuse. That in itself would be a nice generic piece of work to aid everyone. Hopefully that effort could then perhaps feed into the development of aspect orientation in XML processing at a later date or even alongside that work. But maybe I’m getting ahead of myself a bit now.

I’ll be the first to admit that this is just an idea. If anyone has the time to look into this (or offer some suggestions for how this is already done) then I’m definitely interested. I’m a lazy software guy, and if something has been done before then I’m more than happy to buy into someone else’s concepts. But from what I understand at the moment I can see some definite uses for such an aspect oriented approach to XML and it would be great to hear from anyone who has the time to help me pursue this a little further.

So there’s an idea for AO in XML. Any thoughts from those out there in the XML field?

Eric M. Burke

AddThis Social Bookmark Button

Imagine spending $10,000 per developer on a tool that lets you draw diagrams and then generate EJB code. Now imagine four months down the road, someone writes a better tool and releases it for free as open source.

Do you think you could convince your management to dump the expensive tool and switch to the open source tool?

This is a hidden problem of expensive “enterprise class” software tools. Once you spend millions of dollars on a particular tool, you can be sure that management will pressure you to use what they just paid for. It won’t matter if someone else invents a better tool - you must continue using your tools in order to justify the expense.

Eric M. Burke

AddThis Social Bookmark Button

We’ve all seen the typical Wiki system or content management system that provides an RSS feed for recently modified content. These feeds are great because you can stay abreast of recent activity and stay “in the loop” with new developments.

What I have not seen, however, is a good system for preventing stale documentation. The concept is pretty simple. Provide an RSS feed for the least recently modified pages on your web site. Or maybe configure several parameters such as how many page views pages get, how many people link to those pages, etc.

Every week or so you could review the list of “stale” pages and make educated decisions. If the pages are still valid, just click a checkbox saying “reviewed, OK”. Or, update the page or even delete it.

This seems like a good idea to me. It helps you keep your documentation lean and mean. In my opinion, a small amount of relevant, concise, up-to-date documentation is superior to lots of stale, obsolete documents that become hard to find.

Is this a completely new concept, or does such as system already exist? Do any Wikis implement something similar to help you find and eliminate stale pages?

Simon Carless

AddThis Social Bookmark Button

Related link: http://www.wired.com/news/infostructure/0,1377,62651,00.html

Paul Boutin over at Wired News has just written up a story on the attempted melding of BitTorrent and RSS, which I have some part in - I’m the admin of LegalTorrents.com, the music-distributing BitTorrent site which has been fitted with an RSS 2.0 enclosure-enabled feed for the purposes of trying out this unholy blending.

Andrew Grumet, who upgraded our RSS feed and wrote the add-ons for Radio Userland to enable the first implementation of this, has an explanatory page on the Harvard Law technology page which does a good job of sketching everything out:

“RSS and BitTorrent complement each other naturally. RSS was designed to report freshly available content, which is exactly where BitTorrent shines. RSS 2.0 enclosures were designed to automate the download process that BitTorrent optimizes.

Combining the two should reduce the barrier to entry for small broadcasters. While not a new idea, video blogging has always borne a bandwidth cost. Combining BitTorrent’s cost savings with widely available RSS emitting tools should, for example, make it possible for a small group of motivated people across the world to create their own news channel.”

Incidentally, when I say I’m the ‘admin’ of the LegalTorrents site, make no mistake about it, I’m not actually a coder of any kind. As one of the foremost semi-Lazyweb practitioners out there, I do hack around behind the scenes a bit, but I actually asked Reed of the excellent GameTab videogame news aggregation site if I could re-appropriate his BitTorrent page for other means, which is how the site got set up. I just keep the site running and add content now the magic has been infused.

However, in poking around behind the curtain, I do have a couple of notes on the efficiency of BitTorrent which may be worth passing on:

- If you have one high-speed Torrent seed hosted by the website creator, you may always be able to provide high-speed downloads. As the amount of users grabbing that file increases, the bandwidth they’re pumping back in should balance your seed’s bandwidth being eaten up due to high demand.

But hardly any BitTorrent sites are doing this right now (presumably because a lot of their hosted content is less than legit!), leading to a lot of disappointment in BitTorrent as a technology for files that aren’t in high demand.

So, you’ll still have bandwidth costs if you host a high-speed seed yourself, but your piece of media will always be available, and you don’t get maddening situations such as the freely distributable Baen e-book ISO on f.scarywater.net being unavailable for literally months, because of no seeders.

- The single biggest failing of BitTorrent right now seems to be firewalls on users’ machines cutting off vital ports, and resulting in either slow downloading or, worse, the inability to upload. If users are unable to upload as they download, all your bandwidth savings are lost, and this seems to happen with a certain percentage of users on LegalTorrents right now.

I don’t totally understand the issues (I’m a Lazyweb practitioner, not a coder, remember!), but it seems that making the correct changes to your firewall is relatively complex to the average user, and certainly isn’t well-signaled as part of the normal BitTorrent client - I believe new BitTorrent clients are trying to address this, though.

Where will this torrid tech intertwining lead? Marriage, or just a brief affair?

Eric M. Burke

AddThis Social Bookmark Button

Related link: http://www.google.com/search?q=rss+2.0+specification

Giving a presentation or writing an article is one of the best ways to learn something new. Particularly when you have a hard deadline and cannot procrastinate. This is one of the reasons I signed up to talk about RSS - I want to learn more about it.
I also want to incorporate RSS data feeds into a few projects I’m working on, so this dovetails nicely with that.

As I dig deeper into RSS, I’m finding a few things worth noting:

  • The actual RSS XML markup is simple. Learning about the related tools and technologies is where it gets interesting.
  • RSS is deeply splintered among two competing visions. One says RSS Stands for “RDF Site Summary”, the other says RSS stands for “Really Simple Syndication”. Within these factions, you’ll find numerous minor specification revisions. Most are similar, but differences remain. Writing parsers must be a nightmare.
  • The specs are really bad. I would have expected to find an official DTD or Schema, but they don’t exist. The official RSS 2.0 specification is written using some really lousy HTML so it is impossible to print in a decent way. I spent the last 20 minutes stripping out the garbage (like hardcoded fonts and extra HTML tables) so I could print a legible version.

Oh well, I’ll figure it out.

William Grosso

AddThis Social Bookmark Button

Related link: http://www.sdforum.org/SDForum/Templates/CalendarEvent.aspx?CID=1355&mo=3&yr=200…

I gave a three hour overview of RMI programming the other day. I was very surprised: surprised to be asked, surprised by how many people came, and surprised by how many people stayed until the end. The big lesson: quality technology, even if it isn’t getting buzz, can survive and thrive.


Surprised to be asked?. Well, yeah. I understand that, if you want to do an RMI bootcamp in the Silicon Valley area, I’m pretty much the man to ask. But there hasn’t been a lot of demand for RMI expertise in the past couple of years and I just didn’t think there was going to be a lot of interest in a 3 hour overview.


Suprised by how many people came?. That’d be about 60 people, on a Tuesday evening. When I polled, 10 had “serious experience” with RMI and another 15 had some knowledge. More than half had no experience with RMI (or only had the nodding acquaintance with it provided by EJB programming).


Surprised by how many people stayed? Well, I got through about 2/3 of the slides I brought, and we digressed all over the place (a little bit of transactional logic here, a little bit of general oo principles there). It was fairly high-intensity geeking and I expected that a significant percentage of people would slip out at the break (if you’re one of the people who doesn’t know RMI, maybe 1.5 hours is enough?).


All in all, it was interesting. EJB was the big hype-machine for a long time. And for the past couple of years, web-services have been the darlings of the distributed infrastructure press. But RMI has survived, and is actually getting some use and interest. That’s pretty cool (at least to me).

What other bits and pieces of the java platform have thrived without getting much attention?

Tim O

AddThis Social Bookmark Button

You can’t write a large application without automating builds and launches. If your build process is repetitive and tedious, you have two options: pay a few full time employees to do nothing but configuration day in and day out, or pay one dude to write some elegant scripts for a few weeks. If you are lucky, your organization has well-rehearsed scripts and an operations team that speaks fluent Perl, Python, or bash. Your process involves continuous integration, and a product launch is a non-event - no one wonders if it is going to work. It just does. Read more…

Have you ever worked on a project that didn’t have automated builds and deployment scripts? Or, if you have worked on a project that was flawless, what technology did you use for your build and deployment process?

Any interesting views on SQL Server? Am I just plain wrong about Windows? If you love SQL Server, tell us why.

Advertisement