The solution we ended up with was partially a matter of the minimum change to fix the issue, and partly because we have a lot of platforms to cover with a small team, so the fewer platform-specific concepts we have (frameworks in this case), the easier it is to maintain.
If you're interested in running older Mac software in the browser, the BasiliskII-based sites at https://system7.app/ and https://macos8.app/ may be better bets. They will boot faster and have fewer compatibility issues (especially System 7).
The main thing that Mac OS 9/SheepShaver brings is PowerPC support. There is also a variant of System 7 for PowerPC with more esoteric mid-90s Apple projects like OpenDoc and QuickDraw GX installed available at https://system7.app/?domain=system7-ppc.app.
Hi, it's a great project, although I found out that some 68k and PPC software seems to have required things that aren't emulated by either BasiliskII nor Sheepshaver, or at least so it looked when I was playing with it - tried running Macintosh Common Lisp and it always seemed to crash.
Still, reminds me of plying with vMac long ago and this weird world of, to our perception then, barely usable machines ;)
Awesome, this is so cool! I remember MacOS 9 with a mix of fondness, hatred, and nostaglia. OS X was definitely a big improvement when it came out (I remember OS 9 having so many crashes), but some of the charm was definitely lost.
And these .app domain names you're all using in this space are great and totally apt. I love to see great usages of my work in the wild like this.
> I love to see great usages of my work in the wild like this.
Out of curiosity and ignorance--what is the work you're referring to here which is being used for the project / website? The comment makes me feel it's the (dot)app TLD, in which case--fascinating! But also what does it even mean to work on something like that?
OS9 always seemed like little improvement over OS8. The biggest thing I remember was this was when they introduced the Applications folder. It's like they were trying to get you to get used to how the structure in OS X was going to be, but with no explanation.
OS9 was really just 8.7 but, as you describe, a stepping stone towards 10, both numerically and with a few nods to the future, e.g. Keychain Access, CarbonLib, and file/printer sharing over TCP.
Carbon was a moving target; each "update" cut more core MacOS tools and added OSX service interfaces. It was quickly obvious that there was no intention of letting MacOS run in the future, so why port to Carbon? many social signals in the developer group at the same time.
Yeah, so looking back at the release dates of these, I definitely used at least back through OS 7, but I can't say I remember anything specifically about them because it's fading into the haze of youthful memories. In my mind it's all just pre-OS X and post-OS X, as that marks by far the biggest change in Mac OS functionality that I remember.
I love that this exists. Time to time I crave playing some of my childhood games that are OS9 based and setting up sheepshaver is a pain. This will help me to get my kicks playing some old games for the few minutes I intend to play them :) thanks!
I really love your project. It is a giant pain in the ass to get BasiliskII and/or SheepShaper working, at least the few times I've messed with them. Is it possible to run this offline or in some kind of encapsulated web app form?
If you have experience with QEMU now there is good support for MacOS 8/9/X in ppc and there is an alpha version with initial support for System 7/8/A/UX on 68k. It's still a PITA but at least it's similar to the PITA of other QEMU VMs, which you may be familiar with.
Tailscale SSH's check mode (https://tailscale.com/kb/1193/tailscale-ssh/#configure-tails...) is meant to address the issue of "rogue process starts an SSH connection". For truly sensitive applications, you can set the check period to be "1s" to always require it.
Hmm. If the problem is that Tailscale SSH doesn’t strongly associate the person authenticating with the connection being authenticated, asking the person to reauthenticate seems like a pretty weak solution.
Unless I'm misunderstanding something, the check solution creates that strong association. Logging in gives you a link you have to go to and auth, authing let's your session connect. Disconnect, and you have to do this again.
No check mode reuses the auth of the tailscale client, check mode authenticates the ssh connection itself
And then that tailscale client is authorized to log in over ssh for however long the check lasts, and anyone else who can initiate a TCP session over the link can also get in.
Boy did I go down the rabbit hole today with this. I found so many sites from my past that I ended up looking up in the Internet Archive just now. I really miss the web from 25 years ago. Design was simpler and things loaded fast. The focus was on content, not chrome (and tracking the heck out of you).
I know this is rose-colored glasses but hell, even interacting with the old Windows and Mac OSes was a breath of fresh air. There are things that show their age but there are also things that make it really easy for me to find my way around a computer.
Thanks for the link. That was a great trip down memory lane. I wonder if we'll ever adopt some of that old stuff ever again.
Did they really, though? Or did we just have more patience for general slowness back then? Things were simpler, no doubt, but the computers were also much slower (if you didn't have much RAM, loading a webpage would probably result in paging to the disk), the network was slower (even if you were lucky enough to have a T1, you were probably connected to it via 10 Mbps half-duplex ethernet), the servers you connected to were slower...
Don't get me wrong, I adore the simplicity and hackability of older systems, but I have a PowerMac G3, and even after maxing out the RAM at 768 MB (at launch, the max was 384 MB because there were no 256 MB DIMMs to test with), swapping the old 12 GB IDE HDD for a 32 GB CF card, fixing the ATI extensions to enable the dedicated GPU, and connecting it to a multi-gigabit network with symmetric gigabit fiber internet, there's only so much performance you can squeeze out of these things. Even loading 90s-era webpages on 90s hardware (with 2000s upgrades) is slower than loading many modern webpages on modern systems.
In middle school, we had a math teacher with an old mac setup that ran a physics simulator program. It came with a variety of starter templates, one of them was this crash test dummy in a car.
It was all polygons, but you could hit run and the car would accelerate and hit a wall then the circle head and arms would sort of fly around.
Anyone know what this software was? I remember running and re-running little simulations repeatedly, with little understanding of the science but very much enjoying the ragdoll physics of it.
I remember two programs like that, one that my middle school had called "Fun Physics," and one my high school had called "Conceptual Physics." The interfaces were exactly the same, and it wouldn't surprise me if Conceptual Physics was a rebundled version sold along with Paul Hewitt's course. Unfortunately, those names are so generic that I can't find them on Google.
I caught this the last time it came around HN. Thanks for making this. Browser accessibility of these classic systems and the painstaking work you undertook to integrate all of the third party software is really important for preserving the experience we had growing up with these machines.
My son regularly asks me to play Lemmings now because of this app :)
I haven't tried this myself, but you should be able to download and install it from https://macintoshgarden.org/apps/aldus-pagemaker-50 (drag the .sit on the emulator, and it'll be copied to the "Downloads" folder). You can then use StuffIt Expander to unstuff the .sit and Disk Copy to mount the install images (both are in the "Utilities" folder)
Incidentally, Apple reseller resource CDs[1] also contained fully functional copies of PageMaker, licensed only for customizing Apple marketing materials, along with the assets (product photography, custom Apple internal-use fonts) required to do so.
Creating period-correct marketing materials for projects like this emulator could be a fun art project.
Holy hell. Thank you for that website. When I was a kid I downloaded a game called “Foodfight” from the Internet cafe. However, when I got the floppy home, I attempted to run it on my dad’s Mac but it would not launch. For the last 25 years I’ve periodically wondered about that game, if it was any good or not, and why it didn’t launch (first mystery solved, it’s written in HyperCard!). I can’t wait to tell my dad.
Whats really interesting to me about this, was that just ~last week or so, I was wondering what ever happened to Kai (Kai's Power Tools - Kai was the inventor of it and it was a revolutionary glimpse into the future of what 3D worlds were going to be put into the hands of the masses via PCs.)
Once you have the disk mounted in your second screenshot, drag (all?) the 1.image files onto the Disk Copy window to mount each individual floppy, and inside "1" is a Utilities folder with a How to Install and a Aldus Installer/Utility app.
There is! netatalk on linux is the package you need for that, and it's still built in to BSD, I believe. now weather that package still speaks the older versions of the protocol, who can say. Interestingly, a challenge you would have with this because this emulator is web based, your networking options would be fairly limited, even if you could emulate netatalk, the browser's security features would preclude you accessing hosts than the server it's on, it's the same reason Fabrice Bellard didn't add networking to his jslinux project.
Something involving a web server, a websocket (ws) server acting as a switch or repeater, a emulator specific websocket client to act as a network adaptor. Each emulator would then send packets via websocket to the ws server which would then send to the other connected ws clients. All the ws would be abstracted behind the emulated network adapter.
That would give you enough to let a bunch of Bolo addicts go to the same site and play multiplayer. It would also let them share files amongst those emulators.
But that wouldn't necessarily let any of them talk to an appletalk server near the server, eg on its real lan. For that you'd need a tuntap thing acting as a bridge or router.
That said, you probably wouldn't require that appletalk/netatalk server. As long as one emulator holds the maps or files etc you could use that as a file server. No tuntap required.
Since you can't listen for incoming connections from a browser, most likely no.
Coincidentally, Bolo networking was originally designed for serial networks like LocalTalk. The same network logic was used when UDP support was added. So there are assumptions made about learning of another player's network address from an third player, and is the reason why ubiquitous NAT broke Bolo internet gaming.
But if you have an old Mac around, you can play internet Bolo games using a Bolo packet re-writing proxy I wrote. We schedule games occasionally over at 68kMLA.
As someone who was involved in the creation of Infini-D back in the day, I can only say that this brought a smile to my face and that I've shared it with the whole original team. Thank you! Thank you!
Hey there! I opened Resedit and began deleting things in the System suitcase. Jammed the emulator up pretty good! Reloaded the page and it rebooted. Great work!
Lunatic Fringe was part of After Dark, which is in the Control Panels & Extensions folder. If you drag that to the "Control Panels" folder in the System Folder and restart, it'll be enabled, and you can choose it.
Very impressive.
A fantastic next step would be to emulate a NeXT so you can run WorldWideWeb, Tim Berners-Lee's original browser+editor. A bit like https://worldwideweb.cern.ch/ but including the whole NeXTSTEP system around it, allowing for looking at source code, editing pages, etc.
What a great tool that would be for educating how the original Web was built.
This seems to work OK for me. Any chance a modifier is stuck down (try pressing command, option and shift to reset their state). If this still happens, can you file a bug at https://github.com/mihaip/infinite-mac/issues/new?
The tool caches the API responses (in the _raw_data directory), so if you're re-running it, most of the initial requests will be served from the cache.
If the XML parse errors are listing any item IDs, feel free to email them to me (mihai at persistent dot info) and I'll see if there's any workaround from my side.
Edit: If it's "XML parse error when fetching items, retrying with high-fidelity turned off" messages that you're seeing, then those are harmless (assuming no follow-up exceptions). The retry must have succeeded.
Have you tried the JSON API? (See the requests that Google Reader itself makes.) It requires no cookies and supports getting up 1000 items per continuation.
The tool uses the "high-fidelity" Atom output mode for getting at item bodies. That preserves namespaced XML elements and other extra data from the feed. It uses JSON for everything else, and will fall back to regular Atom output if the high fidelity mode is not well-formed (it was added in late 2010, as things were winding down, and thus never got a lot of testing).
I tried this with a canvas (putImageData with alternatively the positive and negative frame) and it wasn't any faster on desktop Chrome (and slower on iOS devices).
I tried that too (https://github.com/mihaip/web-experiments/blob/master/tempor...). It still flickers, I'm guessing because the frame delay interval is specified as an integer, and both 16 and 17ms don't quite line up with 60Hz (or whatever the screen's refresh rate is).
The solution we ended up with was partially a matter of the minimum change to fix the issue, and partly because we have a lot of platforms to cover with a small team, so the fewer platform-specific concepts we have (frameworks in this case), the easier it is to maintain.