Virtual OS/2 International Consumer Education
VOICE Home Page: http://www.os2voice.org
March 2005

Newsletter Index
< Previous Page | Next Page >
Feature Index

editor@os2voice.org


Coding for OS/2 - Starting is easier than you think

An editorial view from Christian Hennecke, Editor-in-Chief of the VOICE Newsletter.

======

When the topic comes to contributing to the OS/2 community, it is common for people to say that they would really, really like to do something but cannot for one of a multitude of possible reasons. By now we all know the impact that has had and still has on the OS/2 magazines, for instance. Software development for OS/2 displays the same symptoms. There are few who are contributing much and many who contribute. . . nothing, with little else in between. And the few large contributors are getting less. It is true that starting development of OS/2 software from scratch is difficult, and the learning curve is a steep one. But let me tell you a not-so-short story.

My last "serious" development work was done on an old Atari Mega ST 2 machine using GFA Basic 3.5 (and anybody who laughs at this point doesn't know anything about that product). I wrote an accounting application and a space conquest game, both with a GUI consisting of pull-down menus, dialogs, etc., that required usage of resource files and a bit of message handling.

Then there was a long hiatus only interrupted by some very occasional and small REXX stuff, until I created some PHP/MySQL-driven web pages for a local German Team OS/2 society. Coding plain HTML/CSS doesn't count as programming here. In between I had a look at C/C++ a few times but never warmed to it. Actually, I pretty much hate C. I find it very hard to read the code and it let's you do things with pointers that make me dizzy just thinking about. I'm more a Pascal or Ada95 guy. Anyway, the first time I looked at the code for some GUI-based OS/2 application, the time to when I closed the file was quite short. So I chimed in the chorus of "OS/2 development being too difficult for me."

Then I started to compile some ported applications for OS/2 myself because they weren't available otherwise or only with different features. I strictly followed the instructions that came with the packages. But when a port maintainer quits and the original application development goes on, it sooner or later gets to a point where changes are required. The issues were solved by asking some questions here and there.

Somewhere along the line, I started to create translations of OS/2 software like XWorkplace and Maul. This also taught me something about OS/2 resources like dialogs, menus, strings, icons, and pointers and a bit about how they are handled.

This magazine is published as both HTML and INF. For many years the HTML files were converted to IPF with Homepage Publisher and compiled to an INF file. This process, however, took very long because you had to manually load and save each and every single file instead of running a converter once. We took a look at HTML2IPF by Andrew Zabolotny and Ulrich Möller. This REXX program provided some features that Homepage Publisher didn't but lacked others. We decided against the switch but later I took heart and had a closer look at the code. It turned out that adding the missing features like support for HTML character entities and colored text wasn't that hard, even for someone with limited REXX knowledge. Now we're enjoying a much reduced effort of creating the INF version.

When it reached the "usable" status, I started using Ogg Vorbis as audio format instead of MPEG. But there was no easy-to-use GUI with FreeDB access available. Up to that point I had used Samuel Audet's CD2MP3PM as a front-end for MP3 encoders. So I thought to myself, "It would be nice if the program could also be used for Ogg Vorbis." Samuel didn't have the time to work on it but gave me the code. Another developer helped me with my VAC setup. I searched the code for the configuration file options, looked up a few C statements in the compiler documentation, and a few lines of additional code later, CD2MP3PM had another configuration option and could create files with an extension other than .mp3.

For quite a while I've been providing OS/2 binaries for HTML Tidy, a handy little tool for HTML coders. It helps with detecting and correcting errors and can also be used as a formatter to improve code readability and as a codepage converter. For a long time Tidy didn't support the common OS/2 codepage 850. If you wanted to use special characters like German umlauts you were out of luck or had to convert the file first. Then one day I searched the code for command line parameters regarding other codepages and found the related conversion tables. I grabbed the book with codepage tables that comes with OS/2 Warp and after a few copy/paste operations and adapting the conversion table, the new support for the ibm850 codepage was ready.

I haven't been fully content with XWorkplace NLS. There still are some hard-coded strings which are not affected by changing the language in the XWorkplace Setup object. NLS in Treesize is not complete and xfix has none at all. So does the JFS configuration dialog of the OS/2 Kernel object. So far, the only way to get these parts to use another language was to create alternative source and resource files, use them to compile the programs, and include them in the NLS packages. The drawback is that you cannot switch back and forth between languages as intended but have to completely replace the executables and DLLs each time. Well, guess what? The next version of XWorkplace will have a completely NLS-enabled Treesize and xfix. The implementation involved a lot of grunt work creating resource file entries and IDs for all strings and replacing the hard-coded strings with the proper calls to load the strings from the NLS DLL. In the stand-alone utilities, certain things have to be done differently from the rest of XWorkplace. When dealing with this huge beast, things can be hard to find out but the people on the XWorkplace development mailing list helped me overcome the barriers. While Treesize already was partially NLS-enabled and provided an infrastructure I could use, xfix didn't. But there's nothing like copy and paste. I copied missing routines from Treesize over to xfix, adapted a few things, replaced the strings, and it was done. Again, I got some valuable help from other developers when I was stuck with an important detail.

So what's the point of all this? Even if you are not skilled at OS/2 programming -- and, personally, I still am far from being what I would call an OS/2 developer -- you can contribute something useful. It doesn't matter if the contribution is a small one. Just imagine many people contributing small pieces. In fact, that is how large OpenSource projects like OpenOffice.org usually work. There are a few very skilled core developers and others with largely varying skill levels who just contribute a piece here and there. Actually, many take their first development steps that way.

Furthermore, don't be awestruck or too shy to ask other developers for help. As long as you don't expect them to do the leg work and hand you everything on a silver platter, most are indeed willing to help. When asking for help, make it clear that your intentions are serious, e.g., by providing a detailed description of what you want to do and what you have done so far up to the point where you are stuck.

But it doesn't have to end here. If you are interested in learning C++, there is an online course at Yahoo groups. This was started by Terry Norton, who had to stop due to injury, and has recently been taken over by Nick Marrow.

Another course lead by Doug Clark deals with Building GUI type applications using IBM's Visual Builder from the Visual Age compiler and is being set up at the VOICE forums.

Then there are the old C, C++, PM, and WPS programming courses at EDM/2, of course, and a more recent C++ course in OS/2 e-Zine.

Good luck! I hope to see many new names in the changelogs of many OS/2 applications soon.

======

We are always interested in your thoughts and views on subjects related to OS/2 and would like to see opinion/editorial pieces, as well as hardware/software reviews and HowTo articles. If you have an idea for an article, why not write one. It's one of the best ways, short of programming native OS/2 applications, that you can help the OS/2 Community. And anyone can do it. Few of our writers are professionals. They are just OS/2 users trying to help other OS/2 users. Please send me your ideas or, better yet, a draft of an article to editor@os2voice.org. Please note our guidelines for submissions to the VOICE Newsletter. There you find suggestions for topics, hints on content, structure and formatting, as well as the legalese.

VOICE Online Update: This month the general member meetings are scheduled on March 5 and 19 at 3PM EDT (20:00 GMT). Everyone interested in OS/2 or eComStation is invited to attend either or both of these sessions in #VOICE on the Webbnet IRC network. For more information on attending online VOICE IRC meetings please see the VOICE Meeting Information page - http://www.os2voice.org/meetinginfo.html.

If you have an idea for a Speakup event, please submit it to liaison@os2voice.org, and we will schedule something. As always, please be sure to check out the updated VOICE Future events Calendar in this newsletter or on the VOICE website at http://www.os2voice.org/calendar.html for more details on future VOICE events.

This month, Chris Clayton takes a look at the enhanced migration support in eComStation 1.2. Read about how well it did on four different setups in Migrating to eComStation 1.2. If you still have OS/2 Warp 4, MCP, or an older eComStation version and want to upgrade, this is for you.

Transferring files between different machines and/or operating systems can be a pain. George W. Archer tells us about the possibilities on old hardware in RAM-driving and Zipping-around-the-SCSI-drive.

Many of today's notebooks come with wireless networking devices without OS/2 drivers available. Also, OS/2 does not support WPA encryption for wireless networking. Daniela Engert has found a good solution for both issues. Read more in OS/2 WLAN with the ASUS WL330g Pocket Access Point.

USB memory sticks are a good means for exchanging data between different machines and operating systems. If Windows is involved and the sticks are formatted with VFAT, long file names are an issue. Peter Verweij reviews possible solutions in VFAT and USB memory sticks.

Finally, we have our OS/2 Tips and Letters, Addenda, Errata pages. If you have any OS/2 or eCS tips you've uncovered, please send them to tips@os2voice.org. If you have any comments or suggestions about the newsletter or articles in it, please send them to editor@os2voice.org.

That's it for this month.

Christian Hennecke, Mark Dodel, Marckus Kraft, and Jason R. Stefanovich
VOICE Newsletter editors


Feature Index
editor@os2voice.org
< Previous Page | Newsletter Index | Next Page >
VOICE Home Page: http://www.os2voice.org