Nothing made me feel older than going to the Computer History Museum in Mountain View, CA and seeing a Palm Pilot in the display case.
It should be illegal to show things which were an integral part of your life, a short 30'ish years ago, as if they were uncovered in the ruins of some pre-civilization. Not fair at all.
I still have my original PalmPilot in a box in the attic. Its existence was a huge life lesson for me.
I asked my boss to pay for it (he did) but he said: do you use anything to organize your life and projects right now? If you don't, I don't think a PalmPilot will help you.
I find that often, having a tool that enhances something you never did doesn’t make you start doing that thing.
But there are exceptions. I never had an address book or calendar until I had a Palm Pilot. It might have just been that I was becoming an adult at the time, but part of it was probably a barrier to use factor. The Palm was a small thing I could carry to class, keep near my phone, bring to my internship job, etc. It and the need for organizing did conspire to make it my first real organizer and my first time having that information organized at all.
This one's funny because on one hand you have young people finding their grandparents Game Boys in the attic but on the other you'll have kids of the same age recording YouTube videos about GB modding, because that scene is still huge, diverse and very lively.
As someone who had a gameboy growing up, and now a child, I had to quickly do some math to console myself that I'm not yet "Grandfather" age. This is simply a (now) old man who had fun toys as a (normal age) adult.
The Computer History Museum also has a Dreamcast on display and that bothered me way more because there is some unresolved traumatized part of my brain left from when I was a teen still actively waiting for Dreamcast to make it's big comeback
At the Science Museum in London, there is a collection of mobiles phones, computers and consoles in one gallery. My partner and I take great joy in pointing out all the ones we've owned over the years, it's great fun to see them again.
I still have my Visor with its VisorPhone module, the very first touch-only smartphone in existence, 5 years before the iPhone :) It was big, clunkly and relatively impractical (the Visor ran on 2 AA batteries, while the phone module had its own rechargeable battery) but the complete integration with Palm Desktop (later jPilot on Linux) was a breeze.
I still have a section on my homepage about how to create and flash custom ROMs for the Palm Vx - and somewhat surprisingly, I still now and then get emails from people asking for help with that.
the Museum of Science and Technology (MOST) in Syracuse has a display regarding the history and tech of cell phones. Our children were also incredulous that the nokia brick was what passed as our first cell phones.
This PumpkinOS project is pretty incredible. I can't imagine how much effort it would take to be compatible with all the system calls that the average Palm app would expect. I remember Palm did some truly weird things with memory: anything moderately large would need to be put into a special memory block that the OS could rearrange at will, and one would need to lock the block's handle to keep it stable while accessing it. Stuff like that must have been challenging (and fun) to implement in PumpkinOS.
This brings me back. I used to make little games for Palm OS, and I was so excited for the next version of the OS which would let one use the (then new) Palm OS Development Suite to make programs. It was also the last OS I've used where an app had a central event loop. Everything else today has UI frameworks that handle it for you. Things are easier now, but I still miss it.
> It was also the last OS I've used where an app had a central event loop.
Windows is still like that if you use Win32 APIs directly.
All GUI toolkits ever made are like that, but in most of the modern ones, this queue and loop are usually internal and you can only infer their existence by looking at the stack in a debugger or when something crashes.
> Windows is still like that if you use Win32 APIs directly.
Which is basically the only option for C and C++ developers, when using vanilla Visual Studio, unless they want to write libraries to be consumed by .NET instead, or use a third party framework.
It is either raw Win32 or MFC, don't even bother with WinUI.
> anything moderately large would need to be put into a special memory block that the OS could rearrange at will, and one would need to lock the block's handle to keep it stable while accessing it
Didn't 16-bit Windows and classic Mac OS do something similar? If you're doing multitasking on a system without an MMU then I think that kind of live heap defragmentation would have been practically required.
Yes. The idea wasn't to get away with not having an MMU, though - it was to get away with shipping the Mac with an ungodly low amount of RAM for a machine with a GUI. I believe the original idea was to ship with like 64k or something?
Obviously, with the state of mobile hardware back then relocatable blocks were also similarly necessary in order to save RAM.
For anyone wondering, no, this isn't the thing that made classic Mac OS unfit for multitasking. The MMU is necessary to keep applications from writing other apps' heaps, not to do memory defragmentation. You can do some cool software-transparent defragmentation tricks with MMUs, but if you're deciding what the ABI looks like ahead of time, then you can just make everyone carry double-pointers to everything.
Classic MacOS did, but it's definitely not something needed for multitasking without an MMU. For instance AmigaOS didn't do this, but instead effectively had a single shared heap.
Windows 16 bit did, but it required a MMU anyway, at least since Windows 3, that was its big feature, 16 bit protected mode and a VM mode for running MS-DOS.
> I remember Palm did some truly weird things with memory: anything moderately large would need to be put into a special memory block that the OS could rearrange at will, and one would need to lock the block's handle to keep it stable while accessing it. Stuff like that must have been challenging (and fun) to implement in PumpkinOS.
That’s extremely easy on modern hardware with gigabytes of RAM (compared to 2 megabytes on the pal pilot III): just use malloc, never move memory around, and make locking and unlocking such blocks no-ops. If there is an OS call to determine lock state, you’ll have to store that somewhere, but that isn’t difficult, either.
It also isn’t hard to implement the way they did back then; it ‘just’ complicates using it.
One nice thing about modern hardware would be that you wouldn't exactly be memory constrained. You'd get to implement a complicated API with whatever large size chunk of memory you wanted, since 128 MB of ram or how ever much they came with is peanuts today.
> since 128 MB of ram or how ever much they came with is peanuts today.
The first Palm (Pilot 1000) had 128 kB. I think the biggest 68k Palm was the Palm Vx with 8MB. Towards the end of the (Intel) ARM Palms, they did have 128 MB models though.
So hype to lose some hours playing Space Trader. I had a Palm Vx in middle school and I have some very fond memories of playing that game under my desk in class.
I still miss the calendar and contact apps from the Palm. I stuck with Palm up until the Centro - and haven't found contact/calendar apps I'm as happy with as the Palm versions yet. They're either missing some simple basic features, or the UI is needlessly complicated.
You could run the whole thing in Wasm and have Palm apps running everywhere. It would be like how people are running DOS apps in webpages non ironically
I remember investing in Palm thinking that they'd eventually be the ones to build something like the iphone. Sadly, they didn't and when apple did that was it for them.
Arguably, what ultimately brought Palm down was their early success and the huge library of existing shareware and freeware tools:
They desperately needed to try something new (Palm OS was just showing its age as a single-threaded, in-RAM, non-virtual-memory-based OS), but couldn't, since it would have alienated long-time fans by stranding their existing software libraries.
They could never work their way through that chicken-and-egg problem (and all of the split ups (OS vs. hardware), forks/spin-offs (Handspring), and re-mergers didn't help either) until it was too late: Cobalt OS never saw any devices, and the Pre was an ambitious new start but would have had a tough time against the iPhone even if it would have launched earlier than that.
Thank you for mentioning it. It makes me feel like I'm taking crazy pills when people talk about how Steve Jobs invented the smartphone. I had a series of Treos starting with the Treo 270: https://en.wikipedia.org/wiki/Treo_270
As somebody who carried a Palm for years, it was so amazing to suddenly have the internet in my pocket. It still is, really.
Apple was able to manage this with a much bigger market and a lot more apps (when transitioning to OS X), so while it would be hard, I think Palm could have been able to do that as well.
But as you say, the company structure, market position and a lot more worked against them (same thing with Nokia and Symbian).
I think it was their lack of vertical integration that did it. there were too many pieces that every developer needed to do, that made it really hard to make apps for it. compare that to the app store where Apple just takes a 30% cut, which is steep, but they do things for that 30%. On the consumer end of things, the actually affordable data plan with att at launch, which is more vertical integration, rather than letting the carriers do their thing, is what did it, imo.
Samsung SPH-i300, 7 years before iphone 1, and iphone 1 didn't even have apps.
I loved that thing. Audibl.com player app, 3rd party apps to integrate phone dialer and contacts db, internet... 14.4k internet but internet! email, browser, ssh and irc clients, even a vnc client, thousands of random apps for every little thing like today, color grid icon home screen, touch screen, sdcard, in 2000 or 2001.
I'm going to blame it on Palm's flat refusal to move onto PalmOS 6. Every time a new device came out and it was still on PalmOS 5 the whole community was like "what the fuck are you doing?"
One big problem is that Palm split into PalmSource for software and Palm One for hardware. PalmSource went off to design Linux-based OS, got acquired, and disappeared. Palm One, renamed back to Palm One, made some early smartphones with PalmOS. But PalmOS was pretty obsolete by then, with 16-bit apps running on 32-bit OS.
Then Palm developed webOS, which made some weird hardware decisions and couldn't compete with iPhone and Android. But it could have been a contender, better than Blackberry and Nokia that didn't make jump to capacitive screens.
I think Palm's problem was being too late, but if they hadn't split and made PalmOS successor, they would have missed capacitive smartphones.
I've heard blame partially put on carriers - they initially resisted even carrying the Treo line without putting limits on what Handspring could do with it.
Apple had the iPod - and, crucially, customers - could bring these customers to the carriers, and so they could dictate more.
What would it take to get this on modern (or even last generation) phone hardware?
I bet we could do everything we want with tremendous simplicity and out of this world battery life... Probably would make a PinePhone feel like a Rolls Royce.
According to the README, it runs natively on ARM but it looks more like a program than an OS. So I'm sure it can be updated to run on Android or iOS if the GUI code is rewritten with their respective frameworks but making a bootable OS seems more difficult. The author wrote an article last year about making it a bootable OS by using a barebones x86 kernel and QEMU so I'm sure it could probably be repurposed for ARM devices. [1]
Cloudpilot is amazing, one of the most sophisticated PWAs I'm aware of! I haven't heard of Vexed, but for me, bringing back Space Trader made me very happy.
It should be illegal to show things which were an integral part of your life, a short 30'ish years ago, as if they were uncovered in the ruins of some pre-civilization. Not fair at all.
I asked my boss to pay for it (he did) but he said: do you use anything to organize your life and projects right now? If you don't, I don't think a PalmPilot will help you.
He was so right.
But there are exceptions. I never had an address book or calendar until I had a Palm Pilot. It might have just been that I was becoming an adult at the time, but part of it was probably a barrier to use factor. The Palm was a small thing I could carry to class, keep near my phone, bring to my internship job, etc. It and the need for organizing did conspire to make it my first real organizer and my first time having that information organized at all.
One of the younger seniors says “I remember when my Dad used a palm pilot!” The room had the same experience.
On the other hand, there some special sense of nostalagia for what I was doing back on those days.
This brings me back. I used to make little games for Palm OS, and I was so excited for the next version of the OS which would let one use the (then new) Palm OS Development Suite to make programs. It was also the last OS I've used where an app had a central event loop. Everything else today has UI frameworks that handle it for you. Things are easier now, but I still miss it.
Windows is still like that if you use Win32 APIs directly.
All GUI toolkits ever made are like that, but in most of the modern ones, this queue and loop are usually internal and you can only infer their existence by looking at the stack in a debugger or when something crashes.
macOS/iOS/etc have a central event loop in Cocoa - what more only initial thread is allowed to talk with windowserver!
Xlib pretty much enforced single event loop per connection - XCB allowed more.
In comparison, win32 applications can create an event loop ("message pump") per thread, and you can use GUI calls completely independently on them.
Which is basically the only option for C and C++ developers, when using vanilla Visual Studio, unless they want to write libraries to be consumed by .NET instead, or use a third party framework.
It is either raw Win32 or MFC, don't even bother with WinUI.
Didn't 16-bit Windows and classic Mac OS do something similar? If you're doing multitasking on a system without an MMU then I think that kind of live heap defragmentation would have been practically required.
Obviously, with the state of mobile hardware back then relocatable blocks were also similarly necessary in order to save RAM.
For anyone wondering, no, this isn't the thing that made classic Mac OS unfit for multitasking. The MMU is necessary to keep applications from writing other apps' heaps, not to do memory defragmentation. You can do some cool software-transparent defragmentation tricks with MMUs, but if you're deciding what the ABI looks like ahead of time, then you can just make everyone carry double-pointers to everything.
I assume this is what `{Local,Global}{Lock,Unlock}` were for when combined with `{Local,Global}Alloc({L,G}MEM_MOVEABLE)`
Similar idioms occasionally persist in modern code - e.g. when dealing with FFI in GCed languages (C#'s `fixed` statement pins memory in place.)
That’s extremely easy on modern hardware with gigabytes of RAM (compared to 2 megabytes on the pal pilot III): just use malloc, never move memory around, and make locking and unlocking such blocks no-ops. If there is an OS call to determine lock state, you’ll have to store that somewhere, but that isn’t difficult, either.
It also isn’t hard to implement the way they did back then; it ‘just’ complicates using it.
Deleted Comment
The first Palm (Pilot 1000) had 128 kB. I think the biggest 68k Palm was the Palm Vx with 8MB. Towards the end of the (Intel) ARM Palms, they did have 128 MB models though.
PumpkinOS / 3 years ago|52 comments
https://news.ycombinator.com/item?id=28466858
Related discussion on rePalm:
PalmOS on Raspberry Pi 169 points by Tijdreiziger on Sept 10, 2021 | 86 comments
https://news.ycombinator.com/item?id=28487817
https://f-droid.org/en/packages/com.brucelet.spacetrader/
https://play.google.com/store/apps/details?id=com.access_com...
Arguably, what ultimately brought Palm down was their early success and the huge library of existing shareware and freeware tools:
They desperately needed to try something new (Palm OS was just showing its age as a single-threaded, in-RAM, non-virtual-memory-based OS), but couldn't, since it would have alienated long-time fans by stranding their existing software libraries.
They could never work their way through that chicken-and-egg problem (and all of the split ups (OS vs. hardware), forks/spin-offs (Handspring), and re-mergers didn't help either) until it was too late: Cobalt OS never saw any devices, and the Pre was an ambitious new start but would have had a tough time against the iPhone even if it would have launched earlier than that.
Thank you for mentioning it. It makes me feel like I'm taking crazy pills when people talk about how Steve Jobs invented the smartphone. I had a series of Treos starting with the Treo 270: https://en.wikipedia.org/wiki/Treo_270
As somebody who carried a Palm for years, it was so amazing to suddenly have the internet in my pocket. It still is, really.
But as you say, the company structure, market position and a lot more worked against them (same thing with Nokia and Symbian).
[edit: referring to Treo specifically, not the rest...]
I loved that thing. Audibl.com player app, 3rd party apps to integrate phone dialer and contacts db, internet... 14.4k internet but internet! email, browser, ssh and irc clients, even a vnc client, thousands of random apps for every little thing like today, color grid icon home screen, touch screen, sdcard, in 2000 or 2001.
Then Palm developed webOS, which made some weird hardware decisions and couldn't compete with iPhone and Android. But it could have been a contender, better than Blackberry and Nokia that didn't make jump to capacitive screens.
I think Palm's problem was being too late, but if they hadn't split and made PalmOS successor, they would have missed capacitive smartphones.
Apple had the iPod - and, crucially, customers - could bring these customers to the carriers, and so they could dictate more.
https://www.youtube.com/watch?v=b9_Vh9h3Ohw (the part I'm referencing is about 20 minutes in).
They were no iPhone, but they were extremely efficient work tools.
I bet we could do everything we want with tremendous simplicity and out of this world battery life... Probably would make a PinePhone feel like a Rolls Royce.
https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
https://cloudpilot-emu.github.io/
When I installed it and could play Vexed again... ahh, the happiness!
https://f-droid.org/en/packages/com.brucelet.spacetrader/