Summary
As I can see the end of Thinking in Java 4e approaching, I'm starting to get into the mode to work on the Hands-On Java CD ROM (4th edition, skipping a release number to synch with the book), which I will do in Flash to eliminate various platform problems.

Advertisement

My previous attempts at making cross-platform multimedia experiences have generally worked, but there's always a small number of people for whom it's been difficult. Maybe it's too much to ask, but I'd really like to be able to put out a product and not have anyone say "it doesn't work for me." (It's never been clear why this has happened, but it often involves some kind of mis-configuration of Windows, or lack of backward compatibility of one Windows platform with another. I'm usually reduced to saying "please try it on a different machine.")

Flash seems to really have the cross-platform problem solved -- and not just across versions of Windows, but on Mac and Linux as well. This seems like the place to go.

One of the steps forward that Macromedia has done is Flex, which allows you to create Flash apps programmatically instead of being forced to use Director. This is important, but there are still questions about licensing for Flex, and with the acquisition of Macromedia by Adobe, it's not clear what's going to happen next.

One alternative is the open-source tool OpenLaszlo. Someone told me about this a couple of years ago, I tried it and ran into numerous problems which made me give up on it. But it's now in release 3.1 and seems much more polished. Before investing time in it, though, I'd like to hear if anyone has had good or bad experiences with it. Thanks for your comments.

Follow-on comments:

First, I downloaded the product and browsed the documentation. This has clearly changed since I first looked at it, and it's very nicely presented. I have to say it's drawing me in, and seems to promise to do what I need it to do, and in a fashion that makes more intuitive sense to me than Flex does.

The one sticking point: they talked about "SOLO" applications (stand-alone, not delivered dynamically from their server -- which is what I want to be able to do. I would have thought that these were just SWF file) but they don't talk about how to do it, or at least I haven't found anything.

I got a message from a blind reader:

Reading your latest blog entry I see you talk about possibly using Flash
for the upcoming Thinking in Java CD as you have a desire to make the
content usable by all. A lofty ambition indeed and I'll make it even more
stretching by pointing out the fact that the vast majority of Flash
content is unusable to the blind and only increasingly less inaccessible
for those with other disabilities. A good overview of the situation is
at:

http://www.webaim.org/techniques/flash/

Now I'm not saying "Stop! Don't dare use Flash!" - even though I get very
frustrated with technologies such as Flash and Macromedia's far from
glorious history in making it better I'm also a realist. I suspect the
blind audience for the CD is relatively small, I personally wouldn't be
looking to purchase it as I'm in the category of having used Java long
enough (since '97) that if I need interactive CDs to get to grips with new
features then I likely need consider a career change. So I'm not for a
moment suggesting you consider a non-existent legion of disabled
developers who will be distraught if you do use Flash.

However, you are a very well known figure in the industry and people
respect your opinions. Even if you could drop a paragraph on your blog
pointing out that Flash isn't necessarily the universal delivery tool that
it seems (at least not without conscious consideration of accessibility
issues) then it could help the cause. I've never met a developer who sits
behind the keyboard and cackles gleefully whilst twirling his moustache as
he thinks up devious new ways of making the disabled user experience even
worse. Most don't think about accessibility issues at all simply because
they've not been exposed to them previously. Then when they hit the
problems they don't know where to turn in search of mitigations if not
solutions. When presented with the information they are usually very
thankful and eager to work on a truly accessible site/app/whatever. And
of course many of the guidelines that help make something more suitable
for people with various disabilities also fall into the category of
generally good user interface design. Keyboard shortcuts, effective
contrast, logical tab orders, we all benefit from this type of thing.

For what it's worth, the current version of the Hands-On Java CD is at least as bad, except that a blind person has the possibility of installation problems. The real problem is that it uses graphics. On the upside, there's lots of audio.

Anyway, I don't think I will be making the situation worse by using Flash on this product, and I don't know how I would make it better by using any other technology. But I think the reader's point was to at least try to think about how a product might impact a blind person.

I work with Eric Bloch who was a manager at Laszlo. I recently took the OpenLaszlo tutorial and was really quite impressed. It's concept of "states" and animation are really quite nice. I doubt it's going away anytime soon since Earthlink is building their Web mail interface in it. I can't wait to find an opportunity to use OpenLaszlo! In fact, the only thing I don't like about OpenLaszlo is that it's based on Flash, which is the one piece of closed source software I haven't managed to get rid of (yeah, I'm one of those types).

One of the developers demoed this for me at OSCON this summer and I was quite impressed. The declarative style of their XML dialect (LZX) is inviting and the code is not too verbose. He mentioned that they were talking about generating DHTML as well, for fallback in instances where Flash is not available, but I don't imagine that will be a quick project. And besides, as you say, the Flash player is really a cleaner cross-platform runtime.

I have a mini-review on my blog (http://e-scribe.com/news/28), though it doesn't say much more of substance than I've already posted here.

I have experimented Laszlo for sometime and now i'm considering to convert my Disk Usage Tool http://treepie.sf.net to a web enabled application to see activity on remote server, but i'm still not sure the client side will be fast enough.

I'd like to do two things. One is mention that I think Laszlo is a good tool for this kind of work.

The second and more important is to say that I totally agree with the persons post, and would like to add that the solution is to use the flash player, but to use it to record Real Human Audio Content rather than relying on voice synthesisers and to give the user a simple audio tree browser that uses the arrow keys to navigate the entire tree of content, using a second channel of lower voiced audio to give "Where you are" cues and navigation direction if you want to get fancy.

Every town has audio engineers and voice talent that can do this work very inexpensively and even when things work with voice readers the results are sad.

I gave it a one week try 6 month ago. Version 2.x. I got a mixed feeling about it. It is a great and impressive tech but there are also, at least for me at that time, some major drawbacks

* Long development cycles, 5++ minutes before you can test a change (on a good machine)* Linear increase in application size on client side, a 10-screen application takes 10 times more memory than a 1-screen app, even if screens are very the same.

In fact as application grows and gets more and more screens things get worse and worse.

Maybe I didn't do things in the right way, maybe things got better in 3.x version

> The second and more important is to say that I totally> agree with the persons post, and would like to add that> the solution is to use the flash player, but to use it to> record Real Human Audio Content rather than relying on> voice synthesisers

The Hands-On Java CD has never had synthesized audio -- it's always been my voice discussing the topics and examples.

Everywhere in this document it emphasizes that the resulting SWF file must be served by a server. A typical SWF file can just be double-clicked on a platform that has Flash installed. Is there something different about the SWF files that Laszlo creates with SOLO?

When I posted about the real human voice, I understood that the hands on java cd has this. I was posting quickly late at night before going to sleep and I wasn't clear about that, sorry.

What I meant to say was to agree with the other reader that flash player content read by a screen reader is not perfect by default, but to add that the real solution for the general case of Flash content, html content and cd content is that people should generally hire real humans to read the content and have it available seperately and that Flash/Flex/Laszlo/HTML developers should focus some time on creating audio browsing and interaction tools that utlize real human audio content for both their web sites and cd's.

The reason is that even when the blind readers work they sound horrible and remain unreliable. I spent a bunch of time setting up blind readers for a friend of my mother in law and she still doesn't use them because even when they do work, they are grating to the ear. In contrast, hiring an audio recordist and a reader is very inexpensive and really does the job in addition to creating a nice alternative mode for fully sighted folk as well who would just like to listen to something interesting in the background.

As far as the Solo mode goes, if you use the proxied=false setting that was mentioned above a file will appear in the same web folder as the lzx source file. It will be a standard swf named something like "Main.lzx.swf" for a "Main.lzx" file. You can run this like you would any swf and turn it into a self running executable like you would with a regular swf. hth

When you read this part it's describing using the local tomcat webserver to compile the file. "When we browse to that file, the OpenLaszlo compiler gives us solo.lzx.swf (which will appear in the same directory as the source .lzx program).""

When you read this next part, it's assuming that you want to take that swf and put it on say, a shared webserver using php instead of java for the server side part to make hosting easier."To make this available on the web as a SOLO application, we simply copy the .swf file to the web server directory. Thats it, were done!"

If you are releasing this as a cd you don't need to do the second part though, you can either wrap that swf in an html file or turn it into a self running executable like you normally would.

I tend to write tools in Python to automate everything (my favorite approach is to either have a "main" python program or a makefile that controls all the work, so that I never have to do anything other than tell it to go); this is the direction I was going with Flex, since they have a command-line version of the compiler. I don't suppose Laszlo has the equivalent? It could be very problematic to have to do any hand-work.

Basically, each slide will have an associated audio file and all I really want to do is to put an audio control on each slide to control the audio, plus navigation buttons for going forward and backward etc. There are a lot of slides, so the only reasonable approach is to automate the creation of these things (I suppose one could get clever with actionscript and build a single app that would just grab slides and associated audio files).