Doug Simons on xCards
Current Occupation: Sr. Software Developer, Redstone Software
What occupation did you have when you last worked on your HyperCard clone?
The same -- I continue to work on SenseTalk, both in and out of my job. While SenseTalk isn't currently part of a HyperCard clone (HyperSense died along with the NeXT computer), the language happily lives on as the scripting language in Redstone's software testing tool, Eggplant.
How did you get into this job?
I started programming when I was in high school. By volunteering at the computer center of the local state college (in California) I was able to get access to a time-shared computer. The computer was located at the other end of the state, and we accessed it through teletype machines using 110 baud modems. It was exciting to enter commands and watch the computer type back its responses at a blazing 10 characters per second!
I played a Star Trek game that they had on the system, and taught myself to program using a dialect of BASIC. I wrote a program that generated random poetry. It eventually became fairly sophisticated, selecting words from multiple lists of words that I entered along with the number of syllables and codes for rhyming sounds (I don't think I ever got enough words entered for the rhyming to really work, though).
Did you have a HyperCard (clone) related job before you started work on HyperSense?
Did you work with HyperCard before you started working on HyperSense?
No. It seems that I've often taken a slightly unusual approach to projects that I undertake. In the early 80's I wrote a spreadsheet program without ever having used a spreadsheet. To understand what features were valuable in a spreadsheet I read a magazine article that compared the features of VisiCalc and SuperCalc.
When I started creating HyperSense I had never used HyperCard. I read some articles about it and was fascinated. I've always been very excited by tools that offer new and innovative ways for people to work. I got Danny Goodman's HyperCard Handbook and read it cover to cover.
When I actually started building HyperSense, although I was trying to create a more advanced tool that would eliminate HyperCard's limitations, I decided that it should be compatible with HyperCard as much as possible. So a few months into development I bought my first Mac (the new Mac Classic, which was less than $1000, as I recall) so that I could actually run HyperCard. I mainly needed to be able to try things in HyperTalk to get the details right. We used "HyperTalk 2.0: The Book" as our main reference, which was a huge help. But with pretty much any language, the documentation only tells you so much, and you have to try things out to truly understand all of the nuances.
How is/was working on HyperSense/SenseTalk
It's been wonderful. I've always loved creating things and solving puzzles. And building tools that enable people to work in new ways. The anticipation of that -- of helping people to have a wonderful, satisfying, and ideally a mind-expanding experience -- is what really motivates me. I want to make something that people can sit down with and get a sense of wonder, a realization of the possibilities that these amazing machines offer. I want them to feel empowered and have the sense that they can do new things that weren't possible before.
What was your first job, ever?
I had a newspaper route when I was about 10.
Who was your hero/idol at that time?
I don't recall having a hero at the time, exactly. But J.R.R. Tolkien became a major influence on my life in the late 60's, so I guess I'd say that Frodo and Sam, and Strider, were probably my heros at that age.
Who is your hero/idol now?
I've never really been big on idolizing people. But there are many people I admire, mostly people who have had new and creative ideas or ways of expressing things, or who have the courage of their convictions and are willing to stand up for them in the face of adversity.
What is the most important thing in life for you?
Learning and growing. And somehow sharing some of what I've learned. Expressing myself through the things I create.
When, how and by whom did you get introduced to HyperSense?
Hmm, well, I guess you might say I introduced myself to the idea. :-) I first heard about HyperCard not too long after it came out in 1987. In 1988 I started Thoughtful Software and began thinking about creating a product like HyperCard. I originally thought of making it for the Amiga, but when Steve Jobs announced the NeXT computer in October of 1988 I was excited by its amazing technological advances and decided to develop for it instead. As it worked out, I wasn't able to get a NeXT computer until November of 1989, and didn't make the final decision to create HyperSense and begin work on it in earnest until April of 1990.
What impressed you the most about HyperSense?
In looking back, what impresses me most is that we were actually able to create everything that we did in such a short time with so few people!
Regarding HyperSense itself, there were lots of innovative features that I was proud of, including multiple layers of objects on a page, WindowFrames (which let you build interfaces outside of your stacks), and the ability to create palettes of fully-scripted objects that could be dragged onto a page.
What do you consider your main contribution to HyperSense?
I was too involved with every aspect of HyperSense to really single anything out.
It might be more interesting at this point to shift the attention to SenseTalk and more recent developments. Following the demise of NeXT, and prior to its rebirth within Apple as Mac OS X, my work in the HyperCard clone arena lay mostly dormant for a few years. Starting in around 2000, I began again, but this time focusing on SenseTalk, my xTalk (HyperTalk-derived) language. There were a lot of things I had always wanted to add to the language, and during this second incarnation of SenseTalk most of those features were able to be included.
I see my main contribution to the xTalk languages' ongoing evolution to be what I think of as the unification and integration of the language. For example, the differences between the set and put commands bothered me. You could put values into a variable, but properties had to be set. So I changed the set command to let it set the value of any container. This led to the expansion of the concept of a "container" to include properties, and also files. I think it works very nicely. I also implemented arrays (lists) in a way that integrates seamlessly with ordinary values and makes use of chunk syntax and terminology.
Please describe HyperSense/SenseTalk in one sentence
HyperSense: A personal software construction tool and flexible information machine.
SenseTalk: An approachable, readable, powerful, and very English-like scripting language.
Is there any particularly clever solution you applied to SenseTalk you'd like to describe in excruciating detail?
I already went on at some length about SenseTalk. The only thing I'd like to add is that I feel inordinately proud of one particular word that I added to SenseTalk's vocabulary. I dare say that it may be the only programming language in the world that recognizes the word "penultimate" (meaning next-to-last). So for example, "put the second thru the penultimate characters of RELATED" will display "ELATE". I doubt that anyone has actually used the word in a real script yet, but for some reason it makes me smile to think about it anyway.
If you could add one more feature to SenseTalk, what would it be?
If I get time I'd like to add some higher-level list operators. Also database access done right.
When, how and by whom did you get introduced to HyperCard?
I guess I really didn't know anybody who had a Mac at the time, so I first heard about HyperCard from reading magazine articles (probably in Byte, which I read at the time, although I don't really remember now).
What impressed you the most about HyperCard?
I loved the visual-ness of it -- the fact that you could create an actual functioning interface by drawing a button on a card. It was magical.
What do you consider your main contribution to HyperCard?
See my earlier answers. Also, I remember suggesting the "is among" operator at one point on the xTalks list -- then Scott Raney implemented it in MetaTalk long before I managed to include it in SenseTalk.
Please describe HyperCard in one sentence
A dynamic personal information manager and construction set.
If you could have added one feature to HyperCard, what would it have been?
Since I wasn't really a HyperCard user, all of my wish-lists were for things I could add to HyperSense that HyperCard didn't already have.
Do you think there is a new HyperCard today? What is it?
Well, Revolution and SuperCard clearly seem to be the main applications carrying on the HyperCard legacy directly, although many technologies have been influenced and impacted by HyperCard.
Do you think there is still a need for a new HyperCard?
I wonder. I think there may be a need for a tool that appeals to a more general audience. At least I sometimes dream that such a need exists... ;-)
What do you think the competing products did better than you?
Oh, lots of things. There have been plenty of additions made by everyone to the core ideas established by HyperCard. Sometimes I've been disappointed by the particular way that new features were added in other products. But there have also been plenty of times that they've gotten it right and I've "borrowed" their ideas. ;-)
What single thing did your application do better than the competitors?
File access. Treating a file as a container makes this so easy. And as far as I know, no other xTalk does this (but my knowledge may not be up to date).
Did you ever get to meet any of the competing clone developers?
No. I spoke to Scott Raney (of MetaCard) on the phone a couple of times and we almost got together once, but I've never actually met any of the other developers. I guess I don't get out much. ;-)
Why did you start writing a HyperCard clone?
The whole concept was just way too exciting to let go of. I thought I was crazy to attempt it, but I couldn't leave the idea alone.
Do you think HyperCard clones are/were a good thing?
Absolutely. HyperCard was a brilliant innovation that deserves to be evolved upon for a long time yet.
Is there anything else you'd like to say?
Thanks for the opportunity to reminisce about the early days, and to reflect on some of the things that make HyperCard and its descendants special.
Thank you, for taking the time to answer all those questions, and for writing the only programming language I know of that can handle numeric constants like "two-hundred and seventy-six" :-)