What we can learn from vintage computing
github.com
github.com
Yesterday's topic about the memory footprint of desktop environments touched on this - the fact that if a memory-hungry process triggers a swapstorm it can take minutes to regain control of a Linux desktop.
I call that sense of immediacy the feeling of "having the computer's full attention" - and ensuring that nothing required for interactivity gets paged out is the only robust way I can see of creating that feeling - but instead we use the somewhat crude, brute-force approach of throwing more RAM at the computer until the swap-outs stop happening!
It sounds like programming computers back then would have been a joy.
Casey Muratori's talks[0] on performance and optimization sparked an interest in me to start putting thought into what the CPU actually does (which wasn't taught when I learned web development). Since discovering his talks, I've been on the hunt for more learning materials.
[0] https://www.youtube.com/watch?v=Ge3aKEmZcqY&list=PLEMXAbCVnm...
I've spent a lot of time archiving and scraping my own content and optimizing my home network (and ingress points, routing, etc.) to access all of these things with minimal (< 3 ms) retrieval latency and the effects are joyful. The UX is bad as it's something I've written for low latency use and my UX skills aren't very good, but it makes me feel like I have "instant" access to content, which feels like a superpower. I'd love to explore topics like this for a broader audience for more than just nerdy media I consume.
I'm glad you've recognised the delights of a low-latency interface. The ideal interface is invisible, unnoticed by the user - my own thoughts are that an unpredictable response time is jarring, causing the interface to be noticed in a way that it shouldn't be - I've heard it called "jank" in the context of cellphone apps. So I believe people do recognise it, but probably underestimate how much it detracts from a pleasant user experience.
Of course, the underlying problem is that it's not always easy to know where the user's attention is (or if they have walked away, as you mention), but it was a simple "somewhat right" trick.
Somehow games can run at 240fps on a modern PC, but desktop user interfaces (not to mention web apps) are still sluggish.
Still, it could be worse, at least desktop environments aren't as bad as the mobile world where it seems like everything has to have a transition and animation.
This is not a model for applications in general.
That doesn't mean that the sluggish desktop apps should not be fixed, but "be more like games" is not really the right advice.
I've spent a decent amount of time in both spaces in my career, it is totally possible to build performant, fluid applications but it requires a degree of care and investment. Usually "good enough" suffices and that's where things land but there are also developers who prioritize that and short of very restrictive environments you can build responsive applications.
Besides, at the end of the day all UI is doing is rendering, with a direct path to the GPU just like games do :).
That makes me wonder... How much of an OS could be offloaded to a GPU? Specially for CPUs built into the processors that share the same memory bus, the data wouldn't need to go through PCIe to get to the GPU and back to main memory.
Does any modern OS offer a standard and architecture-neutral way to run workloads on GPUs?
> That doesn't mean that the sluggish desktop apps should not be fixed, but "be more like games" is not really the right advice.
If we can offload as much of the GUI rendering to the GPU, that's still a win because it frees the CPU for other things.
...really? My PC is orders of magnitude more powerful than the 166Mhz Pentium PC my family used in the 90s, yet the interface is no faster. Was interacting with the OS somehow orders of magnitude faster back then? I can run Win98 in a virtual machine with all the associated overhead... hell, I can do that on top of f'ing javascript in a web browser, and it is still more responsive than modern OSs.
I run an RT kernel all the time. Plenty of things are still janky. Improving UX latency has more to do with UI toolkit and application design than the kernel.
That said, VR is the unsung hero of finally improving the awful jitter that most gaming hardware and software was developing 10 years ago. I don't care if your new graphics card can maintain 200fps on average if it has 100ms latency spikes every second. Smooth is important.
I hadn't considered the VR aspect, but you're absolutely right - the jarring nature of UI "jank" would be literally nauseating in VR.
I've seen Sun's Crossbow stuff in use once, but it made quite an impression - it allowed testing many failure scenarios with relatively little effort.
Like you say, modern devs really need to remember to test against a high latency unreliable network. Or even just against a lack of network at all... it constantly astounds me that companies like Microsoft can let critical, central components like the start menu cease functioning without an internet connection. I recently had the start menu refuse to find any programs on my computer because it was trying to get to Bing and I was on a remote site with only local Ethernet plugged in.
We've spent the last decade-plus focused mostly on slick brochures you can poke at with your finger. Where the point is not to get stuff done, but to "engage" and manipulate the user.
But not all is lost. There are some high-performance niches in tools for professionals, and in some facets of video games.
Hard real time problems are ones where people die, stuff is destroyed etc. when deadlines are missed.
User interaction is never (or almost never) like this.
It does not imply that people die or that stuff is destroyed. I've used hard real time, soft real time and regular OSs for GUI based interaction and the only ones that really feel like they are satisfactory are the hard real time ones. The soft real time ones are obviously better than the general purpose ones but they still tend to give regular moments of unresponsiveness.
Another example: using the payment thing at a 7-11. You have to say if you want cashback or not by tapping on the screen (can’t use pin pad). Tapping a selection results in a minuscule change in contrast on the button that’s almost impossible to see in part because the buttons are smaller than a finger. And then it still doesn’t move on to the next screen for a few seconds, leaving you to wonder if you actually made a selection of if it’s still waiting because it didn’t register your tap.
So a new user hops on the treadmill, leans on the speed-up button until it feels about right, lets go then hammers the speed down button in a panic as it keeps getting faster! Fun to watch, but a poster-child for how not to do UX!
I think the digital version of the volume knob is a serious downgrade from the old analog version. It's probably cheaper though. The manufacturer saves $10 and I spend the next 5 years swearing at my car right after starting it.
And on top of that, either completely eliminate anything that bogs down the interactivity or at least give me a range of options between Win 98 and Modern lush.
> You can sync Newtons and Palm Pilots with modern desktops
Yep and I am seriously thankful JPilot exists, even though it's one of the most homely programs I've ever used. Keeps my Palm Pilot and laptop in sync with each other with absolutely no issues. Without it I'm not actually sure what I'd do.
Christ, being able to stick it on a dock and hit one button to mirror your entire device onto your desktop was great.
I have major, major issues with distractibility, so having a device that only makes sound when something actually important needs to happen is helpful. I find even with notifications reduced on my phone about half the time when it makes a noise it's not actually important. As such I turn off my phone for the majority of the day.
Additionally, once I clear a notification on the Palm it's not like I can then fall into web browsing on it.
Whether one believes it's a thing or not, I've been diagnosed with severe inattentive ADHD and I find simple, limited use devices really do help me stay on track.
For example, I saw a tear-down of an old game controller. It used a parallel-to-serial chip in the controller, which is a simple commodity chip. Keyboards and mice had very simple ways to communicate with the computer. In contrast, USB is complex, probably the most complicated protocol out there. And it's only getting more complicated. If you want to communicate via USB, best use a pre-existing stack.
Communications protocols of yore were relatively stable. If they were revised, it was infrequently. Today, protocols don't really seem to be designed to be common to everyone. They're more proprietorial.
Compare that to USB-C. One port that I can connect anything to, including power (which I didn't even mention above). To make things even simpler, again for some definition of "simple", it doesn't even matter which way I orient the connector. I can just insert it into the port without thinking about it. This is simpler for the user, but definitely harder to engineer.
Do I want to go back to the old days? No. My main machine when I got started was a C-64 but I also had access to a lab full of Apple II machines, a lab full of TRS-80 machines, and many friends having an Atari 800. They were definitely less complicated than the machines we have today. They were also far less capable, had proprietary interfaces necessitating proprietary hardware, and not at all portable.
We have the equivalent of a supercomputer in our pocket allowing us to communicate with anyone in the world at any time. Even sci-fi never envisioned that! I wouldn't call it a dubious gain.
If I wanted to update my software every five effing minutes I wouldn't have chosen Debian Stable.
Tinyusb seems quite flexible. You can write anything. It seems to have quite a bit of "canned" functionality, too, so if you wanted to write a keyboard host, for example, it's a case of trying to work through one of the demos and adapting it to your needs.
The problem with USB is that there is a lot of assumed knowledge as to how it all works. I only started playing with it recently, and it feels like being parachuted into enemy territory without a map. I wrote some of the basic here: https://medium.com/@oblate_24476/introduction-to-usb-from-a-...
Unfortunately, many simply don't work for 99.9% of the modern Web due to it requiring TLS 1.3. For example, on Windows 98,there is a myth of some Opera version that had TLS 1.3 support, but I haven't had a chance of finding it. TLS 1.2 is the latest one can get
It is quite ironic that it is not JavaScript, or the modern dynamic Web features that prove most difficult to back port to old operating systems, but SSL.
Of course there is the Web proxy that renders modern Web as an image map accessible even to the oldest computers, but this is "cheating" as you really are using a modern OS to sort of pre-digest content. You need a modern OS constantly running to use your vintage machine just in case you might need to download some file from the Web.
This makes me curious. Is that of some new feature compilers that can generate code for those platforms never had?
We'll need to build new network cards with hardware accelerators.
And be back to the stage where the most powerful computer in the office was a peripheral (back then we had a printer with more memory than all our Macs combined and a flashy AMD 29K CPU)
Over the last couple of months I dove into the vintage Macintosh community. In the process of restoring a Macintosh SE/30 and waiting for a Macintosh Quadra 700 to arrive. I've collected a few somewhat rare upgrades, including a DayStar PowerPro 601 that is somehow new in the box. This is a card that can go into the Quadra 700 to add a PowerPC 601 CPU at 100Mhz.
But the things I'm most excited about is the new hardware the community makes to work with these old computers. There are devices like ZuluSCSI and MacSD that let you replace the spinning hard drive with a solid state device that uses an SD card for storage. There is PiSCSI which attaches to a Raspberry Pi and emulates multiple SCSI devices, including hard drives, CDROM, floppy and ethernet.
FloppyEMU acts as a SCSI floppy drive and lets you load up a bunch of floppy images and swap between them without having to make actual floppies.
ADB-USB Wombat lets you use an ADB keyboard with a modern computer, or a modern USB keyboard with an ADB computer. I'm typing this on an Apple Desktop Bus Keyboard (AKA Apple IIgs Keyboard) on my M1 Macbook Pro.
And I'm waiting for delivery of a modern clone of a MicroMac Carrera04 accelerator with an adapter and ethernet for my Macintosh SE/30. This puts a 68040 40Mhz CPU in my SE/30, which normally has a 68030 16Mhz CPU. These accelerators are hard to find so someone on the 68kmla.org forums reverse engineered them, and makes small batches of clones. I had to source my own 68040 CPU, as those are getting harder to find, but I have one on the way.
These old Macs also have a unfortunate tendency to self-destruct if not looked after. The motherboard batteries can leak and basically destroy the inside of the computer. And the old capacitors do their own version of this. So both need to be replaced. Because of that, there are also full logic board recreations for several vintage Macintosh computers, especially the compact Macs. Since the original logic boards have some hard to find parts and some proprietary apple ICs, it requires a donor board, de-soldering various bits, and putting them on the new board.
Much of this stuff is happening in plain view either at 68kmla.org or tinkerdifferent.com
There's definitely a higher barrier to entry with old macs compared to old PCs, but the community has done a good job lowering those barriers over time via devices like the FloppyEMU.
I should have restored an SE/30 like you, but instead I fixed up this[1] Mac, it really is the ship of theseus in computer form.
[1] http://muezza.ca/computers.html#classic2
Right now I've got a Plus I'm working on fixing up. Compact Macs are addictive, you've been warned ;)
If you think this stuff is old: the Computer History Museum (Mountain View) has IBM 1401s that work! https://computerhistory.org/exhibits/ibm1401/
Big Iron, for sure.
And a working PDP-1, which I'd highly recommend visiting. You can listen to some of the earliest computer music and play Spacewar!, the first video game to share or sell more than a single copy (as it were).
How can a NEWTON be "vintage" ???
I thought the lessons would be "remembering to add delay for fly back on the VDU" or "how to code for disk head effects with rotational delay" or "when to use duffs device, and when not in memory constrained 16 bit computers"
13. Years.
1977 was pretty much the debut of the Apple II and TRS-80. 13 years later, 1990, the NeXT Cube was already 2 years old and 486s cutting edge PCs. Lisp machines rose, flourished, and died.
I’m on my 4th iPhone, and will get my 5th next week or so. My original iPod touch still works. My word is it slow.
We should rebuild the basics to reposition the ecosystem.
Even more disappointing, “Show Reader” for iOS safari doesn't work on this site.
Also, people with taste of course used amber-on-black ;)
Amber on black was nice too.