top | item 40229549

Ask HN: Modern day equivalent to HyperCard?

148 points| merubin75 | 1 year ago | reply

My son is 11 and his school uses Scratch to learn basic programming concepts.

I remember being introduced to HyperCard in the late 80’s/early 90’s. Does a modern day equivalent exist?

Caveat: I’m a marketer, not a coder (said in my best “Bones” McCoy voice). But I thought this would be a fun father-son thing to learn together and help expand his coding skills.

88 comments

order
[+] rickcarlino|1 year ago|reply
1. Decker is the closest modern equivalent https://beyondloom.com/decker/

2. Bubble is easy for non-coders. https://bubble.io/

3. Gambas BASIC is a bit more technical, but will give you hard 90's vibes (Linux only) https://gambas.sourceforge.net/en/main.html

I think the advent of LLMs might make these types of tools more accessible to non-coders, or at least I hope so.

[+] anonzzzies|1 year ago|reply
Bubble doesn’t seem too much to do with HyperCard and as coder I find it almost unusable. I understand it but it’s so finicky…

I would say a modern HyperCard is LiveCode (outside Decker).

[+] AstroJetson|1 year ago|reply
Thanks for sending me down the Decker rabbit hole. Another 4 hours of my life vanished, but I had a great time. The retro look covering a really interesting language has me hooked.
[+] creer|1 year ago|reply
Scratch is far better and deeper than most people think. It's also interesting because the developer interface forces thinking for yourself on things like how to manage complexity in your project, or how to get different modules to communicate - and that's useful (if only helpers thought to point that out).

It's very unlikely the school is digging deep in Scratch. Most likely they are keeping to the very basics - and a kid can go deeper on their own... or not.

As the next step, moving to python or whichever other language is okay. And I doubt very much that at 11 they are already exhausting Scratch. A web browser and javascript is fine too.

[+] musicale|1 year ago|reply
> A web browser and javascript is fine too.

There seem to be many online environments where you can type your {html, css, javascript} code and run it. For example, MDN has one at

https://developer.mozilla.org/en-US/play

(Unfortunately it has advertisements... which I suppose is incentive to learn how to use custom stylesheets.)

I wish there were an offline environment like that built into firefox. You can bring up a javascript console, but it's not really a friendly development environment. And something like visual studio code is capable but large and complicated.

Unfortunately for javascript in browsers, the browser DOM is complicated and unwieldy. It's hard for beginners to figure out the right subset/features of (html, css, javascript, DOM) that they could use to create simple apps and games.

[+] jacknews|1 year ago|reply
It is deeper, of course it's turing-complete, and I do applaud how easy it is just to get started, and make something, which is absolutely the key to getting kids interested and keeping them so.

But I take huge issue with some of the 'deliberate' limitations. No function returns? No way to share code blocks? These are some of the fundamentals of code.

In my experience these limitations present a big barrier to kids who want to just get some things done, and teaches a very hacky style to those who are willing to learn the complex workarounds to overcome the barriers. Ultimately it leads to the majority being 'confined' to doing typical simple scratch projects, and a small 'elite' who go beyond. Possibly the opposite of what was intended.

[+] AstroJetson|1 year ago|reply
I do elementary school Robotics, we program the robot in a version of scratch / blockly. There is a huge amount what you can do.

The programming club does some pretty cool game things.

[+] SeanLuke|1 year ago|reply
> Scratch is far better and deeper than most people think.

Scratch has no local variables, no recursion, no pointers or references, and no data structures, correct?

[+] adamspiers|1 year ago|reply
Check out https://pytch.org/ which is a great way for kids (or anyone) to transition from Scratch to Python. Built by a friend of mine.
[+] WillAdams|1 year ago|reply
I really wish Livecode hadn't pulled their opensource/Community Edition (and I'd be very glad for someone to do something with that code).

Gambas is something I keep wanting to try and seems promising. EDIT: Other BASIC options include Twinbasic (looks to be stalled though) and Small Visual Basic.

I did one small app w/ Python and TKinter, but it was a dense wall of text/code when I was finished and not something I was interested in revisiting. I keep seeing suggestions that Python w/ QT support is supposed to be quite good.

One unlikely option is Google's Blockly (which I wish had a stand-alone desktop implementation which would make graphical programs), which has a nifty version implementing OpenSCAD:

https://www.blockscad3d.com/editor/

which I've used a fair bit. Moving on from there, there is: https://github.com/derkork/openscad-graph-editor which has the advantage of encompassing the entirety of OpenSCAD. It's also possible to wrap up Python using PythonSCAD.org

If you're willing to consider other node/line connection systems two promising options are:

https://ryven.org/

and

https://nodezator.com/

What sort of coding, on what sort of projects do you want to do?

FURTHER EDIT: Two other programming environments to consider:

https://www.nodebox.net/

and

https://processing.org/

[+] techdragon|1 year ago|reply
How have I never seen that OpenScad Graph Editor!!!!

I work a lot with openscad for projects with my 3d printer and it’s been a real pain adapting some things I find to save any time, because the language is a bit odd and using libraries came really obfuscate what’s going on…

Thank you so much for sharing it!

[+] merubin75|1 year ago|reply
First, thank you for the suggestions.

To answer your question: I really don’t know yet. The request comes from wanting to do a project together, and also for him to learn valuable future skills. He loves Legos, Spider Man, and Star Wars, so we will have to wait and see where his imagination goes.

[+] dfabulich|1 year ago|reply
I think you and your kid would have fun designing a Choose Your Own Adventure game in Twine. https://twinery.org/

FWIW, there are a bunch of simple modern GUI builders, including GUI builders for the web, but none of them are popular, due to the sweet spot of supply and demand that Hypercard hit.

When Hypercard launched, it came with every Mac, it was free, and there was nothing else like it available on the Mac. On the Mac, the alternative to Hypercard was to layout UI widgets in code, with no GUI builder at all, or eventually to pay $$$ for a professional-grade IDE like CodeWarrior. As an entry-level user with no budget, if you wanted a GUI builder for the Mac, you got Hypercard, or nothing. This created a community of Hypercard enthusiasts.

Furthermore, when Hypercard launched, Macs had a standard screen resolution. Every Mac sold had a screen resolution of 512x342 pixels, so you could know for sure how your cards would look on any Mac. Supporting resizable GUIs is one of the hardest things to do in any GUI builder. (How should the buttons layout when the screen gets very small, like a phone? Or very wide, like a 16:9 monitor?) Today, Xcode uses a sophisticated constraint solver / theorem prover to allow developers to build resizable UIs in a GUI; it works pretty well, I think, but it's never going to be as easy to learn as "drag the button onto the screen and it's going to look exactly like that everywhere."

The last issue is the real killer for modern Hypercard wannabes: it's a small step from a web GUI builder to raw HTML/CSS. You don't have to pay big bucks to have access to professional-grade HTML, CSS, and JavaScript. Sure, they're not that easy to learn, but you can teach a kid to write interactive web pages, no problem.

As a result, the demand for a simple GUI builder is lower than it was for Hypercard, and even when you do capture a user, they tend to outgrow your product, and there are a zillion competitors, so none of them can build a community with real traction.

[+] zqfm|1 year ago|reply
I cut my teeth on HyperCard and I'd say that the web (HTML, JavaScript) is a pretty good successor. Getting an image on a page and then linking between pages is quite satisfying when you're starting out. Something like a basic web page is great for a beginner but there's the whole gamut from there up to 3d games and virtual machines (wasm) to advance to when you're ready.
[+] jhbadger|1 year ago|reply
In the beginning of the Web the connections between Hypercard and the Web were known and intentional -- many early web browsers also included HTML editors because it was thought the Web would be a two-way street with users both reading pages and writing their own. The author of ViolaWWW (an early 1990s web browser) originally created it as an attempt to bring something like Hypercard to UNIX

https://en.wikipedia.org/wiki/ViolaWWW

[+] w10-1|1 year ago|reply
Hypercard for coding was interesting because it relied on message-passing with a handler hierarchy that introduced modularity questions.

Small, accessible and visual languages are interesting for learning to the extent they enable you (your son) to explore on his own. But they're very frustrating because the delta between what you want and what you can do is so large, especially now that we're miles beyond hypercard/scratch in functionality.

The essential idea of coding is encoding: what behavior do you want, and how can you (most economically) represent the data and processes required?

Consider whether thought experiments would be a better way for your son and you (as a marketer) together to learn about encoding. If you focus together on learning how to think like a coder, it could be fun (instead of frustrating to drag through arcane syntax of toy languages).

The most powerful encodings are scale-invariant; the most interesting are generative. So you could start by thinking about the game of life, or fractals.

The other thing for an 11-year-old is teaching them to learn how to learn. Go with him down a rabbit hole of programming tiktoks/videos, and then step back to reflect on each, try to come up with categories, figure out how to find related topics and approaches, and summarize your results - then review them later and pull them into conversations to reinforce them. Start to see the math and encoding of life situations. Build mental models for getting frustrated (and reward systems generally), the game theory of competition, etc. -- things that will be relevant in teen years.

[+] darrinm|1 year ago|reply
Hatch (https://hatch.one) has many of the characteristics of HyperCard plus its "projects" are full featured, shareable and remixable (if you want) web pages.

- Easy drag-and-drop interface with a library of images, audio, video, etc.

- Programmable with Visual Scripting for an easy on ramp to adding logic and behaviors.

- Programmable with Javascript if that's what you want to learn.

- HTML "components" if you want to dig into HTML, CSS and all that good stuff.

- A few tutorials to help get started with physics, animation, etc.

- Free.

- Super fun! Ok, I'm highly biased as one of its creators.

[+] sea6ear|1 year ago|reply
My suggestions would be Tcl/Tk or Pico 8.

Tcl/Tk is still the easiest way I have found to make small gui apps and the language and standard library is small enough to keep in your head easily.

Pico 8 is my recent love. It's a great way to make small retro style games. There's a free educational edition or you can pay $15 for the full version which has some extra export options. I've been playing with it for the past couple months and my kids from 6-11 have started to get involved. It's programmed in Lua and I and my kids prefer it at the moment to our previous attempts at Scratch.

[+] musicale|1 year ago|reply
Tk was well designed and implemented. I'm still nostalgic for the Tk canvas object.

Python/tkinter isn't bad either.

[+] flymasterv|1 year ago|reply
[+] hugs|1 year ago|reply
Probably the correct answer. (I loved HyperCard as a kid and built a ton of stuff with it.) My only complaint about Decker as-is (last time I played with it) is that it has no ability out-of-the-box to make any kind of network connection to do anything. e.g. grabbing some data, triggering some webhook, etc. is all a no-go. Decker is completely self-contained and oblivious about the internet (a lot like HyperCard was).

Theoretically, it's possible to add network fetching to Decker, but it's an exercise left to the reader.

Leaving out networking feels very intentional in Decker, and if you start to go down that rabbit hole, I imagine it quickly devolves into all the pain and complexity of modern webdev.

(Would be happy if I'm wrong and happy to find out it's all there in Decker now.)

[+] despacito|1 year ago|reply
Haven’t seen downpour mentioned, it’s pretty neat https://downpour.games/
[+] adrianhon|1 year ago|reply
Seconded! It’s mobile-first, very friendly, and very much designed for beginners. Lots of fun toys and games out there!
[+] talldayo|1 year ago|reply
Scratch is basically HyperCard on steroids. I don't think there's anything you can do in HC that you can't do in Scratch.
[+] jazzyjackson|1 year ago|reply
Excel

I just went through the tutorials for a first time in about a decade (the Make Your First Pivot Table template on the home screen) and was really surprised at how they used slides with buttons (insert > shape, then right click and link to a cell reference) jumping to the next worksheet, reminded me of hypercard

from a market adoption standpoint, nothing else in this thread has much traction in allowing non-programmers at large to do compututation with their computer.

[+] Suppafly|1 year ago|reply
Powerpoint is the first thing that came to mind for me. Obviously it misses some of the simplicity of hypercard, but from a slide/card based point of view, it's pretty similar and is very powerful in ways that most people don't realize.
[+] AustinCodeMonki|1 year ago|reply
Livecode is the commercial version. It used to have a community edition (free) but that was discontinued in 2021. The various other alternatives (Supercard was clunky and apparently doesn't run on 64-bit systems, PythonCard is dead, Shoes is effectively dead) besides Decker would be something like Delphi (ObjectPascal). There used to be a wxWindows-based system but that seems to have died also.

These days most folks would push you towards HTML / CSS / Javascript and possibly Node.js or Deno. In my mind Hypercard was the bridge between desktop programming and web development. Realistically that's not really bad advice.

For desktop programming, Dart/Flutter (Google recently laid off parts of those teams) are viable as are Python/Kivy (or even Python/Tkinter since Tkinter comes bundled with Python). You might also want to look at the DragonRuby Game Toolkit (Ruby).

[+] yaj54|1 year ago|reply
The web is distributed HyperCard. A website is basically a hypercard stack (albeit more text-centric than bitmap-centric) it's visual, card/page based, scriptable, and hyperlinked.

Get him to put together a hello world page from scratch and get it published on a live domain and he will be hooked for life.

[+] threeseed|1 year ago|reply
Not Hypercard but there is a company still making a Visual Basic 5 clone: https://www.xojo.com

When I was young I found it a great way to get into programming since it's visual with immediate feedback.

[+] ben_w|1 year ago|reply
Aye; that used to be called REALbasic, and I had good experiences with that in the late 90s/early 00s during my GCSEs/A-levels thanks to finding it on a cover CD of some Mac magazine in my local newsagent.
[+] Turing_Machine|1 year ago|reply
VB 5 (and, especially, 6) were some of the best UI builders ever designed, IMO.

Yeah, there was a crap language underneath, but I've never seen anything better at whipping up a serviceable GUI in a hurry.

Back in the day I sometimes wrote the UI for Windows C and C++ programs using VB6. It was that good.

[+] CharlesW|1 year ago|reply
In addition to LiveCode, you might also look at other “interactivity authoring” tools like Tumult Hype, Twine, and Roblox Studio, and even the retro https://hcsimulator.com.
[+] sbashyal|1 year ago|reply
My son, around the same age, liked p5.js the most out of several things I introduced him to