Hacker News new | ask | show | jobs
by cortesoft 724 days ago
It is hard to separate out HyperCard from where I was in life when I was using it.

It was 1991, my family had just bought a Mac LC, and I was 8 years old. I had learned BASIC from reading an old book from 1978 that a co-worker of my dad had given me when I expressed interest in computers. That same friend said I should try HyperCard.

It literally changed my life. It is hard to explain to people who have grown up with the internet, but at this point my family had no internet access at all (we didn't even get a modem for a few more years) and I didn't know anyone who knew how to program. Everything was self taught from reading books that I either got from my dad's co-worker or from the library.

HyperCard was so easy to learn for me as a kid. For one, it was all visual. If you wanted to add a button for someone to click, you would select "Add Button" and drag it to where you wanted it to be. In addition, you could learn how to do things from other HyperCard stacks by clicking on various buttons and reading what the script for those buttons did.

Since I was self taught (and very young), I didn't know anything about data structures or algorithms. However, HyperCard made everything intuitive to me. To persist data, you could output it into 'fields' (which like buttons, could be created by clicking 'new field' and placing it where you wanted). While I later learned how to make these fields invisible, when I first started I would just make them really small and put them in a corner behind something else. I would then write data to them from button scripts, allowing me to persist data.

Since I didn't know about data structures, I would treat everything as strings that I would store in these fields. I didn't know what an array was, so I just would create a long string of comma separated values that I would read in, act on, and then write back out to the fields. I created primitive databases by having each line of the field be a different record... I had never heard the term 'csv' at the time, but it just seemed natural to me.

Debugging was easy; I could just expand the fields into my visible view to see what was being written to them. Things being 'object oriented' was very natural, since everything in HyperCard is a visual object you can interact with.

I learned SO MUCH hacking around with HyperCard. It made me love programming, and it was so much fun. I didn't even realize how much I was learning until much later in life; I avoided majoring in computer science because I feared ruining my favorite hobby if I pursued it as a career. Later (after not finding an alternative to pursue after graduating college) I decided to give software development a try, and I realized how much I already knew just from HyperCard. Event driven architectures just made sense, because that is how HyperCard always worked. I had a pretty good grasp of data structures because I had created them visually as I needed them, without realizing what I was doing.

33 years later, I still get a thrill from programming that HyperCard instilled in me.

So yeah, HyperCard changed my life.

1 comments

It’s funny, the graphic nature of Hypercard is what put me off of it.

It was essentially MacPaint with a few controls and a scripting language. While fundamentally it was persistent cards with fields, buttons, and actions, as presented with the assorted demos, it was graphically rich.

And myself, I am not graphically rich. Hardly. I find it intimidating. I find the web intimidating for the same reason. I really struggle trying to make a web page, even with a zillion templates. For whatever reason, it’s very hard for me.

It’s a cool system. It was a bit hamstrung later on by being trapped with its original card size. Even as screens got larger.

I am usually the same way, and have zero graphic design sense.

HyperCard never felt like it does designing a web page... i just placed buttons wherever, and they were never properly lined up in my stacks. All slightly different sizes, not aligned, horrible UI choices all over the place... but I never really concerned myself about it because I very rarely shared my projects. They were for myself.

Yeah, I could never do serious front-end work, I just can't do (and also don't enjoy) making anything graphical.

That said I have made a couple web apps for personal & work use (and I have a Neocities) and it is certainly a freeing experience to write them without giving a crap about aesthetics or design. I get the job done, it's not pretty, but once the functionality's there I'm happy.

Fighting with CSS to make things align properly is the least fun aspect of this, but it is pretty fun to figure out the logic to generate the HTML, interact with the backend, have some JavaScript for basic interactivity, etc.