Syntext Serna

May 6th, 2008

Syntext is planning a major release of Serna 4 and has just released a minor release 3.6 in April 2008. Alpha Serna 4 is available already.

Syntext Serna is a highly customizable, multi-platform, pure XSL-driven WYSIWYG XML content editor. It looks and works like a conventional word processor, yet gives you much more flexibility to alter or reuse content while keeping its integrity intact. Serna lets you collaborate on compound documents that contain embedded data from various sources. Content is viewed as an integrated whole that is intuitively transparent to authors. Possible applications of Syntext Serna range from technical and business content authoring to sophisticated PDM systems.

Syntex currently has hundreds of companies using this product since its inception in 2003. They provide Basic support (e-mails, minor releases availability) and Premium support (e-mails, special hot fixes availability, priority bug fix).

If you have used Syntext Serna or products like it and would like to provide feedback, please comment here about the product and your experience with it. We value your opinion.

XML Copy Editor

May 2nd, 2008

Gerald Schmidt was kind enough to share the news of their latest release of XML Copy Editor.  This release was January 2008 and release 1.1.0.7 is currently in testing.

 XML Copy Editor is fast, free and covers most common XML editing tasks:

  • DTD/XML Schema/RELAX NG validation
  • XSLT
  • XPath
  • Pretty-printing
  • Syntax highlighting
  • Folding
  • Tag completion
  • Tag locking
  • Tag-free editing
  • Spelling and style check
  • Built-in support for XHTML, XSL, DocBook and TEI
  • Lossless import and export of Microsoft Word documents (Windows only)  

If anyone is familiar with this product and XMLSPY or other commercial tools, we’d love to hear how you think it compares.

XmlMessageTest

May 2nd, 2008

Last month’s latest release of XmlMessageTest provides an easy way for testers to develop automated tests against XML-based message servers, without having to write code.

Gene Mitelman of SmartEdge LLC noted that this release was the result of a user request for the ability to provide more open-ended expected values. The product was then modified to offer that functionality. New releases of this Open Source and free product are the result of requests from users.

If you have used XmlMessageTest or others like it and would like to provide feedback, please comment here about the product and your experience with it. We value your opinion.

Alchemist XML IDE Freeware

April 29th, 2008

We recently communicated with Gustavo Cardona Ramirez of Mentat Technologies regarding release of their new Alchemist XML IDE Freeware. According to Gustavo, this XML product currently has 1,000 users and we wanted to share it with our community.

Alchemist XML IDE FREE Edition is a brand new, free graphical tool for XML development. With Alchemist, you can work with XML, XSL, XSLT, XPath, SQL/XML, code generation, database to XML mapping and many other XML technologies .

What’s new in Alchemist XML IDE FREEWARE:

  • Support Oracle 11g.
  • Support MySQL 5.0 , 5.1 and 6.
  • Knowledge base integrated.
  • Optimized memory utilization.
  • Minor bugs fixes

If you have used Alchemist XML IDE or others like it and would like to provide feedback, please comment here about the product and your experience with it. We value your opinion.

Web Accessibility: Why Should You Care?

April 23rd, 2008

There are several valid reasons why you should learn to make your web sites accessible, but if you had to pick one, and only one, do it because it’s the law.Consider the Americans with Disabilities Act (ADA), a civil rights law that prohibits discrimination against people with disabilities. The ADA requires that places of public accommodation and the services they provide be accessible. If that’s not cut and dried enough, consider Section 508, a 1998 amendment to the Workforce Rehabilitation Act, that requires all US federal agencies to make their electronic and information technology accessible to people with disabilities. To make that happen, the U.S. Access Board published the accessibility standards in December 2000, and the requirements became effective in June 2001.

In 2006, the case of the National Federation of the Blind (NFB) vs. Target brought the issue squarely into the media spotlight. The NFB alleged the Target web site was discriminatory and requested a preliminary injunction forcing the retailer to fix its accessibility issues on Target.com. Although a judge denied that initial request, the lawsuit has more recently been given class-action status. It is now clear that anyone at any U.S. company who has a web presence could be sued for discriminating against people with disabilities.

“It isn’t a resolution of the case; it’s a statement that under these laws, it’s OK to bring the case, which is a big deal,” said Jim Thatcher, an independent accessibility consultant who wrote the foundation of Webucator’s Web Accessibility courses.

An accessible web site is one where a person with disabilities can use it, understand it and interact with it as well as a person without disabilities. So, it might seem like a no brainer to do this, a kind of non-corny, ‘if you build it, they will come’ (Field of Dreams) scenario. Competition amidst consumers is at an all time high thanks to the constant availability of online shops, and no retailer worth his or her collective salt would knowingly turn away a potential customer. Yet all sites don’t meet the legal web accessibility requirements and standards.

Fortunately, Thatcher said that most web developers don’t actively seek to build inaccessible web sites. Unfortunately, many simply don’t know all there is to know about accessibility.

“You can find accessibility classes in high schools or in colleges but rarely do you see accessibility as part of the mainstream education for web or software development,” Thatcher explained. “It should be part of every course, and it just isn’t. That’s a big problem.”

As interest generated by media attention to this issue grows – spotlighting the penalties associated with noncompliance – this type of training is becoming increasingly important.

Thatcher said it’s not that much more expensive to build accessible web sites. But it can be very expensive to fix them, which is another reason awareness and training are critical. Web developers need to make sure that accessibility becomes a standard piece of their development process rather than an add-on to relevant curriculum.

Also, web accessibility standards are changing. Thatcher said the process for web companies, the guidelines and Section 508 standards have been in flux for some time. And while there are tools available to help web site designers and owners test whether their site meets the new standards, upfront training can save an organization money, time and valuable resources (and potential court fees).

Web accessibility is not just an issue in the United States. Webucator recently provided a web accessibility class for the Town of Richmond Hill in Ontario Canada. Benton Sangster, who attended and helped organize the class had this to say:

“At the Town of Richmond Hill we’ve made it a priority to make our web site accessible to all of our residents. Webucator’s trainer helped show us what needs to be done on our own site and how to prioritize the tasks. He frequently used examples from other similar organizations and municipalities and offered great advice for when we start the process of developing a new site. He also left us with a great site to visit after the course to use as a resource. This course is a must for those wanting to meet accessibility guidelines.”

-Benton Sangster
-Senior Communications Officer
-Town of Richmond Hill
-Richmond Hill, ON

If the legal requirements don’t provide enough incentive to make web accessibility high priority, Thatcher said web developers, designers and managers, as well as the trainers who teach them, should view web accessibility quite simply as the right thing to do.

“It’s really important to understand that,” he said. “Yes, there are legal pressures to do it – you can’t sell stuff to the government if you have web based products that aren’t compliant with these standards. But there are other benefits. First, the disabled population represents a significant amount of disposable income that you’re rejecting if you don’t have an accessible shopping site.”

Second, Thatcher said building to accessibility standards can make a site work better with small devices such as cell phones. Third, some technical experts say the bots that crawl search engines are blind. They don’t see pictures. Therefore, having text associated with non-text content improves search engine optimization because the bots will be able to read the text and not the images, just like a blind person.

Webucator offers customized public and private Web Accessibility and Section 508 training for experienced Web designers and for managers. Web design students are expected to have expert knowledge of HTML and at least intermediate knowledge of CSS. In the managers’ course, students learn how to create web sites that meet the Section 508 standards for web site accessibility. The class targets decision makers who are responsible for understanding, creating and enforcing web accessibility guidelines. Students do not need expert web design knowledge, but should have basic knowledge of HTML, know the difference between HTML, CSS and JavaScript, and understand how web pages are created and served.

For more information on Webucator’s web accessibility courses, visit http://www.webucator.com/WebDesign/Accessibility.cfm.

A Recession is Coming: Seize the Opportunity!

March 17th, 2008

Everyone is bracing for the recession, which may already be here. According to the Boston Consulting Group, more than 50% of executives believe the recession has already come (article). Companies naturally respond to recessions by tightening the purse strings and the training department is often one of the hardest hit. I run an IT training company, so before I say what I’m about to say, I’m going to admit that it’s very self serving. OK, now I’m ready:

In a recession, buy more training!

According to Hal Sirkin, global leader of BCG’s Operations practice, “In a recession, everyone feels short-term pain. But companies that successfully approach a recession as an opportunity have the potential to realize long-term gain.” (article)

I was in the training business in 2001 when training budgets were slashed left and right. One result was that training companies reduced their prices like crazy. They were so desperate to get a butt in a seat that they were offering 75% or more off of their prices. But those reduced prices didn’t help much because nobody was buying at any price. Classes weren’t running, trainers were laid off, offices were closed, and companies went bankrupt. On the buying side, training departments were hit hard too. It was a horrible time for everyone in the training business.

But some companies saw a great opportunity. An article published in 2003 in T+D called “Recession Survivors: Training to the Rescue” documents how several companies came out of that recession ahead of their competitors in large part due to their refusal to cut their training budgets.

So, here are my thoughts.

1. Understand the Opportunity

Business is about competition. To succeed, you have to do things better than your competitors. In recessions, companies tend to lose focus on everything but cutting costs. Among other things, they stop thinking about customer satisfaction, which obviously leads to customer dissatisfaction. This gives you the opportunity to capture market share.

To keep your customers satisfied, you must continue to deliver great products and services, which means continuing to build your employees’ skills. Your competitors are likely to cut back on this. By not cutting back, you get ahead.

=> Your Higher-skilled Employees

=> Your Happier Customers

=> More Business for You

=> Your Competitor’s Lower-skilled Employees

=> Your Competitor’s Unhappy Customers

=> More Business for You

And that is the opportunity.

2. Use Downtime to Build Skills

When you are busy with a lot of projects, you often need training to help you complete those projects, but it’s hard to schedule that training because, well, you are too busy. Arghh!

A recession can result in less work for your staff. If your clients aren’t buying as much then your staff may experience fewer demands on their time. They may end up spending more time on lower priority jobs or just doing nothing. Your best employees, the ones who most enjoy being productive, are likely to become bored and unhappy. Rather than have than sitting around doing nothing (or surfing Monster.com), give them the opportunity to use their downtime to increase their skills. Although training is expensive, it’s not nearly as expensive as losing good employees. And when the projects come back, those employees will be able to do them better and quicker, creating opportunity and saving you money in the long run.

3. Look for Good Deals, but Not Too Good

In the recession that followed 9/11, many training companies were offering exceptional discounts of up to 75% off of the listed price on pre-paid classes. But companies who had prepaid for large amounts of training to take advantage of the low prices often found that the deals weren’t so great after all. Training companies often canceled their classes due to low enrollment, so there was little opportunity to actually cash in on the training. Worse yet, many of these training companies closed their doors, leaving their clients out in the cold.

There will be some good deals offered during a recession, but be sure that the vendors who offer them are in a position to survive the recession. If the deals are too good, they may be given in desperation. Buyer beware. If you’re going to make a large commitment to a long-term deal, don’t be afraid to ask for vendor financial information. You want to be sure that you’re not just loaning money to a dying business.

4. Don’t Skimp on Quality

Training providers vary. If you want your employees to have terrific skills, you better provide them with terrific training. What message does it send your staff if you stick them in a room for five days with an ill-prepared or under-qualified trainer. Insist on a 100% money-back guarantee. Any training company worth its salt won’t hesitate to provide it.

Recessions have a way of weeding out the weaker companies. On the flip side, if you do things right, you can come out of the recession a lot stronger than your competition with more customers and more opportunity.

JavaScript Style Guide Conformance

March 13th, 2008

We are updating our JavaScript courseware and our JavaScript tutorial and Ajax tutorial to mostly conform with the conventions recommended by Douglas Crockford at http://javascript.crockford.com/code.html and http://javascript.crockford.com/style1.html. First of all, here’s what we decided to do. Some of these had already been implemented in our courseware, but we hadn’t formalized those decisions.

  1. Remove the language attribute from the <script> tag. There is no need for it and it has been deprecated.
  2. No using <!-- --> to wrap scripts as they are no longer necessary for modern browsers.
  3. Always use var to declare variables to avoid accidental globals.
  4. Avoid global variables as much as possible. We will still sometimes use global variables when it makes it easier to illustrate a simple concept.
  5. Never use assignment as expressions. For example, avoid the following: if( flag = (a && b) ){ ... }
  6. Always use brace-delimited blocks in control structures, even simple ones.
    1. Indent the statements inside the braces.
    2. Place the opening brace on the same line as the control structure start.
    3. Place the closing brace on a line by itself and indent it so that it falls directly below the first character of the control structure. For example:
      while (some condition) {
          //do some interesting stuff
      }
  7. End function assignments with a semi-colon. That is to say, when assigning a function to a variable, the statement should end in a semi-colon.
    var myFunc = function (arg) { .... };
  8. Use object augmentation wisely. See the section on Object Augmentation at http://www.crockford.com/javascript/inheritance.html.
  9. Use === and !== instead of == and != to prevent unintended type coercion.
  10. Only use the ternary operator for value selection. Use this:
    var a = (x===y) ? 0 : 1;

    …instead of this…

    var a;
    if (x===y) {
        a = 0;
    } else {
        a = 1;
    }
  11. Use the default operator: ||. Use this:
    var a = getValue() || 1;

    …instead of this…

    var a = getValue();
    if (typeof a == "undefined") {...
        a = 1;
    }
  12. Use inner functions to avoid globals and excessive parameters. We plan to do this in our advanced JavaScript course and our Ajax courses, but not too early as inner functions are difficult to understand for JavaScript newbies.
  13. Use the .js file extension.
  14. Only embed JavaScript in HTML for code that belongs to the current page and session.
  15. Constrain lines to 80 characters.
    1. Break lines right after operators or comma.
    2. Indent the line after a line break.
  16. Comment Use:
    1. Add meaningful comments
    2. Avoid obvious comments.
    3. Use single-line comments when possible (// rather than /* */).
  17. Declare all variables with var at the beginning of each function.
  18. Declare inner functions right after the var statements.
  19. Put a space between “function” and the opening parens “(” for anonymous functions:
    var myFunc = function (arg) { ... };
  20. Use only letters, digits and underscores for identifiers.
    1. Don’t start identifiers with _.
    2. Don’t use $ or \.
    3. Start all identifiers with lower case, except constructors and global variables.
    4. Start constructors with upper case.
    5. Use ALL_CAPS for global variables.
  21. Do not put more than one statement in the same line.
    1. End all statements with a semi-colon.
  22. Only use expressions as statements for assignments and invocations.
  23. Only use labels (if really needed) in for, while, do, and switch statements.
  24. Do not use parenthesis in return statements. Use this:
    return a

    …instead of…

    return(a)
  25. Do not use the with statement.
  26. Avoid the continue statement.
  27. Whitespace use:
    1. Include a space between any keyword and an open parenthesis: for ( ... ).
    2. Do not put a space between a function name and the open parenthesis: execute(abc).
    3. Include a single space after each comma.
    4. Include a single space after each semi-colon in a for statement.
  28. Use {} instead of new Object().
  29. Use [] instead of new Array().
  30. Only use the comma operator inside the for statement control and then only if it’s absolutely necessary.
  31. Avoid eval().
  32. Do not pass strings to setTimeout() or setInterval(). Instead, pass an actual function or closure.
  33. Do not use the Function construction. Use this:
    var myFunc = function (arg){ statements; };

    …instead of…

    var myFunc = new Function (arg1, { statements; } );

Here are the recommendations we decided not to follow:

  1. Exclude the type attribute from the <script> tag.
    1. We disagree with this recommendation as the type attribute is required in HTML 4. Excluding it will make the HTML invalid.
  2. Place <script src=...."></script> as late as possible inside <body>.
    1. While we agree with this recommendation in general, we feel that it would complicate the learning process as students would have to search through HTML documents for the JavaScript sections. We’ll recommend that students do this as a best practice in their own code, but we will not always do it in the course samples.
  3. Use 4 spaces as indentation, not tabs.
    1. We have taught our JavaScript courses to many students using many computers and have never had an issue with using tabs. And it’s a lot easier to press tab than press the spacebar four times.
  4. Avoid the creation of global functions.
    1. We take this to mean that functions should be created as methods of classes. While we understand the point, we would have to start our classes by teaching object-oriented concepts, which wouldn’t make pedagogical sense. So, we’ll continue to use global functions in our JavaScript courseware.

Proper URL Syntax in XSL-FO

February 26th, 2008

I recently had a former XSL-FO student tell me she was having problems with graphics rendering in FOP version .094 when using relative paths. Unfortunately, I wasn’t able to help her figure out why not. She seemed to have the syntax correct. She used the following syntax, which is right out of our XSL-FO manual used in our XSL Classes.

<fo:external-graphic height="238px" width="340px"
  src="url('Images/beatles.jpg')"/>

So, I went to the XSL spec and found this example:

 <fo:external-graphic src="'url(TH0317A.jpg)'"/>

That threw me. Why single quotes around the whole string? So I emailed the editors of the spec asking if that code is correct and suggesting that it would be better to write it this way:

<fo:external-graphic src="url('TH0317A.jpg')"/>

or this way:

<fo:external-graphic src="url(TH0317A.jpg)"/>

I was impressed that they responded pretty quickly:

This is, admittedly, a bit of esoteric (full reply).

Under Property datatypes at http://www.w3.org/TR/xsl/#datatype
the <uri-specification> datatype is described. This definition was basically inherited from CSS. It says that the value is “A sequence of characters…” in which the quotes inside the parentheses are optional. So, despite the fact that url(…) might look like a function call, it is not–it just a string that happens to contain parentheses, and technically strings in the XSL expression language must be enclosed in quotes.
So in fact the form shown in the XSL spec is correct, and the other two shown above are not.

However, many implementations do not enforce the need for quotes around the “url(…)” string [and I, for one, don’t blame them], so in practice, all three forms shown above will work.

I do understand that url() is not a function. But I don’t believe that’s an issue. As I understand it, in CSS a URI datatype is a subset of the string datatype. However, in FO, attribute values are often strings and there is no need to put extra single quotes around them.

It seems to me that the value of the src attribute below is a proper URI.

<fo:external-graphic src=”url(’TH0317A.jpg’)”/>

I checked out the CSS documentation (http://www.w3.org/TR/CSS21/syndata.html#uri) and it shows this example:

body { background: url("http://www.example.com/pinkish.png") }

That seems to me to use the same syntax as the src attribute above.

To agree with the code shown at http://www.w3.org/TR/xsl/#d0e9795, it would have to be:

body { background: "url(http://www.example.com/pinkish.png)" }

And that just doesn’t seem right to me. But I couldn’t find any documentation either way. :(

This is apparently completely academic as all the tools seem to allow for “my” syntax and the syntax used in the XSL spec.

IE7 lacks support for abbreviated color codes in deprecated HTML tags

February 17th, 2008

A good response to this title might be “who cares?” We all should be using CSS to handle color anyway, right? Sure, that’s right. However, I still sometimes use the old deprecated attributes when I’m whipping something small together. I can save a few keystrokes (nine to be exact) by typing <tr bgcolor="#f00"> rather than <tr style="background:#f00">. Well, I guess I can’t - not if I’m going to need my page to work in IE as well as Firefox. IE7 doesn’t recognize the abbreviated hex code. If you’re going to use the deprecated bgcolor attribute, you’re stuck with the six-character hex codes (e.g, <tr bgcolor="#ff0000">). And there goes three of my saved keystrokes. For nine saved keystrokes, I’ll use a deprecated attribute from time to time, but for six it just isn’t worth it. :)

For those of you who are geeky enough to want to test this, but not interested enough to write the code yourself, here’s the code that works in Firefox, but not in IE:

<table>
    <tr bgcolor="#f00">
        <td>Hello world!</td>
    </tr>
</table>

And here’s how it renders:

Hello world!

Now hold on just a minute! That’s not working. And it took me a little while to find out why. It turns out WordPress (blog platform used by Webucator) won’t let me make my mistake. It’s “correcting” my code and converting #f00 to #000000. I’m afraid that means you’ll have to run the test yourself. When you do (and I’m sure you will), be sure to include the DOCTYPE declaration. Otherwise, Firefox will also paint that red door black.

Four Ways to Engage Online Students

February 17th, 2008
“I was a little hesitant about the method of learning but found that using my own computer and working where I was comfortable was better for me than a traditional classroom. Communicating with the instructor was never a problem, and I took the class from home. I would definitely take another Webucator class.”
– Mack Westbrook, Software Engineer, RouteMatch Software, Inc.

We instructors tend to be a more than a little vain. We like getting the kind of feedback Mack Westbook provides above. We especially like it after having invested a lot of time to implement the latest, most advanced elearning technology platforms. But using state-of-the-art online learning technologies is just one part of it. You must be prepared to engage students in the online learning environment and this can be tricky. With no face-to-face interaction, it’s all too easy for the online student to zone or coast, missing out not only on the main ideas presented but the nuances of course material that can make a difference later when it’s time to apply newly-learned skills on the job. Based on experience gained in Webucator’s online classes, I’ve put together some suggestions for methods to engage online students.

1. Keep it interesting - Mix it up

One way to ensure online students remain interested and engaged in a virtual learning environment is to combine online and traditional learning methods for a hybrid or blended approach. Some ideas for mixing up your online classes to create a more engaging learning experience:

  • Allow for student-directed activity - for example, have a student’s question lead into an impromptu activity or exercise.
  • Promote peer-to-peer interactions - for example, when a student asks a question, let another student try to answer it. This is especially good of the question has been covered already in class as it gives students the chance to use what they’ve learned thereby solidifying the knowledge. It is also a chance to let more advanced students participate in a meaningful way, which will help keep them from getting bored.
  • Use multiple input sources - toggle between the whiteboard, the presentation material, software tools used in class, a web browser, etc.

2. Challenge Your Students

In addition to plenty of hands-on exercises, you can incorporate small planned and unplanned tests or quizzes to promote student participation while simultaneously cementing the information presented. This will keep students on their toes and off of email. Most online learning platforms allow participants to put up a “stepped away” icon. Let students know that if that icon isn’t up, they’re free game. Just be careful not to make the questions too hard. You want students to be prepared, but not intimated.

3. Solicit Feedback

Constantly check to make sure you haven’t lost anybody. Once students are lost, they’ll quickly get bored and you’ll have a hard time getting them back. For students who are worried that they might ask the question that breaks the no-stupid-questions rule, most elearning systems include a chat interface that allows for private chats with the instructor - a feature that you don’t get in a physical classroom.

Also, give students a chance to provide formal feedback part way through the course. Not only does this encourage student engagement, it gives you an idea of how things are going before it’s too late to do anything about it. In our student evaluations, we often see comments like the one below from Susan at Hewlett Packard:

“Great instructor - she is very patient and knows the tool inside out. She also provides custom exercises, tailored to your specific needs.”
–Susan Cohen, Communications Manager, Hewlett Packard

4. Teach Students to Fish (for Answers)

I used to work with an instructor who knew the technologies he taught inside out. Sometimes when a student would ask a question, he would feign ignorance, pick up a reference book, and say “That’s a great question. Let’s see here…” Then he’d leaf through the book, find the answer, and give it to the student. He wasn’t fooling anyone. The students knew exactly what he was doing and he knew they knew. That wasn’t the point. It was a great technique for showing students how to find information on their own.

Online classes lend themselves to this technique because everyone has access to the web. In many classes, trainers will provide a list of sites that students can go to for more information. But it’s so much more useful to actually take the students out to a site to demonstrate how useful it is.

I hope you’ve found these useful. I’d love to hear your ideas. Just post a comment below.