Cross-platform programming for the rest of us
by Alan Zisman (c) 2004 First
published in Low
22, 2004 Mac2Windows
Like many of you, I work amongst a combination of Macs and
Windows PC (and with at least some users who want to try out Linux). In
my case, it's at an elementary school. Schools tend to collect a
hodgepodge of hardware including different platforms from different
Ideally, we would like the kids to be able to do the same work no
matter what computer they're sitting at, so cross-platform software is
a big plus.
A while ago, a grade 3 (as Canadians put it -- only Americans say "3rd
grade") teacher asked a simple sounding question: "Is there anything my
kids can do on the computer that will help them learn to work with
One of the skills that adults take for granted is knowing that four
quarters make a dollar and that two fives is the same as one ten dollar
bill. Kids have to learn this.
There's a nice website: Change Maker
supports US, Canadian, Australian, UK, and Mexican currency, but
frankly, it's a bit too hard -- kids have to mentally do a fairly
complex subtraction and then click on pictures of various kinds of cash
to indicate the right answer.
Talking to the teacher, she wanted something simpler, something that
gave kids an amount and asked them to show the kinds of money they
would use to reach that amount. As I checked around with different
early grade teachers, something like that seemed potentially useful,
but with various levels. The grade 1 kids needed to work with small
change, up to a dollar or so. By grade 3, they needed to be comfortable
with amounts up to about $100. And, of course, being in Canada, we
needed something with Canadian currency, not American.
Step back a couple of decades to the early years of personal computing.
When Time Magazine declared the personal computer its "Machine
" in its 1983.01.03 issue, there was a concept known
"computer literacy." There wasn't much prepackaged software available
yet, and any self-respecting personal computer user of the late 1970s
or early 1980s had to expect to be able to make their own.
For most personal computers, that meant a familiarity with the BASIC
(for Beginner's All Purpose Symbolic Instruction Code) computer
programming language, which was originally developed in 1964 at
Dartmouth University by John Kemeny and Thomas Kurt as a teaching tool.
Steve Wozniak developed a version of BASIC for the Apple II computers,
and Microsoft got its start peddling BASIC variants for most of the
other personal computers of the era. (Little-known fact: IBM originally
contacted Microsoft to license Microsoft BASIC for its then under
development IBM PC; they only licensed the operating system that became
known as MS-DOS after failing to reach agreement with Digital Research.)
When the Mac was released in 1984, there was a Microsoft BASIC for it,
too. But standard BASICs were not a good fit for the graphical,
windowed, mouse-driven Mac environment; they were designed for an
earlier era of text-based terminals. And much of what made the Mac
Mac-like was buried deep in Apple's Toolbox code; it was possible to
access it with MS BASIC, but it wasn't fun or easy.
Graphical environments like the Mac OS or MS Windows make life easier
for users but harder for programmers. And BASIC was getting a bad rep.
Many programs made a lot of use of GOTO statements for jumping around
to different parts of the code; programming professionals derided this
as "spaghetti code," a tangled mess that was hard to follow.
With the increasing availability of commercial software, there was less
need to write your own code to get your work done. And just as people
can learn to drive a car without having to become auto mechanics few
computer users saw any need to learn to program their own computers.
Apple's 1987 release of HyperCard was a step towards changing this, a
way that nonprogrammers could create graphic and friendly computer
applications. But while the Mac version was wildly popular, similar
programs failed to catch on amongst PC users running DOS or Windows.
Instead, Microsoft went back to its roots in 1991 and released Visual
Basic, initially with versions for Windows 3.0 and DOS.
Visual Basic simplified program development for graphical environments
by including an environment similar to a desktop publishing program;
users could create an interface with windows, buttons, and standard
controls without having to program them from scratch. Controls could
then be attached to BASIC code, modernized to do away with those ugly
GOTO statements, but including modern subroutines and modules.
Visual Basic (VB) was a big hit; it unleashed thousands of wannabe
programmers, and the resulting flood of VB applications (covering the
full range of good, bad, and indifferent) played a roll in making
Windows massively popular. It's no surprise that Microsoft kept later
versions of VB Windows-only (though the related Visual Basic for
Applications is used as a macro language in Microsoft's Mac Office
Enter REALbasic in the late 1990s. REALbasic started life as a Mac-only
Visual Basic look-alike; a similar drag and drop environment for
creating user the user interface, and similar modernized BASIC-style
code behind the scenes.
In fact, REALbasic includes the ability to import Windows Visual Basic
project code, and, with a bit of massaging, use it to produce
I am not now and have never been a programmer. Over the decades, I've
dabbled a bit in writing code in BASIC. For instance, on my website,
you can download copies of a BBS-simulator that I wrote long ago for my
school district, letting classes simulate the experience of logging on
and poking around the BBS that the Vancouver school system ran for
educational use. At a time when a school was lucky to have one computer
connected to a phone line for online activities, this let a lab-full of
students get a taste of being online. There's even a version in MS
Macintosh Basic. (I just gave it a try, and it mostly works in Classic
mode on my Panther-powered system: www.zisman.ca/files/Ed-Net.sit
While I've done some work with Visual Basic, and now with REALbasic,
I'm nowhere near a guru with any of these development environments.
There are lots of helpful REALbasic resources online, starting with,
but not limited to, REALsoftware.com.
Like Visual Basic, REALbasic is extensible; third-parties can add to
its capabilities with plug-ins. As a result, would-be programmers don't
have to reinvent everything from scratch. If a feature isn't already
built-into REALbasic, there is often a plug-in available that already
provides the feature you need. A quick search for "REALbasic" at
Versiontracker.com, for instance, listed 132 downloadable plug-ins,
many free, others shareware or commercial.
As REALbasic evolved (it is currently up to version 5.5), it added
support for the Internet and for media types including sound and video.
But more importantly for my purposes, it became cross-platform.
Relatively early, REALbasic users on the Mac were able to create
Windows applications! Later versions supported both Mac Classic and
OS X environments. Still later, REALsoftware released a
Windows version -- this version can load projects created with the Mac
version (and vice versa), though some third-party plug-ins may only run
on one platform or the other.
Currently, REALbasic 5.5 comes in Mac Classic, Mac OS X, and
Windows versions. The Professional edition of any of these versions can
compile code into programs for Mac (Classic and OS X),
and now Linux as well. (The Standard edition can only create
applications for the OS it is running on).
For me, that's a killer feature -- the ability to code something once
and then compile it so that it will run everywhere.
"Write once, run everywhere" is the promise of the Java programming
language, but Java programs have tended to look ugly and run slowly,
dependent on the quality of a virtual machine for each operating
system. Compiled REALbasic programs run quickly and use the standard OS
widgets and components for each operating system; the Mac OS X version
gets rounded, glowing buttons, while the Windows versions gets
There's still a learning curve. My 1980s-era BASIC background has some
carry over; I can write IF-THEN-ELSE statements and DO-UNTIL loops, but
I'm still fuzzy on a lot of concepts. (Thanks to fellow Vancouver
teacher and Duet
programmer Peter Findlay for getting me through a number of rough
You can look at the current version of my money program, Exact Change,
in Mac OS X, Mac Classic, Windows, and Linux versions, since
was built with REALbasic.
One of the things I've realized: Computer programs are never finished.
Aside from getting the obvious bugs out, every version leads to ideas
for how to go further. The original Exact Change evolved into a version
with different levels for kids in grades 1, 2, and 3. Then it grew to
offer practice using money to help count by 2s, by 5s, and by 10s, and
to help learn place value.
The current version uses Canadian currency. I would like to
internationalize it and let users choose US currency -- or Australian
or British. I would like to be able to print out the students' work.
To do those things, I'm going to have to learn more about working with
But another thing I've realized: Creating computer programs is
addicting. Like many computer games, there's a real rush when something
works. And there are a lot of dead ends. But I'm finding myself
thinking of strategies and planning modules and trying to squeeze in
time to just add one more feature.
A full version of REALbasic (Classic, OS X, or Windows) can be
downloaded from www.realsoftware.com
users can register with REALsoftware and receive a license key that
enables the downloaded program to work for 10 days. (The trial period
can be extended for an additional 10 days). Programs created during the
trial version will run for 15 minutes and then shut themselves down.
REALsoftware sells the software in a variety of packages, both
downloadable and physical. A Standard license (US$100) can be used with
one downloadable copy of the Standard edition. A physical copy
(included printed documentation) starts at US$150.
The cross platform-capable Professional edition costs US$400 for a
download license, US$450 for a physical copy. Academic pricing (with
proof of academic status) is about 30% cheaper.