2002 Rexx Symposium

If you missed the Rexx symposium then you missed the symposium; some words here are a poor substitute. However, the abstracts are here, there are plans to put the presentations here, and these words may give something of the flavour. The attraction of attending is in the involvement of the people - the top Rexx implementers, the inventor of the language, people who owe a slice of their commercial success to Rexx, people who sell software in association with Rexx, and so on. Learning how these folks operate and watching how their interests move year by year is a fascination. And it all comes within a pleasant informal package of arrangements for the meeting itself.

Sunday kicked off with Lee Peedin. Through Lee's accounts before, we can appreciate how farmers in the swine industry, using no more than a touch tone telephone, can centralize their data reporting, feed orders, etc. To handle the number of calls involved the normal activities at central have to be fully automated - not a single keystroke involved. But the familiar formats like Word and Excel that people want in reports are ones that you and I usually produce by a mass of keystrokes and mouse movements.

These products like Word and Excel actually have interfaces that allow them to be driven by Object Rexx programs. Lee is a pragmatic programmer who has found out how to do it. Consider all the toolbars and pulldown menus and colour selections in those products - literally thousands of choices. Lee explained how to find out what needs to be written in your Rexx program to automate each of those. If you can do it with your fingers at your PC then you can write the Object Rexx program to do it.

Rexx has been in the automation business since its day one, before Word, Excel, etc came to prominence. It is comforting to feel that it is still the best tool when you want to run off a little program to avoid having to eyeball the reports that come, extract numbers individually, and construct a chart or letter by hand. Writing the program is fun and from then on it is all profit - as well as being quicker, automation reduces the chance of making mistakes.

Also on Sunday, Chip Davis introduced Java from a Rexx perspective. When we write in Rexx (or any other language) the result is only useful on a hardware and operating system that can run our program. Rexx programmers are in pretty good shape with implementations on a wide range of systems and with "run-times" that allow your program to run on a machine where buying a full implementation would be unjustified. But we never achieved the gigantic producer push necessary to standardize a Virtual Machine for the run-time and have it available by default on almost all machines. Java did. NetRexx is a way of using Java with an interpretive development environment, better syntax, and fewer keystrokes than using Java directly.

Learning Java is never going to be a small task because Java has thousands of methods, but you may feel the need to do it. Chip is an educator by profession, and has the knack of knowing what your question is about even when you are not sure yourself. Nodding acquaintance through a session like this can make the initial learning hurdle much less daunting.

First up on Monday was Mike Cowlishaw with the keynote presentation. Those who have seen Mike doing a formal pitch will know that he is an accomplished presenter in that mode. At the symposium we had him equally at ease in conversational interactive mode - going over the origins and evolution of the language; how one person came to meld the needs of people in forty countries through electronic communication. Mike is not in the Rexx implementation business now (although his implementation is still what IBM's VM uses). However, his same willingness to look for and understand the other person's technical viewpoint is still in play, as he now works at getting commercial adversaries like Sun, IBM, and Microsoft to come together on technical specifications that span the industry.

Once upon a time IBM was in noticeable trouble with the authorities because of a possibly monopolistic tactic - announcing products long before they were available. There was a concern that this put a chill on sales for the competitors already selling, as customers waited to see what IBM would deliver. In response IBM became very uninformative about what they were doing, for fear of pre-announcing. Times change, and nowadays customers do get told (with suitable caveats) what might be coming. The presentation by Lavrentios Servissoglou, the first of several from the IBM Rexx implementers who work out of Boeblingen in Germany, was an example. Lavrentios described a prototype providing a human-friendly interface to a variety of databases, for people writing in Object Rexx. (You may know that Mark Hessling provides a package for accessing databases from Rexx. Lavrentios explained the performance reasons for his working directly with the database interfaces rather than building on the Hessling work.) This work may be available for us to use by the year end, or it may never happen, but at least we got the chance to understand and comment before delivery.

After lunch Allen Richardson described using Visual SlickEdit for Rexx application development. Editor comparisons can be like religious wars because the best editor for you is the one that you are so familiar with that your fingers do the correct thing without your thought. (Personally, I am still most productive with "Personal Editor". This product is about as old as Rexx and was leader in its time because it combined a tiny size (vital for quick loading in DOS) with macros so that you could program single keystrokes to do complex actions.)

However, times change and changing editors ultimately has to be considered. A product has to be good if it is to sell when it is an alternative to things that come free with the operating system or on the net like THE. SlickEdit, with 140,000 sales, falls in this category. The development team is in the Raleigh-Durham area so we got the full presentation of its features, something that a small symposium would not otherwise justify. SlickEdit is used by a number of people I respect, and I have bought a copy as the result of the symposium. If you buy a copy, we suggest you let the implementers know that you appreciate the features tailored to Rexx and would love to have features tailored to Object Rexx added.

Next came Ian Collier. Ian is a Rexx expert - expert enough to have written his own implementation of Rexx. In this presentation he was describing the situation where some programmer, knowledgeable about programming in 'C', wanted to supply some functionality that all Rexx programmers could use. This isn't as simple as link-editing C and Rexx together because of the big differences in the way 'C' accesses variables and the way a Rexx variable pool works. Ian's pitch took us into the detail necessary for the interfacing. You will recall that there are various ways that a Rexx program can use pre-supplied hard code. External procedures or classes may do it. It may be packaged as an "environment", so that the Rexx program can ADDRESS it and send it the commands it recognizes. Ian was describing another way - registration in the same way as we have got familiar with when using RXUTILS in Object Rexx programs.

Nowadays quite a lot of people have experience of publishing a website. In the easiest mode you buy some software like FrontPage, sign up with an Internet Service Provider, write your pages on your PC, click on "publish" and that's it. (No wonder the web gets 7 million new pages per day:-) If you want more action on your pages, with animation or some calculation on behalf of the surfer, then in practice we common citizens probably need Common Gateway Interface scripts written in Perl because that is all our ISP will allow. David Ruggles is in a more fortunate position that he has a set of customers for whom he is the ISP. So he can get to use Object Rexx instead of Perl. He described how to do it when the server was Microsoft's Internet Information Server IIS 4 or 5.

Mick Trujillo is a mainframe programmer. He even has what is essentially a personal computer with the hardware instruction set that a mainframe has, so he can run a mainframe operating system for himself. That environment allows for performance measurement without the confusion of multiple users, and Mick took us through a lot of measurements he had made of Rexx, both compiled and interpreted. Since the audience included Mike Cowlishaw who wrote the interpreter and some others who knew about the compiler this made for an interesting session. Mike Trujillo told us his empirical results and the audience tried to explain them in terms of how the products work internally. Although the presentation was mainly about performance improvement through "rule of thumb" coding style and through use of the compiler, Mike also talked about I/O performance and function. I particularly liked the idea of data conversion during the fetching of data. Mike's company sells something that allows a COBOL book (a declaration of COBOL structures) to be supplied when reading into a Rexx program. The COBOL data read in winds up in Rexx character format. Of course you could program that yourself if you understand about how packed decimal formats and floating point formats appear in binary but do you want to?

Tuesday. Gil Barmwater's skills were used when the telephony system was set up that allows data input to a central location (for the swine industry) to be done using just a touch tone telephone. He described how they added the ability to do entry via the web. With careful structuring, the data entry system could be set up so that maintaining the functionality of the system (as opposed to just transmitting data) was separated from the input/output aspects which might be telephony or web based. This is not something you can try at home. The set of web users involved were a set of customers of SafeData, so Gil was able to get Rexx code into their machines as well as on the server side. That is a powerful way to use the web.

Rony Flatscher is a professor from Austria with an enormous range of knowledge; knowledge of the theory, knowledge of what international standards bodies are doing, and knowledge of what individual products currently in use can do. In this session he was separating Windows marketing terminology from actual capability and describing the capability. OLE (Object Linking and Embedding) and ActiveX are essentially two Microsoft terms for automation capability. That allows for scripts (eg Object Rexx programs) to drive suitably enabled applications (eg Lotus 1-2-3 and several Microsoft applications) with the assistance of the operating system. The necessary assistance is called Windows Scripting Host which comes with some versions of Windows (Win98 Win2000 ...) and can be downloaded for others (Win95 WinNT).

Jan Engehausen is another implementer from Boeblingen. Where Rony had described the overall automation architecture, and Lee the gritty detail of making it work with Excel, Jan gave us the "how and why it works" with Object Rexx, illuminated with a variety of examples driving different applications. Jan went on to illustrate with examples how to wrap your Rexx code in HTML tags to make it into a Component Object Model (COM) object so that other programs could make use of it (without knowing that the COM object was implemented in Rexx).

Thomas Schneider described, and showed the operation of, Rexx2Nrx, a program to convert programs in classic Rexx to NetRexx. There are some things you can write in Rexx, such as INTERPRET statements, which are so dynamic that they cannot be converted into the more static NetRexx but with these exceptions the converter does a quick and comprehensive job. The converter has to do a lot of work but obviously does it well - the converter itself was bootstrapped from Rexx to NetRexx.

The second presentations from Lavrentios and Jan were what the abstract says plus considerable insight into how the Boeblingen team works, and their priorities for new features. (The potential new tool was something to profile Rexx programs on a count-for-each-clause basis) Some of the strategic difficulties in having the majority, but not all, the Rexx development under one roof were apparent. (Boeblingen can't insist on changes in the classic Rexx mainframe interpreter. Hence even if language features could be added to the compiler this would upset the idea of the mainframe compiler and mainframe interpreter as a pair.) The most encouraging bit was the obvious fact that Rexx development is in the hands of some very talented programmers, as it always has been.

Wednesday. Apache is an open source web server. When a surfer requests a page Apache goes through half a dozen stages in supplying that page. David Ashley is an IBMer who has written the necessary code, called Mod-Rexx, to allow Rexx programs to be invoked to do processing at any stage. If you control a suitable server, or if your ISP is running Apache and is willing to install Object Rexx, then Mod-Rexx is what you also need and you will have an efficient and nice-to-use setup.

Rony was back to describe the architecture of the Document Object Model. This is the leading edge work of the people standardizing the extension of HTML and its derivative XML to allow more dynamic interaction between surfer and web page. (Use Googol with W3C as key phrase to find the actual specifications) The specifications define how tags are used to identify parts of the page/document. XML is a stripped down version of an earlier markup language (SGML) and has the same concept of a Document Type Definition (DTD) that describes a type of document, so that a particular document can be checked to see that it has the right tags and structuring for a document of that type. The point about all this specification of the markup is that the programmer who wants to automate something based on the content of a document/page doesn't have to do all the scanning for tags and dissection in his/her program. There are services provided that will do that for you and allow subsequent access to the document as a tree of its pieces rather than a serial slab of text. Rony also explained style sheets. These allow many features of a page (background colour, fonts,...) to be referred to indirectly from a page (or many pages) so that a change to just that style sheet changes the effect of displaying any of the pages that refer to it.

Lee Peedin demonstrated Text-to-Speech. This is something for which you really had to be there to get much benefit. (The voices wouldn't pass the test of convincing anyone that they were listening to a human, but were mostly understandable.) However, you can try it at home because the Microsoft 5.1 Speech Development Kit is free and can be driven by Object Rexx.

Marc Vincent Irvin noted that there wasn't currently much of a market for shrink-wrapped programs written in Rexx, and took us through all the aspects necessary to go from having a useful command line oriented program to having something that users would want. The many aspects, like adding a GUI and making the program easy to install, were addressed. This wasn't presented as the only way to do things, but as a cookbook for one approach to a complex problem.

Chip then explained about practical issues of installing Rexx under Linux, and summed up another successful symposium.

Brian Marks, May 2002.