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.
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.
I would say a modern HyperCard is LiveCode (outside Decker).
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.
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.
> 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.
That seems like a day project in electron. At least to MVP. Use CodeMirror or Monaco. As long as you pass the right options you can run the user's code in an iframe in a separate process. That way you can kill it even if it has an infinite loop.
I use BBEdit whenever I do web stuff (caveat: not a pro web dev) — if someone wanted to learn HTML/JS from scratch, I'd suggest a plain text editor like that.
Krita has: https://scripting.krita.org/lessons/introduction
while for Inkscape there is: https://inkscape.org/~pakin/%E2%98%85simple-inkscape-scripti...
Webmaker[1] isn't built in, but it does offer an offline code playground
[1] https://webmaker.app/
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.
But it works as a next step for sure.
It's complex to even decide what to jump to, then there's setting up the environment, learning text editing and syntax, usually much more complex (and completely unfamiliar) graphics libraries, etc. And then they can't share projects so easily and aim to be curated, etc.
I like lua and love2d as the next step, as it's much simpler and cleaner than kitchen-sink Python (don't get me started on significant-whitespace), but it's still a big jump from Scratch. I wish there was a Thonny for lua though.
I agree though that debuggers are usually too complicated - print-based troubleshooting will be enough to start with.
The programming club does some pretty cool game things.
Trying to figure out if it can handle proper full res camera input, looks like the optical sensor is a bit limited. Maybe these ports don't have enough bandwidth, tho. EDIT: Looks like the Exp level has the "AI Vision Sensor"
Two schools of thought are 1)Software is the key to robotics - so the more powerful brain / camera is the selling point 2) Mechanical interfaces to the physical world is the key - the VIQ ecosystem makes this practical at a pretty low cost. If you root around on ebay for HEXBUG VEX ROBOTICS you can see lots of the plastic kits for sale that can give you parts that make something that you can later frankenmash into other things.
Good luck with your adventures!
Scratch has no local variables, no recursion, no pointers or references, and no data structures, correct?
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/
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!
It's a favourite tool of mine (donated so that the Mac version could get code signed) and I'd be very glad to see it more widely used.
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.
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.
https://en.wikipedia.org/wiki/ViolaWWW
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.
- 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.
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.
Python/tkinter isn't bad either.
https://beyondloom.com/decker/
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.)
https://itch.io/post/9447223
https://beyondloom.com/decker/decker.html#thedangerzone
See https://hyperscript.org/
https://en.wikipedia.org/wiki/LiveCode?wprov=sfti1
That said, I think Scratch is a better learning environment these days and you can develop workable apps in the style of HyperCard. There are plenty of tutorials, documentation, and examples to work from.
https://scratch.mit.edu
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.
https://pyspread.gitlab.io/
and if mito will become popular:
https://www.trymito.io/
and whether maybe Jupyter Notebooks aren't the solution to this sort of thing.
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).
https://twinery.org/
https://www.bitsy.org/
https://jupyter.org/
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.
When I was young I found it a great way to get into programming since it's visual with immediate feedback.
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.
http://www.squeakland.org/
In EToys, as in the earlier Vivarium project, children were supposed to create all their own objects from scratch (ironically). In Scratch the use of clip art, scanned material and other people's project is encouraged. In fact, "scratch" is a dj term for a certain way of mixing music. I can't find the exact definition since Google insists on pointing me to the software instead.
https://developers.google.com/blockly
Critically, Blockly can emit JavaScript and Python, plus it supports plugins for extended functionality. So the kid can stay inside the blockly universe for as long as they like, but easily peer under the hood and get into Python or JavaScript as soon as they like.
HyperCard is an early hypermedia system predating the web.
Besides teaching programming, I think it could become a scripting tool to help create experiences in VR/AR.
My first introduction to programming was via LOGO writer (although I didn't even realize I was learning programming until much later.)
That's kind of how I got into it at least. It's quite fun to modify the gravity variable of a platformer and see the effect, as an example.
I would say the answer is none of the below/above...
GDevelop is an app for making games. Your son will love it. It has a very cute visual programming language, not too far from Scratch.
I watched a few 10 minute tutorial videos and "got it"... you two will too.
p.s No connection to the company.
I originally learned the basics from a book in the 90's. It was easy to get into, and those basics haven't fundamentally changed.
For the kids, they can write the the code in their own language, so non-english
Bit of self promo, as I created it
https://www.supercard.us/purchase.html
>SuperCard remains a 32-bit application and will continue to be for the foreseeable future. This means it is not compatible with Catalina (macOS 10.15) or later versions of macOS.