#HyperTalk

Edgar WaltherteWalthert@typo.social
2025-05-09

Excited about this edition of #HyperTalk!
@vectro is playing one of his famous modular synth intro. @futurefonts has put together an exciting list of speakers again.

Photograph of our retired iMac that serves as a DVD and streaming player.
Next to it, gorgeous weather, that I’ll have to miss to be part of this. #Priorities
Uli Kusterer (Not a kitteh)uliwitness@chaos.social
2025-04-26

I always get a bit cagey when people ask if #HyperTalk is like #AppleScript.

There's an inspiration there, but AppleScript jettisons one of the fundamental strengths of HyperTalk: that it's designed to account for human “flaws" and logic gaps and removes the need to think about certain advanced programming concepts, whereas AppleScript actually has that logical structure under the hood and just makes it implicit … until it isn’t and you get an error message and need to deal with it.

1/6

2025-04-21

Next project I'm equally afraid and hyped about: re-implementing most of #HyperCard as #HTML form-based app. Requires:
- A working #HyperTalk (or the like) interpreter
- Card editing form that's flexible enough to build e.g. a calculator
- Script editing UI
- Smart evaluation that works well with old-school HTML-first UIs
- Server setup to handle all of these

Some of these are entirely new to me, and some don't have reasonable libs for in #CommonLisp, so I'm quite floored with the amount of work. But if I manage to make this thing, I'll have a reliable note-taking tool and a simple programming system!

(Now that I think about it, I don't really need a note-taking tool, because I use #hpda. And the simple programming system might as well be a headless HyperTalk interpreter...)

#theWorkshop

Dr. Juande Santander-Velajuandesant@astrodon.social
2025-04-01

If you’re at the intersection (maybe not total) of interactive fiction, game exploration, HyperCard/HyperTalk, and graph theory, and have some fondness for Myst, this is clearly the article series for you.

glthr.com/myst-graph-1

/via @zarfeblong

#Myst #graph #HyperCard #HyperTalk #GameAnalysis #InteractiveFiction

2025-01-11

Join me tomorrow morning at 9 AM Eastern for more #HyperCard and #HyperTalk coding. My solution for drawing isometric tiled game locations for my next version of Adventure!.

youtube.com/live/t1v93BPJRQg?f

Eric must choose between the lasso and select tools in HyperTalk. Should he flip a coin?
2024-12-06

I'll be once again live streaming some #HyperCard programming this Saturday, Dec 7th at 9am Eastern. I'll be working on a #Linter for #HyperTalk.

youtube.com/live/Pzk5WmODzbE?f

A robot's hand holds aloft a wrench while Eric thinks of running a clothing lint catcher over source code.
2024-10-18

Are you a #HyperCard master? Dream in #HyperTalk?
Show off your mastery with one of my t-shirts!

ericsedge.threadless.com/

2024-06-17

So, aside for some questionable purchases recently whilst vintage shopping, I’ve been reinventing the wheel. Another questionable activity. It’s what I do.

I’ve been writing a SQL engine and query parser in #HyperTalk in #HyperCard called SQL-Like. Why? Why not? I have reasons I won’t go into here. See my posts and videos for more at youtube.com/@ericsedgevideos
1/3

Serious corrosion of the positive terminal on an Everest D-Cell pulled from a vintage multimeter. Surprised to measure 1.4 volts.Serious corrosion of the positive terminal on an Everest D-Cell pulled from a vintage multimeter. Surprised to measure 1.4 volts.
2024-05-20

Карсон Гросс, создатель HTMX

Карсон Гросс (Carson Gross) — профессор информатики из Монтаны, который неожиданно стал одним из самых ярких персонажей в индустрии веб-программирования последних лет. Он автор языка HyperScript и популярной библиотеки для фронтенда HTMX , позволяющей создавать сложные интерактивные сайты средствами HTML. Красивая альтернатива клиентскому рендерингу на JavaScript решает сразу несколько проблем современного веба, связанных с избыточной сложностью разработки и поддержки, производительностью и ожирением сайтов. Создавать сайты очень просто, тот же Хабр написал один программист , а не команда из сотен разработчиков и девопсов, как сейчас принято нанимать в интернет-компании. Многие веб-разработчики нашего времени выросли со знанием только одностраничных приложений SPA и фреймворков для них. Они начали свои карьеры с приложений на React.js, которые общаются с сервером Node через JSON API. Это настоящая трагедия, считает Гросс. Интерактивные приложения можно делать совершенно иначе.

habr.com/ru/companies/ruvds/ar

#ruvds_статьи #Карсон_Гросс #htmx #Hyperscript #груг #гипермедицные_системы #Рой_Филдинг #REST #RESTful #JSON #HypermediaDriven_Applications #HDA #SPA #React #UI #API #усталость_от_JavaScript #фронтенд #HyperTalk #HyperCard #HTMX 2 #веб_20 #Ajax

Uli Kusterer (Not a kitteh)uliwitness@chaos.social
2024-05-16

Oh, and I only just realized: ChatGPT didn’t concatenate the variable values with the string in the “send” command, it just made the variable *names* part of the string, so this code will actually not work. 😅

Update: FUCK ME! ChatGPT was right about that one, 'send’ actually works like 'do' in HyperTalk and even evaluates the variables it was given! I didn’t know that! WTF Dan Winkler! 💙

#hyperTalk #retroProgramming #hyperCard #chatGPT

Uli Kusterer (Not a kitteh)uliwitness@chaos.social
2024-05-16

Playing with ChatGPT. As always, it is so close, but also so far away. The first is correct, and then it goes off into the weeds, because it uses a LiveCode command, not HyperTalk, and then claims it was in random versions of HyperCard. At least LiveCode is a superset of HyperTalk. But it keeps grabbing random non-HyperTalk syntax, even when I point out it shouldn’t (“wait with messages” is also not in HC).

But impressive that it gets this far.

#hyperTalk #retroProgramming #hyperCard #chatGPT

Write a HyperTalk script that periodically changes the icon on a button, like a flipbook
animation
Certainly! Below is a simple HyperTalk script to create a flipbook animation effect for a button's icon.
This script will periodically change the button's icon by cycling through a set of predefined icon IDs.
hypercard
• Copy code
-- This script should be placed in the card script or a button script.
on openCard
startAnimation
end openCard
on startAnimation
-- List of icon IDs to cycle through
put "1001, 1002, 1003, 1004, 1005" into iconList
-- Start the animation with the first icon
set the icon of btn "AnimatedButton" to item 1 of iconList
-- Start the animation 100p
animateIcons (iconList, 1)
end
startAnimation
on animateIcons iconList, currentIndex
-- Get the number of icons in the list
put the number of items of iconList into iconCount
-- Calculate the next icon index
put currentIndex + 1 into nextIndex
if nextIndex › iconCount then
put 1 into nextIndex
end if
-- Set the next icon
set the icon of btn "AnimatedButton" to item nextIndex of iconList
-- Wait for a short period before changing the icon again
wait 1 second
-- Continue the animation loop
animateIcons (iconList, nextIndex)
end animatelconscan I click while this animation is running?
Yes, you can modify the script to ensure that the animation runs in the background and allows you to
interact with the card, including clicking buttons, while the animation is running. Here's an improved
version of the script using HyperCard's send command to avoid blocking user interactions:
hypercard
• Copy code
-- This script should be placed in the card script or a button script.
on openCard
startAnimation
end openCard
on startAnimation
- - List of icon IDs to cycle through
put "1001,1002, 1003, 1004, 1005" into iconList
-- Start the animation with the first icon
set the icon of btn "AnimatedButton" to item 1 of iconList
-- Start the animation 100p
send "animateIcons iconList, 1" to me in 1 second
end startAnimation
on animateIcons iconList, currentIndex
-- Get the number of icons in the list
put the number of items of iconList into iconCount
-- Calculate the next icon index
put currentIndex + 1 into nextIndex
if nextindex › iconCount then
put 1 into nextindex
end if
-- Set the next icon
set the icon of btn "AnimatedButton" to item nextIndex of iconList
-- Continue the animation 100p
send "animatelcons iconList, nextIndex" to me in 1 second
end animatelconsWhat version of HyperCard is the "send in 1 second" command available in?
The send in 1 second command is available in HyperCard 1.2 and later versions. This
command allows for delayed message sending, enabling background tasks and animations without
blocking user interactions. If you are using a version of HyperCard earlier than 1.2, you would need to
upgrade to utilize this functionality.
Are you sure?
l apologize for the confusion. The 'send in 1 second' command was actually introduced in
HyperCard 2.0, not 1.2. HyperCard 2.0 brought several enhancements and new features, including
improved scripting capabilities and the ability to schedule tasks using the send command.
If you are using a version of HyperCard earlier than 2.0, you would need to upgrade to use the ' send
in functionality for non-blocking animations and other timed events.
Are you REALLY sure?
Searched 6 sites
The "send in 1 second" command in HyperCard was introduced with version 2.0. This version,
released in 1990 by Claris, included several significant updates such as a just-in-time compiler and a
debugger, which helped improve the performance and capabilities of HyperTalk scripts (The History
of Computing) (Low End Mac). This feature enabled more advanced scripting, including scheduling
actions with precise timing, such as creating animations or delayed responses within a HyperCard
stack (Wikipedia).Isn't "send in 1 second" only available in LiveCode? How can I do the equivalent in
Hyper Talk?
I apologize for any confusion. The "send in 1 second" command is indeed associated with LiveCode,
the modern successor to HyperCard, rather than HyperCard itself. In HyperCard, to achieve a similar
effect without blocking user interaction, you would use the idle message or a timer-based
approach.
Here's how you can create a non-blocking animation in HyperCard using the idle message:
1. Set Up the Animation:
Place this script in the card script or a button script.
hypercard
-- Card script
Copy code
global gIconList, CurrentIndex, Animationon
on openCard
-- Initialize global variables
put "1001, 1002, 1003, 1004, 1005" into gIconList
put 1 into CurrentIndex
put true into Animationon
startAnimation
end openCard
on startAnimation
-- Begin the animation loop by setting the initial icon
set the icon of btn "AnimatedButton" to item CurrentIndex of gIconLis
end startAnimation
on idle
if AnimationOn then
-- Proceed to the next icon in the list
add 1 to CurrentIndex
if CurrentIndex › the number of items of gIconList then
put 1 into CurrentIndex
end if
-- Set the next icon
set the icon of btn "AnimatedButton" to item CurrentIndex of gIcor
-- Delay for a short period (e.g., 1 second)
wait 1 second with messages
end if
end idle
on mouseUp
-- Toggle the animation on and off
if Animationon then
put false into Animationon
else
put true into gAnimationon
end if
end mouseUp
2023-10-28

From “HyperTalk 2.2: The Book” page 511.
#HyperCard #HyperTalk

Techie alert: The function class…
Trekkie alert: Mr. Spock is half-human.
2023-10-21

Here’s the #HyperTalk script. I only have one twiddly knob, so decided to do vertical control by holding down shift for now. #HyperCard

2023-09-19

Found hyperscript programming language. Instead of going to sleep (it's about 2 a.m. in my timezone), I am reading its documentation. That's really weird. But also really nice and interesting :)

hyperscript.org/

--
#dev #webdev #hyperscript #js #javascript #smalltalk #hypertalk #hypercard

2023-06-17

I hit the 30,000 character limit for a #HyperCard #HyperTalk script. Had to divide the script between the stack and the card. Time for bed.

lorddimwit is now @rk@well.comlorddimwit
2023-05-11

My 18yo nephew asked me what my favorite is and I don’t actually know the answer.

I *use* and for applications. I write for data munging and scripts and small apps. I’ve written many thousands of lines of each. I sponsor .

But is one of them my *favorite*?

I think my favorite would probably be something like or or or or or or or or or or or or or…

Uli Kusterer (Not a kitteh)uliwitness@chaos.social
2023-03-24

I still dream of finding a good syntax for if-expressions (as opposed to the statement form that already exists) for HyperCard.

Rust-style wouldn't be very English:

put if myCondition then 5 else 6 into myVar

But maybe something postfix like

put 5 if myCondition else 6 into myVar

But that still reads very badly. Too much complexity per line. Maybe the inherent complexity of an if-expression just violates the spirit of HyperTalk.

#hypercard #programmingLanguage #hypertalk

2023-01-04

If you like(d) #HyperTalk, the scripting language used on Apple's #HyperCard, #hyperscript is almost the same thing for the web: hyperscript.org/

Screenshot of HyperCard showing some HyperTalk scripting code.

The code reads as:

on mouseUP
    get name of me
    put the value of the last word of it after card field "lcd"
end mouseUp
Uli Kusterer (Not a kitteh)uliwitness@chaos.social
2022-12-13

Simpler languages like #HyperTalk don't have this problem. They scan a source file for lines beginning with `on methodName` or `function methodName` and build your navigation from that, even when swaths of invalid code lie between them.

Similarly, properties are either built in, or part of the image, so there is an explicit creation/deletion step that doesn't allow for any temporarily invalid syntax.

Languages with a graphical editor like #Scratch or #Automator don't have that problem either.

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst