Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Bryan Carter, who shares stories of his days programming HyperCard stacks at Apple".
Who are you?
My name is Bryan Carter. I live in the Northwest region of the U.S. I’m a Programmer/Systems Analyst for a private financial institution.
What do you do?
I worked for Apple in the late ’80s to late ’90s on multiple Mac systems, hardware & OS, and related peripherals, including the Color OneScanner. My involvement was within Integration Quality (quality assurance) and Test Product Supervisor.
At Hewlett-Packard (late ’90s to early ’00s) I worked on several Color LaserJet printers, with the CLJ8550.
I became a “Professional Student” in the early to mid–2000s and finally completed my B.Sc. in Computer Information Systems.
As mentioned previously, I now work for a private financial institution where I’ve been employed for the past 6 years.
Over the years I’ve also worked on a number of non-profit projects. For the Santa Clara Countly Public Library Reading Comprehension Program (1989 to 1992) I used HyperCard to program a series of modules to enable patrons from 3 to 83 learn to read English, including English as a Second Language (ESL). Over 500 successful “graduates” in the 2+ years it was in use.
Chris Maunder invited me to do a Coder Interview because of some past programming endeavors I posted about in the Lounge. The question: Anyone here programmed using AppleScript?
In that “answer,” I claim that, while I worked at Apple, I started Apple’s “iProduct” naming scheme, which took 10 years to “blossom” (be prominemently used) with the iMac.
I created the first-ever HyperCard-based email server/client system, and designed the first-ever “intelligent” HyperCard-based system, a HyperKiosk (more on this below). It was used at a number computer tradeshows throughout the country in its heyday.
What I didn’t mention (in that above URL) was that of my creating the first-ever complete Tradeshow Kiosk System, or HyperKiosk (it was made using HyperCard). Now, this HyperKiosk had it’s origins from within the then-Apple Human Interface Group (HIG), the team which designed how the Mac GUI would behave, and of which I was a part of for while.
My HyperKiosk included more than just vendor information tied to a graphical floor map that you could search & click on. The HyperKiosk had:
HyperMail - Intra-tradshow email for attendees and vendors; pre-registered participants were given a special password when they checked in. New registrants would be entered and provided a password.
HyperSpots - local restaurants & entertainment options highlighted (they paid $20 for the “advertisement”). You type in a food category, and it showed you a list, sorted by travel distance from the Tradeshow center.
HyperSchedule - this amazed tradeshow participants the most. It allowed registrants to enter “tags” (yes, I called them ‘tags’ way back them; a.k.a., keywords), of which a tag got a rating of 1 [low] to 5 [high], of interests which they had for the various workshops the tradeshow offered. They even included tagging preferred vendors and special events vendors held.
From this data, suggested itneraries were created for them. The itinerary was held on the “HyperServer” (basically, a HyperCard stack [file] with their entered choices). They could come back at any time and modify their tags and new itineraries would be generated.
Best of all, when participants checked their itineraries throughout the day, if a vendor left or a new one came, in or a workshop was changed, cancelled, added, they’d be notified in their HyperMail that an updated itinerary was available.
HyperStuff (& HyperWhiners!) - participants loved getting free stuff; who doesn’t? A later HyperKiosk introduced HyperStuff, wherein a vendor would enter a product for a drawing and some questions to present. Participants would answer those questions and then be entered into a drawing. Names were “drawn” (I used HyperTalk’s Random generator to get a number and then round it to the nearest participant’s internal sequential number) and the participant received a HyperMail they won and to come to the vendor by such and such a time to get their prize.
Some questioned supposed winners of bigger-ticket items, so we introduced “HyperAuditors,” a team of volunteer technical professionals who “validated” the authenticity of the code, and a volunteer CPA (a close friend of mine) who “validated” the winners. Somehow, the HyperKiosk became “aware” of the “HyperWhiner” participants who didn’t win as often. ;-)
OK, the biggest install (that begin the most Mac Stations and most users) was MacWorld San Fransisco 1992. A new product was being introduced that allowed a form of wireless networking. Basically, it was an infrared device used to transceive the AppleTalk networking protocol signal.
MacWorld was being held in the Moscone Center. It has escalators taking you from the ground-level floor down to the tradeshow floor. Being with Apple, I got the vendor to donate 6 of these wireless wonders. I “wirelessly networked” Macs at the top of the escalator down to Macs on the tradeshow floor (80-foot distance), including one station being 200 feet away; a big thing back then.
All this was GREAT! … until the sun came along from 3:00 PM to 4:33 PM through the glass foyer area directly on the downstairs escalator infrared sensor, and did so for each of the next 3 days. We laughed our keesters off when we initially came upon this. Solution: run a backup AppleTalk cable during that time.
OK, how does this link into CodeProject, other than y’all blabbin’ about it?!
A most excellent inquiry!
I created the first-ever ‘online’ graphical / media-rich CodeProject!! But we called it “HyperCode”. A repository of example (HyperCard/HyperTalk) code (“stacks”), articles, messaging, and the likes, all in HyperCard. Note: In HyperCard, a file was called a “stack”. The stack basically was a self-contained version (and all capabilities therein) of what we now know as a website.
OK, “onilne” is relative, in that it was a group of 5 LAN-base Macs which had a single server Mac (which I controlled) hooked into Apple’s then internal world-wide network known as AppleLink.
“Hyper-hackers” (HyperCard coders/programmers) would come to the iHUG meetings and access their messages, get example stacks/code, read or submit an article about something - all related to HyperCard, of course. I recall we had a total of 2,000 members, 8,300 stacks, about 4,800 articles, and well over 75,000 messages when I closed ’er down in 1993.
Current Day Project
I'm presently working on a volunteer project I call C.H.A.S.E., short for Computer-Human Adaptive Syndactic Ecphasis. "Computer-Human Adaptive" means that the computer needs to adapt to the human using it. "Syndactic" means "digits", as such our fingers (and hands) are sometimes referred to. "Ecphasis" is "a explicit declaration".
I'm writing prototype software using a perceptive camera that sends data to the computer, of which that data is recorded movements of fingers and hands within the camera's detection range (3 inches to 18 inches). That recorded movement data can then be used (programmed) to cause the computer to do task / action which the person is, well, using their syndactics to explicitly declare (echpasis) what they desire to be done.
This project is geared toward those with physical handicaps / disabilities with their fingers & hands. These disabilities range anywhere from those with arthritis, carpel tunnel syndrome, and more challenging ones such as cerebral palsy.
Consider a person with cerebral palsy. Dishearteningly, they have limited movement & use of their fingers and hands. Some fingers might even be 'stuck' together because they don't have the finite muscle control most of are blessed with.
In short, I purpose to use my syndactics toward blessing those who deserve even more the blessings as such technology can bring, even more blessing than I've been graced with. I want to enable others to be able to CHASE their dreams even better than I can.
What is your development environment?
I have two dev environments: Work & Home.
Work: A Windows system with a version of Visual Studio.
Home: Mac OS X with Windows in a virtual machine. On the Mac side I run XCode, and on the Windows side I run Visual Studio.
Well, here’s another story from the old Apple days related to learning something new…
I had a Mac IIfx with a single Floppy Disk and a 40MB hard drive (1990s era).
I used Mac Programmer’s Workshop (MPW, Apple’s IDE at the time) to run through a series of Golden Master (GM) validation tools on the then-floppy disk-based Mac OS install disks, which took 36 hours, most of the time “waiting”, but alot of it was tedious copy/pasting of “Info” screen shots of the floppy disks. While it was awesome double and even quadruple “overtime” pat, it was LOOOOONG!
So, while I’m “waiting”, I set up another Mac IIfx and I dig deep into MPW’s toolbox and discover ways to automate much of what people were doing by hand.
In the end, DURING that 36 hour process I had programmed (automated) the process down to 9.5 hours total, with the same results. With my 20 hours of “research & reengineering/programming”, plus running my solution, I was done in 29.5 hours. I waited the other 6.5 hours to “validate” my results against the “true” master.
I showed everyone the next day that I could get the GM disk validation done in 9.5 hours.
Most everyone, while elated, were also not exactly letting me become their best bud for drastically reduced their paychecks of all that OT. Had to pay for many a beer over the next few months at “Bandley 9”!
What is your coding pet peeve?
Not a pet peeve, but a preference for camelCase. itsThatSimple. Really!
How did you get started programming?
In about 1981 I had a TRS–80 with BASIC. I wrote a word-search puzzle application. The finale of this endeavor was 2 word-search puzzles with the student’s last names of the then high school graduating class of 1982, of which the puzzles were printed in the school’s 1982 yearbook. It was cool in that my teacher “signed off” on the project in my yearbook (his initials). Of course, I put my own “easter egg” words in there, religious that they are. Since my brother graduated that same year (’82), my last name was included by default.
My true first commercial code with a company went something like this:
HyperCard was a product Apple came out with in 1987. HyperCard was billed as a “software erector set”. HyperCard truly was the precursor to what we now know as a web site. It had graphics, database capability, backgrounds, cards (pages), media (sounds, video), links. In short, in its hey-day, you could do in HyperCard what you can do with a web site.
In my employment ventures with Apple at the time, I more became a “champion” of HyperCard to the Mac community at large (well, “at-world”, to be more accurate!).
I was actually brought on to Apple as “copy-boy”, contract at that, working within what was then called the Apple Human Interface Group (HIG), the group which defined the Mac interface as we know it. Well, technically, Larry Kenyon came up with the interface at Xerox PARC (xPARC). Larry (and others) were stolen, er, sorry, “hired” by Steve Jobs from xPARC. Larry is my step-Dad’s 2nd cousin; a relation I learned years after I left Apple in ’97.
My first “assignment” as “copy-boy” was to make 25 copies of this user manual for a product which was code-named “WildCard”. I was 21 at the time. I did have a year of BASIC in high school on a TRS–80 some 4 years earlier, though hadn’t programmed a computer since.
Well, with as slow as copiers were back then, duplex at that, and 20 single-sided pages per minute times 600 duplex pages. There wasn’t anything else to do in that small “Copy” room with the huge Xerox copier except to read this WildCard User Manual (WUM).
I started my copying assignment on a Wednesday afternoon.
Back then, anyone could and did literally “live” at Apple days on end. And such I did for the next 5 days. I went home only to shower a time or 2 and change clothes.
Come Monday morning, I read the entire WUM 3 times over, along with completing making those 25 copies (which I actually finished on Saturday at 2am; they expected me to be done by the following Wednesday, this given how busy the copy room was during the day…). In short, I’m confident I memorized the WUM without having even used the application yet.
(Note: If anyone in the then-HIG department cares to “refute” any of this, I have a copy of the video of y’all playing strip poker [a spoof vid for an internal event]… and a YouTube account!)
I was given other various “copy-boy” type assignments through that first full week, though my mind/passion was on this WildCard application.
Several internal teams were using WildCard for various things. I helped out those teams resolve programming issues they encountered using WildCard.
Over the years, it’s pretty much been learn-as-I-go-from-whatever-and-whereever-I-find-it. There’s not been one or two major influences. I don’t do Twitter, LinkedIn, GitHub, Facebook or other online resources.
What advice would you offer to an up-and-coming programmer?
Get your college degree early, especially before you try and start a family.
Choose a profession where it (e.g., new programming languages) don't change every 3 ~ 6 months!