[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)