Saturday, December 25, 2010

2010 Rexx Symposium II

The second day, which was the first real symposium day - depending how you want to look at it - started with some challenges. Dave Ashley was not online, so we switched to Mark Hessling in Australia. Having ambushed Mark with webex (we originally wanted to use teamviewer, but were unsure about the options for sound - with me having some recent bad Skype experiences (before the outage) of call keeping ringing throughout the group call. Mark had no sound initially, and then it was very loud - and video looked initially dark and grim, but for his second presentation he had switched to his Mac and everything was fine. This first presentation was about the new functionality in Regina, the brilliant multiplatform Classic Rexx interpreter, and an advance peek into the THE editor in the GUI version.

Because the web conference was so new for all of us, we needed some time to fully adapt - switching off peoples mikes and seeing Kees Wiegel pop up with his video feed during various parts of the presentations.

After the break it was time for Rony who presented the 2010 edition of BSF4Rexx, the glue between Rexx and Java, followed by Jon Wolffers who saw his CSVStream class adopted into the newly released ooRexx 4.1.0. This led to some discussion about error handling and some late night development work by Jon - so it was a very fruitful presentation with changes being committed to the code base the same week.

Next was yours truly with my 'Building NetRexx Systems' presentation which was actually an expanded version of one not presented last year. This went sufficiently well but was hampered by the slides not refreshing very energetically over the webex. I could see this on the ipad which I used as webex monitor using a second userid and the webex ipad app. Probably my MacBook, already overtaxed by running Keynote, Lotus Notes and Sametime (work, you know) and hosting the webex conference, coupled with two high resolution screens, had to do with this. This cost us the live demo of the work done by Bill Finlason for the NetRexx plugin for Eclipse.

Rony did a presentation on using Rexx and ooRexx from NetRexx - its sibling as the title stated. This offered an interesting view on how the strong points of both environments can be combined. After this session we had a break and we continued, with a shrunken audience (especially locally) for the NetRexx architecture board. As web conferences go, compared to a face2face meeting, the medium hampered us somewhat in a free exchange of ideas, but left a strong impression that a conservative approach to the language proper is warranted, while work in Java integration is seen as desirable. I will do a separate writeup of this NLARB session, including the valuable email feedback I received afterwards.

The last symposium day was Tuesday, December 14, 2010. We started with Jaap Brugman, who presented on his work of coupling Rexx to cryptographic hardware for the Central Bank of the Netherlands, starting with a general introduction to cryptography and gradually delving into the intricacies of the C interface to the Rexx external functions that were used throughout his application.

Next was Robert John Wilson, who uses NetRexx to diagnose JDBC connections in his job as database specialist for IBM, His presentation was received very well, also because he demonstrated the tools that he uses live with real connections, and went through the sourcecode to illustrate the easy way in which this has been put together in NetRexx.

After the break Mark Hessling continued from Brisbane, with the earlier mentioned brilliant sound and video, and introduced two not yet released tools for Rexx, Rexx/CSV and Rexx/PDF. The former shows a different approach to CSV parsing that can be used from a Classic Rexx environment, and the latter nicely interfaces to a tool that produces Postscript and PDF.

Thomas Schneider from Vienna presented (from his study in Vienna) an overview of his product line, which has been put together using NetRexx exclusively, while his conversion products all convert to NetRexx.

Michiel van Hoorn was next, and delivered the last local (he lives in Almere) presentation of this 2010 Symposium, on his personal toolkit (aptly named 'Orde!' - which is the imperative for Order! in the Dutch language) which he employs for all his projects in his career as consultant and project manager.

The two last presentations, both from IBM'ers and both over the phone, were by David Ashley, who did a rundown of all changes and new functionality in ooRexx 4.1.0 as a repeat performance of his presentation in Winchester last year - and boy that ooRexx team has been busy the past year, and Harris Morgenstern, who added z/OS as a point of interest during this symposium again, with his very thorough presentation on System Rexx. This product is part of the z/OS simplification effort that is going on at IBM, and aims to make Rexx the perfect language to add system (console) commands to z/OS. I had to operate the slide pack during his talk, and what seemed to be an off-by-one error during the start of his talk, deteriorated with time. I had a copy of his slideset on my second screen, and it took some quick reading and adaption to show the slide corresponding with the words- I hope I did not do too bad a job.

Having the last presentations by one local person and for the rest remotely, enabled us to not lose half a day for travel - this might be an idea for subsequent symposia. So slightly past 18.00 hours local time we could conclude this 2010 - 21st - Rexx Language Symposium. It was interesting in the sense that it was a first for web access to the meeting, and this has led to a much larger attendance than the past few years. We also have learned a lot about how to conduct this, and this will certainly be usable for the next year. For the next time, we need sharper video, better sound systems (to feed a clip-on mike into the web conference) and a separate operator to remotely close mikes - and perhaps less quirky software, although it certainly was manageable.

So - I declare this symposium a moderate success and will proceed to prepare for the next one, probably in May 2011 on the other side of the atlantic ocean.

Sunday, December 12, 2010

Rexx Language Symposium 2010

It felt bad not to have a symposium in 2010 - so we had one. We started with a dinner where Michael Dag, Rony Flatscher, Eugene Pesin and Michiel van Hoorn joined me and Venetia. It took place in the Ysbreker and was very nice; burgers and beer for most of us.

Sunday there was a set of tutorials planned. After leaving the web conference option dangerously untested for many days, we have settled on webex which seems to work well.. Rony is in the middle of his talk, and the webex was joined, at various times, by Bruce Skelly, K.P. Kirchdoerffer, Chuck mcKinnis, Gil Barmwater, Kees Wiegel, Walter Pachl, Mark Miesfeld, Tom Maynard, Thomas Schneider, David Requena, Donna di Meo, David Ashley, Pam Taylor, Chip Davis and Mike Cowlishaw already.

More later.

Friday, May 14, 2010

NetRexx on the iPhone

NetRexx on the iPhone works fine. This is what one should do to make it work:

(1) Jailbreak an iPhone. This is necessary until a more sensible setup is used. I used Spirit; it synchs the phone with the hack and then Cydia is installed, an application that does package management the Debian way
(2) Choose the "developer profile" on Cydia when asked. This applies a filter to the packages shown (or rather it doesn't) - but you need to do it in order to see the prerequisites
(3) OpenTerminal will help you to do command line operations on the phone itself
(4) The prerequisites are a Java VM (JamVM installs a VM and ClassPath, the open Java implementation) and Jikes, the Java compiler written in C and compiled to the native instruction set of the phone, which is ARM.

The phone can also be logged on to using ssh from your desktop. Do not forget to change the password for the 'root' user and the 'mobile' user, as instructed in the Cydia package.

When this is done, NetRexxC.jar can be copied to the phone. I did this using 'scp NetRexxC.jar mobile@' (use the password you just set for this userid) (and because my router assigned to the phone today). I crafted a small 'nrc' script that does a translate and then a Java compile using jikes (and I actually wrote this on the phone using an application called 'iEdit' - nano, vim and other editors are also available but I found the keyboard scheme to type in ctrl-characters a bit tedious - you type a 'ball' character and then the desired ctrl char, while shifting the virtual keyboard through different modes):

java -cp ~/NetRexxC.jar $*

Now we can do a compile of the customary hello.nrx with './nrc -keep -nocompile hello' (notice that this is all in the home directory of the 'mobile' user, just like the jar that I just copied. The resulting can then be mv'ed to and compiled with 'jikes'. This produces a class that can be run with 'java -cp NetRexxC.jar hello'

I am sure I will streamline this a bit, just as I am sure I will do most of my builds on the Mac and just will send over the resulting class files. Some study is needed how to address the iPhones content - it seems possible to use the Sqllite data structure the phone uses, and there might be a glue layer to address the GUI - there is for Python. I will keep you posted when that happens.

Please take note of these notes:
Note that jailbreaking an iPhone is against your eula (well - Apple's eula) and might be illegal in some jurisdictions. You might want to live in a country where you can actually do what you want with the equipment and software you paid for. Note that the jailbreaking process does not perform flawlessly every time and that indeed I had to restore the iPhone after the first failed attempt; the next attempt went smoothly. Note that this is a technology demonstration and that I actually use another iPhone to make my calls on and organize my life with. Note that I find the restrictions on the usage of programming languages imposed by Apple to be ridiculous, but I trust them to come to their senses quickly, like they did with introducing the SDK.

Sunday, April 11, 2010

The tide against platform independence

Oddly enough several mechanisms are working against platform independent development at the same time. One is the recent buying of Sun by Oracle. Now that James Gosling left Oracle, there is some doubt about the future of the Java platform - never mind that he was working on other things while still at Sun - Oracle should have had the brains to keep the figure head around; my personal approach would be to name him whatever fellowship he deserves for creating this software ecosystem. This no doubt will spell a downwards slope as it did for MySQL. Maybe it is time for IBM to offer him a job creating the next step.

The other thing is Steve Jobs' denouncing 'intermediate layers' on the iPhone's dev licence- oddly reminding me of the discussion if we should allow high level languages on the mainframe - no code generation, not even Fortran's, could be ever producing acceptable assembler code. As everybody knows now, this is true in only a very small number of cases. For the original assembly language argument, it turned out that most programmers were using storage-to-storage instructions like MVC (move character, not the higher level abstraction), where one actually should use register based instructions. Compilers are better, if not less lazy, to figure this out.

Both are poverty based arguments, one based on small screens and feeble batteries, and the other on the feeble state of the economy that was Sun's undoing. Java Hotspot has proven that runtime optimization wins from compile time optimization. Mankind benefits from abstractions on higher levels. Steve could not have ported PPC based code to Intel and ARM if it were not for code generation. The point of view that C is the right abstraction level has run out with Java (HotSpot VM, not the language). This is the thinking that left us with Pascal semantics in module calling conventions.

It must be clear that languages like Rexx still are the future; the scripting level being a better abstraction layer ever since its invention in the eighties. This is amply demonstrated by the success of Python and Ruby. The model needs to be optimized for several VM's until the right one wins: this is demonstrated by JRuby, as it earlier (and friendlier and quicker) was demonstrated by NetRexx. What needs to improve is hardware and mindsets. The scripting and VM level is there on the larger home machines, it needs to arrive on the smaller pads and handsets. So it will be about handsets and mindsets.