[HN Gopher] All hyped up for Hypercard: further adventures with ...
___________________________________________________________________
All hyped up for Hypercard: further adventures with an Apple legacy
format
Author : zdw
Score : 100 points
Date : 2021-12-14 17:28 UTC (5 hours ago)
(HTM) web link (blogs.loc.gov)
(TXT) w3m dump (blogs.loc.gov)
| phaedryx wrote:
| Oh man, Hypercard and ResEdit were my gateway drugs. I don't know
| of anything equivalent nowadays.
|
| The pinnacle for me was getting it to run my teacher's laser disc
| player.
| cstross wrote:
| Looks like the LOC folks are also unaware of the existence of
| HyperCard clones such as SuperCard (a compiler) and subsequently
| Runtime Revolution (now discontinued): before the company stopped
| selling its end-product cross-platform HyperCard clone there was
| a brief open source foray, and some folks appear to still be
| trying to develop an open source XTalk platform (XTalk is the
| generalized descendant language of HyperTalk):
|
| https://openxtalk.org/forum/
|
| https://en.wikipedia.org/wiki/XTalk
|
| ... They also don't seem to know about how files on an HFS
| filesystem all have separate resource/data forks: it's a
| distinctly different paradigm from the familiar a-file-is-a-
| stream-of-bytes convention of Linux/UNIX/NTFS, and some of their
| problem seems to arise because they're looking at a "flattened"
| HFS file that has been squished to fit on a non-HFS filesystem.
| (Modern macOS makes almost no use of resource forks, so they're
| vestigial in HFS+; not sure APFS even provides them.)
| GeekyBear wrote:
| The original version of Windows NT Server allowed you to
| install Services for Macintosh and act as an AppleTalk file
| server, so support for resource forks was added to NTFS.
|
| https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(AD...
| p_l wrote:
| Alternate Data Streams are pretty interesting, cause I'm
| pretty sure Services for Macintosh weren't the only users -
| it's also way more powerful (closest thing on Unix would be
| Solaris-style extended attributes) and pretty fundamental
| part of NTFS on-disk structures (in fact, "alternate" data
| streams differ from main one only by having a name - the
| default data stream simply has no name, and all data streams
| are equal in importance)
| retrac wrote:
| Extended attributes aren't limited just to Solaris. A
| variety of *nix file systems have generally supported
| forks/multiple data streams for some time. FreeBSD has
| support for arbitrary-sized extended attributes in UFS/ZFS,
| for example, and implements its access control with them.
| Linux probably has the most limited form, where the xattr
| are capped at 4 or 64 kilobytes depending on the underlying
| FS.
|
| I think the big issue for uptake is that it just doesn't
| fit into the UNIX world. Nothing else is aware of
| xattrs/forks. The basic file utilities will blindly strip
| them so you can't just cp or tar such a file, for example.
| If cp transparently breaks all your files, that's pretty
| much a show-stopper as anyone who remembers the classic Mac
| to OS X transition will know.
| p_l wrote:
| The reason I mentioned Solaris is because Solaris
| behaviour is closest to NTFS, whereas linux API is based
| upon Irix, which is closer in behaviour to OS/2 (OS/2
| subsystem was another use case for ADS), as well as
| implementation on a bunch of other systems where extended
| attributes were treated as just that, attributes.
|
| Comparatively, NTFS is very... flexible navigational
| database and a bunch of things are just "this is the
| default parameter set, not exhaustive".
|
| I wasn't aware that FreeBSD copied Solaris in this (ZFS
| extended attributes by default create a sort-of directory
| object allocated linked from the file, linux supports
| inlining simplified xattrs for speed)
| [deleted]
| soapdog wrote:
| Runtime Revolution is not discontinued, it is alive and well,
| it just rebranded to https://www.livecode.com many years ago.
| pstuart wrote:
| It seems like it would be reasonably straightforward to create
| a hypercard clone on top of js and the DOM. Or maybe that's
| already been done? (a lazy search did not reveal this to be the
| case).
| ksherlock wrote:
| The HyperCard stack's resource fork contains icons, sounds,
| xcmds, xfcns, and probably some other miscellanea. Most of the
| stack is stored in the data fork.
|
| APFS doesn't specifically have resource forks. They're handled
| as the com.apple.ResourceFork extended attribute (which is also
| one way OS X exposes them on HFS+ but with HFS+ the fork/xattr
| always exists; on APFS it has to be explicitly created).
| kragen wrote:
| The other post linked from the one you're commenting on
| (https://blogs.loc.gov/thesignal/2020/11/an-archivists-
| perspe...) talks specifically about the problems of preserving
| and reverse-engineering dual-fork files, so the problem is not
| what _they 're_ unaware of, Charlie. You just aren't aware of
| the problem they're trying to solve.
|
| The LOC, the Internet Archive, and the UK National Archives
| don't benefit from proprietary compilers for proprietary
| operating systems like SuperCard; their remit is to preserve
| these files for centuries or millennia, not until the next
| update of macOS X. If SuperCard interprets a HyperCard stack
| differently than original HyperCard did, or SuperCard on a new
| version of macOS X displays or behaves differently than it did
| on the previous version, that's a failure of digital
| preservation. Unless, that is, you notice --- and to notice,
| you need to emulate the original HyperCard environment and/or
| be sufficiently familiar with the semantics of the file
| specification. If https://news.ycombinator.com/item?id=29555959
| is to be believed, SuperCard is 32-bit-only and so will not run
| on the most recent version of macOS X, which lack 32-bit
| support, which if true demonstrates the enormity of the
| problem.
|
| As for streams of bytes, a _disk_ is a stream of bytes, or
| rather a collection of fixed-size blocks of bytes. _HFS_ is
| looking at flattened HFS files that have been "squished" to
| fit on a medium that does not, itself, implement HFS. Therefore
| anything that you can represent with an HFS dual-fork file can
| also be represented losslessly in a stream of bytes. (You do of
| course benefit from understanding the dual-fork structure.)
| HFS+ actually went further, implementing files with an
| arbitrary number of forks, like sections in ELF or PE. As
| GeekyBear points out, NTFS did the same, leading to path
| traversal vulnerabilities in early Microsoft web servers.
| Isthatablackgsd wrote:
| Wow, it has been a while since I play with Hypercard. I remember
| doing this in my 7th grade science class back in the 90s. I and
| my classmates have to create something out of Hypercard for the
| project.
| dbg31415 wrote:
| HyperCard and Excel were my programming gateway drugs.
|
| HyperCard was a mix of like PowerPoint and HTML / JavaScript.
| Just was so much fun for a kid to play around with. And
| everything you built had a visual element you could show your
| friends.
|
| I used HyperCard to re-create a MUD I really liked with a visual
| interface. Sort of like Myst... I had a blast. Certainly wasn't
| the first person to do that, but all the little coding tricks I
| had to learn to pull off my vision all came in handy later.
| tombert wrote:
| > HyperCard and Excel were my programming gateway drugs.
|
| Same! I had played with C++ a bit, but what really made
| programming logic stick for me was when I made my teacher a
| gradebook in Excel in 9th grade. His logic for calculating the
| grades in class was a bit strange, and he was doing it all
| manually, and my grades were exceptionally bad in that class,
| so I asked if I could get some extra credit if I could make his
| grading easier. Surprisingly he said yes [1], so that weekend I
| really crunched through Excel and pumped out a gradebook that
| implemented all the rules he was using to grade.
|
| It was the first time that "if" and "else" statements really
| clicked for me, and it got me interested in "real" languages.
|
| [1] In hindsight he really shouldn't have. It was sort of an
| unfair bit of favoritism he was paying to me, but 15 year old
| me didn't really care.
| karmelapple wrote:
| What was the name? I played plenty of stacks back in the day!
| webwielder2 wrote:
| I've just learned that the would be de facto successor to
| HyperCard, SuperCard, is still being maintained/updated
| https://supercard.us
| jrochkind1 wrote:
| I wonder if it would be possible to get entries for hypercard in
| "magic byte" databases like
| https://freedesktop.org/wiki/Software/shared-mime-info/
|
| The work is figuring out if it's even possible, and what the
| bytes would be.
| Someone wrote:
| FTA:
|
| _For instance, a stack file begins with a stack block
| (signified by the hexadecimal values, "53 54 41 4B," which
| correspond to the ASCII characters, "STAK"), and the file is
| terminated by a tail block (signified by the ASCII characters,
| "TAIL"_
| duskwuff wrote:
| Fun fact: the tail block contains the constant string "Nu ar
| det slut...", Swedish for "this is the end".
| rvense wrote:
| You want the file type and creator code, but they're eaten
| along with the resource fork when you move the file to
| something that's not HFS, I think.
| duskwuff wrote:
| > The work is figuring out if it's even possible, and what the
| bytes would be.
|
| Easy. 4 string STAK\xff\xff\xff\xff
| jrochkind1 wrote:
| OK, I guess now the work is getting it into the magic bytes
| databases! :)
| lr4444lr wrote:
| _Bill Atkinson allegedly came up with the idea for HyperCard
| during an LSD trip_
|
| Makes me pause to think what innovations we missed out on for
| loss of creative inspiration from all of our anti-drug policies.
| hvgk wrote:
| Well the last dude I know who took LSD tried to call an
| ambulance for a pile of sacks of builders cement and pissed
| himself. YMMV on that one. There are probably more failures
| that are not romanticised and more successes that involved hard
| work.
| [deleted]
| jazzyjackson wrote:
| the book "what the dormouse said" is an amazing retelling of
| this era detailing who tripped when and what they went on to
| invent
|
| IIRC photolithography and CPU architecture came out of this
| subculture, berkeley and harvard both had sanctioned LSD
| experimentation that grad students were happy to participate
| in, in the "center for advanced studies"
|
| it's been a few years since I read it so my memory is hazy
| golemiprague wrote:
| The question is how many of the LSD takers invented something
| in relation to all the other ones who just had some fun. Is
| it bigger percentage than in the general population?
| cmg wrote:
| Your comment made me go search for a short article that I'd
| seen in the past [0] with a text version at [1]. "Use of
| LSD-25 for Computer Programming"
|
| "While stimulated by the LSD I was able to get the entire
| system wholly in my mind at the same time. I spent some time
| mentally visualizing various aspects of the compiler, the
| language and the processing which would take place. I did
| discover three or four design inconsistencies while being
| stimulated by the effect of the LSD, and I made notes for
| later checking."
|
| [0] https://maps.org/news-letters/v18n1/v18n1-MAPS_24.pdf [1]
| https://slidelegend.com/use-of-lsd-25-for-computer-
| programmi...
| rightbyte wrote:
| He probably just felt like getting the whole system in his
| head?
|
| Shouldn't LSD trivially make people score higher on IQ test
| otherwise.
| jazzyjackson wrote:
| maybe "felt like" is the important part?
|
| just spit-balling here as a non-lsd-user, but I do have
| the experience of "writers block" when I feel a program I
| wrote is too complex, I feel like it would be better to
| scrap it and start over
|
| perhaps the effect of LSD is more anti-anxiety of
| approaching the problem despite its complexity, not
| improving your IQ, but lowering your inhibitions that
| otherwise prevent you from problem solving
|
| (I am on the side of things that drugs in general turn
| parts of the brain off, rather than somehow making you
| superhuman, but maybe there are parts of the brain we
| could do without from time to time)
| tomc1985 wrote:
| I've said the same thing about smoking sativas, so to
| learn that others have capitalized on this sort of
| 'increased visualization capacity' of LSD is not
| surprising.
|
| > (I am on the side of things that drugs in general turn
| parts of the brain off, rather than somehow making you
| superhuman, but maybe there are parts of the brain we
| could do without from time to time)
|
| They do neither as a rule. They just twist thinking
| around as they mess with your brains chemistry. Sometimes
| that puts you in a better place for a given activity,
| sometimes it puts you in a worse place. I think that, as
| society wakes up to the lies promulgated by the War on
| Drugs, we will revisit these positive interactions that
| are otherwise collectively forgotten.
| tombert wrote:
| I generally hate the expression "Ahead of its time", but I think
| that it definitely applies to Hypercard.
|
| I've only played a bit with Hypercard, but it's one of those
| things that feels almost anachronistic; it's hard to believe that
| something released in 1987 would be as trivial to use and be
| productive with as Hypercard.
| jandrese wrote:
| It's a language that is object oriented without having to teach
| the programmers any of the theory. The language has a
| considerable amount of syntactic sugar but makes for some
| pretty incredible looking code. on mouseUp
| put "100,100" into pos repeat with x = 1 to the
| number of card buttons set the location of card
| button x to pos add 15 to item 1 of pos
| end repeat end mouseUp
| kragen wrote:
| Although I hate to recommend proprietary software, you might
| be interested in looking at Inform 7, designed for authoring
| interactive fiction;
| https://rosettacode.org/wiki/FizzBuzz#Inform_7 has an
| example: The space is a room. An item is a
| kind of thing. In the space are 100 items. To
| say the name: let the count be the number of
| items carried by the player; say "[if the
| count is the count to the nearest 15]fizzbuzz.[otherwise if
| the count is the count to the nearest 3]fizz.[otherwise if
| the count is the count to the nearest 5]buzz.[otherwise][the
| count in words].". To count: if
| an item is in the space begin;
| let the next one be a random item in the space; silently try
| taking the next one; say "[the name]"
| in sentence case; count;
| end the story; end if. When play
| begins: count. Use no scoring.
| tombert wrote:
| That's really cool! Reminds me of some of the crazy stuff you
| can do with the Lua metatables to get really pretty code (if
| you are careful).
| jimbokun wrote:
| I worked on interactive software for learning Japanese in
| Hypercard many years ago. I think it's still the most
| productive system for building user interfaces I've
| encountered.
| JALUK wrote:
| There are still Apps out there that are derivatives of the
| HyperCard family.
|
| LiveCode is based upon Metacard and was the subject of another
| Hacker News Thread:
|
| https://news.ycombinator.com/item?id=24874102
|
| There is also SuoerCard:
|
| https://supercard.us/index.html
|
| Which unfortunately is 32 bit only so only works on older
| variants of modern day OSX.
| gnufx wrote:
| Not relevant to the article, but while people are talking about
| HyperCard and derivatives generally, it inspired HyperNeWS, which
| I remember fondly, though it wasn't free software. Perhaps that
| kibozes Don Hopkins:
| http://www.art.net/studios/Hackers/Hopkins/Don/hyperlook/ind...
___________________________________________________________________
(page generated 2021-12-14 23:00 UTC)