Wednesday, January 23, 2008

Learning From My Students

For the past 10 years, I've taught a variety of technical topics in classroom settings. The subjects I've covered include XML, XML Schema, XPath, XSLT, XSL FO, SAX, DOM, XQuery, and S1000D. The participants are usually professionals who are looking to upgrade their skills. It’s gratifying to read an e-mail from a student saying how a course I’ve taught has helped them be more productive in their work or pass a certification exam.

It’s always a pleasure to share my knowledge and experience with people, but also to learn from them. When you teach a class, you must master the topic because you can't afford to always respond to students questions by saying that you will do some research and get back to them later with an answer. While preparing for the class, you need to find examples and real life scenarios to explain complex concepts to them. During the class itself, by listening to students’ questions and comments and trying to answer them, you actually discover some aspects or applications of the topic that you have not thought about before.

As the saying goes "the best way to learn is to teach".

Saturday, January 19, 2008

Applicability in S1000D 3.0

S1000D has a new and improved applicability mechanism based on the concepts of Applicability Cross Reference Table (ACT), Condition Cross Reference Table (CCT), and Product Cross Reference Table (PCT).

The ACT data module declares attributes of the product that are not likely to change during its life cycle such as model, series, and serial number. Examples of product attributes for a commercial aircraft include the manufacturer serial number and aircraft registration number.

The CCT data module declares technical, operational, and environmental conditions that can affect the applicability of technical content. Examples of these conditions are: service bulletin incorporation, location of maintenance, aviation regulations, temperature, wind speed, and sandy conditions.

The PCT data module lists actual physical product instances. For each product instance, the PCT specifies the values of product attributes and conditions pertaining to the product instance.

Applicability can be specified at the data module level inside the IDSTATUS or within the content of the data module at a more granular level such as a <step1> element. The ACT and the CCT are used as look up tables to lookup the relevant product attribute or condition as well as their allowed possible values. The applicability element then specifies the correct product attribute or condition identifier from the ACT or CCT and the values to test against.

The applicability information itself can be captured in human readable format for simple cases. For more complex cases, one or more assertions are used to specify the product attribute or condition to test and the values to test against. These values can be constrained with a pattern based on regular expressions as defined by the XML Schema specification.

The new S1000D applicability mechanism supports the "effectivity" requirements of civil aviation and provides capabilities that are beyond the ATA 2200 effectivity mechanism. It also facilitates the development of applicability filtering functionalties in Interactive Electronic Publications (IETPs). However, building an authoring front end that hides its complexity (regular expressions and logical operations) to the technical authors creating the content will be the key. This is also an area where well-defined business rules should be specified and enforced using a tool such as ISO Schematron.

Friday, January 4, 2008

On our Radar in 2008

First, Happy New Year and Best Wishes for a Peaceful 2008!

Since this is my first blog this year, I will talk about what will be on our radar screen. The Java EE platform with JSF and the open source frameworks Spring and Hibernate will continue to be our preferred development platform for robust enterprise applications (ERP, portals and CMS). We like the ability to leverage third party AJAX-enabled JSF component libraries such as ICEFaces and Apache MyFaces to quickly create rich internet applications (RIA). JSF also allows us to target both the mobile and web delivery platforms simultaneously through the use of render kits. Spring brings sanity and simplicity into the development of complex Java EE applications and Hibernate allows us to develop database agnostic applications among other benefits.

Although we still believe Java EE is the way to go for complex enterprise applications, we will learn and embrace Ruby on Rails and Adobe Flex this year. Feel free to recommend your favorite books on these topics.

We'll continue to make innovative uses of ATOM syndication, AtomPub, FeedSync, and OpenSearch to solve our customers problems.

A new version of our favorite XML database (Exist) will be released soon and will improve performance significantly. Exist already has some support for AtomPub. Declarative programming using a combination of XForms, ISO Schematron, XSLT 2.0, XQuery, and Exist's RESTful API will deliver great value for those who are willing to experiment.

Finally on the Web 2.0 front, we'll be exploring the intersection of content management with social computing, mashups, user-generated content, and rich internet applications (RIA).

We look forward to another collaborative and productive year.