RePalm
dmitry.gr
dmitry.gr
I am a little confused by all the "but why" comments here. Because it's fun! Because it's cool! Because it's full of weirdness, archaisms, and edge cases - working through those is a playful challenge, and conquering them all gives a wonderful feeling of mastery. It doesn't need to be any more 'useful' than any other hobby or game.
For me it stops my mind from wandering and describes to myself why I am writing that function.
It's been significantly impactful; I actually get work done when I can feel like I don't have to address an idea right away out of fear of forgetting it.
1. Derisive, insinuating that the project is silly or a waste of time.
2. Inquisitive, actually wanting to know what motivated the creator to do something that most people don't see a value for, and/or would never have thought to bother with.
We should discourage the former, but IMO we should encourage the latter.
You can write documentation and software for yourself, and share it for no particular reason, or write documentation/software for other people, and share it to help others. If it's the latter, you might care that other people read the documentation, because you think it will be useful and helpful and you want to help them.
As a non-expert, I like having the main and most relevant use cases and underlying motivations of authors and users made obvious. For me, having specific use cases in mind makes documentation easier to read and interpret. If I were an expert in a field and felt the motivation for the documentation was obvious and self-explanatory, I might not feel the need to have it explicitly articulated.
When I write documentation, I often need to refer to the Motivation to stay motivated and stay on target. What are all the great outcomes that are going to come about as a result of the documentation existing? If I didn't have those in mind from the outset, I might not want to write the docs.
He also contributes regularly to apps the community is developing, teaching us hobby devs new tricks. :)
As someone who still uses PDAs regularly, I can't express enough gratitude.
On Linux there's pilot-link (command line) or J-Pilot (GUI on top of that). I don't love the UI for J-Pilot, admittedly, which feels a little rougher than Palm Desktop. A Windows VM is also a common approach.
For devices, there's a dividing line between 68k and ARM.
A 68k will feel more "classic" and will often get you things like AAA batteries and LCD grayscale screens with a bit of an e-ink vibe. Some models like Handsprings are expandable with more "modern" (for 2001) capabilities like extra storage, a camera, or GPS. Some Palm/Sony devices have SD slots too. Most devices of this age involve feature tradeoffs, however. You'll often find color, or AAA, or 16MB of RAM, but not all 3. For a 68k daily driver, you probably want something running OS3.5 or OS4 to avoid the limitations of the super early versions.
ARM models (Tungstens, various Cliés, Treos, etc.) close the gap with smartphones much more--and some literally were. Color, higher resolutions, lithium, media support, SD, bluetooth, wifi, etc. These run OS5+ and having ARM under the hood unlocks an additional class of apps the older ones can't run.
A reminder also to definitely tune one's expectations to the era. Truly modern connectivity requires fiddling and having no-to-rudimentary HTTPS support can make these feel more disconnected today than they originally were. Still, you might also be surprised at how many daily tasks today were achievable 20 years ago in a way that's generally familiar to us now.
1. Their ability to do absolutely everything offline. No need to worry that I won't be able to access something because somewhere without data service
2. The ability to have all the PDA features at my fingertips without being hooked up to the world's biggest attention-killing distraction network.
I do own some, but they don't get used for much (browser-on-the-go, mostly).
Smartphones are definitely better all-rounders, but what I've come to adopt in recent years is a hobby of finding whatever tech/concept seems "best" to me (from any period in time) and then using that. Sometimes that means hardware from 1920, sometimes from today (e.g. I have a current-gen GPU to join the AI arms race). Sometimes that means a modern evolution of the concept without losing the spirit.
Easy examples:
* iPod -> Music player w/ FLAC + 1TB SD
* Gameboy -> Analogue Pocket (or sometimes original hardware)
* A modern standalone camera, etc.
It's sort of like living in the dream version of 2002 where tech stayed hopeful and fun (not sure if that's good or bad). Definitely brought me the most joy in tech I've had in years.
PDAs (and a _lot_ of tech from <2010) have the advantage of still being built entirely to serve the user. For my needs, I basically view it as day-planner or complement to a notepad and don't expect it to be a smartphone. My opinion is that these devices basically "solved" the digital calendar by ~1999 and that almost every calendar feature since (except maybe sharing) usually serves some other business need in addition to the user, or is just clunkier.
A PDA just wants to take good notes, manage the day's work, and be a simple extension of your mind. Most modern tasks (that don't require a network connection to be useful) have apps that still exist and don't spy on you: Food journals, encrypted notes, flashcards, project management, ebooks, cached news, Wordle, period trackers...
So, if your life today doesn't _depend_ on a specific vision of modernity, you don't miss out on much of it while benefiting from some forgotten UX benefits: Offline-first, great UI, week-long batteries (AAA if so inclined), Graffiti input, etc. :)
Out of curiosity, which Music player did you settle on? I am in the market for one and looking for options (currently leaning towards a FiiO M11).
The thought process for the purchase was that I wanted a standalone DAP without a touchscreen (iPod-esque), without wireless connectivity, with expandable storage, and not running Android. The M3K also has good Rockbox support including dual-boot, so I swap between that and the native Linux firmware at times.
I am considering getting a second device of some kind with Bluetooth because there are occasional but persistent times where it honestly would be nice. Ideally it'd still be running a pretty basic OS, though.
I believe you are correct. I was only able to find a listing on Amazon for a used one of the M3K devices. Also found a listing on ebay.
I need a device with Bluetooth as my car doesn't have an auxiliary jack. Suppose that I could also make use of an low power FM transmitter also.
This is the model I use in my own life but with a slight variation:
My server at the datacenter is the core and everything else is a mobile extension of it.
* Westinghouse desk fan. Tanky and moves a ton of air because it has essentially no grill, but I do have it on a kill switch to protect little fingers.
* As @zamnos mentioned, radio. I have several consumer receivers and amateur transmitters from the period. These fall less into the "best" category for obvious reasons, but are more for kids' historical context. I'm exploring arcane combos like a cassette player + tiny AM transmitter + antique radio. Sort of a [mono] stereo with a non-all-you-can-eat music library combined with experiencing the physicality of RF propagation. Also they have standard 1/4" headphone jacks!
* Many books around that age. Tom Swift, Oz, etc.
* A few kitchen gadgets like an electric waffle iron and a hand grinder (I do have modern ones too).
The iPhone has historically been really bad at this, and even regressed. A year ago I had to wake the phone, point it at my face, wait a second, then go to the home screen, open the app, wait a couple of seconds, then navigate to where I wanted to.
Recently, lock screen widgets, shortcuts, and even some siri features have started to make this a little better.
Anyway, this was the first I'd read much about caving and, in browsing around the web, I discovered that Palm Pilots were(/are?) used by serious cavers for mapping caves. Auriga (https://auriga.top/) was the most frequently referenced Palm app I saw; its latest update was in December 2022. Obvious advantages as I understand them are: (1) long battery life coupled with replaceable AAA batteries; (2) a display that can be read in low light without battery-draining backlighting. Phone and wi-fi are useless underground. (I vaguely recall reading somewhere that ~80Khz radios for use in caves were being developed; equally vague memory: I believe initial prototypes were based around audio amplifiers that happened to reach up into that frequency. Okay, a 2018 Hackaday has links to more information, although not about what I [mis]remembered: https://hackaday.com/2018/07/11/ham-designed-gear-used-in-th...)
Also, sometime I saw an article about automotive performance afficianados using a Palm App to interact with their engines' onboard computers -- in the PalmOS Emulator (POSE) on Windows laptops. Obviously they liked the app and I imagine they had a considerable intellectual investment (e.g., historical experimental settings and performance results, etc.) that made them loathe to switch to more modern apps.
But yeah. I cleaned the battery crud out of my Palm M105 last month, put fresh batteries in, and the digitizer is shot. So, back to my phone ... :)
Getting that working up is on my to-do list. Today I use some Python scripts to read engine codes and such, but it's not like I always have my phone or laptop on me. :)
Seeing this a lot recently[1]. I guess you mean the opposite of what this implies ("his impact is less than you could state"), but I'm curious how this has ended up being almost as commonly used as the "correct" form[2]. Is it an in-joke or reference I'm not getting?
1: https://www.google.com/search?q=%22cannot+be+understated%22+...
2: https://www.google.com/search?q=%22cannot+be+overstated%22+s...
Definitely meant the positive version and I have no idea how I transposed those two! Apologies for contributing to the mess and appreciate you catching it. :)
I also did not find any good emulators for Cortex-M class chips. At this point, I took a two-week-long break from this project to write CortexEmu. It is a fully functional Cortex-M0/M3/M23 emulator that faithfully emulates real Cortex hardware. It has a GDB stub so I can attach GDB to it to debug the running code, It has rudimentary hardware emulated to show a screen, and support an RTC, a console, and a touchscreen. It supports privileged and unprivileged mode, and emulates the memory protection unit (MPU) as well.
Also very interesting is the errata section on the STM32F429 errata section [1], that stuff is real gold for people who do advanced stuff on these chips. Very nice to see that published, I hope it gets picked up by search engines (or, better of course, ST themselves if that hasn't happened yet). There should be serious bug bounty for finding hardware errors like these!
[1]: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm#_TOC_7dc6f...
16 bits memory limitation, even at the time that was silly.
Armlets? Extremely hard to write simple native code or to port apps and games from other platforms.
No file system, a custom and rather slow database instead…
But they had tons of documents on how to follow their UI/UX guidelines.
Basically, they had no real kernel upon which building an OS, they tried anyway and it was a mess of epic proportions.
Eventually Symbian (sp?) was better and when Sony killed their Zire division I just have Palm Treo one last chance. It was a bit laggy and the battery didn't last long enough.
I always wanted to give Zaurus a try, but the Linux ones not the Palm ones.
The best kernel at the time was WinCE, good old Win32 API with basic POSIX capabilities for networking, filesystem and memory management.
Microsoft had a winner platform on their lap, but for some reason they invested very little on the platform, I remember talking with someone on the PocketPC team at the time and they were less than twelve developers, and shrinking.
It was the same era when Intel stopped all their investments on the ARM architecture after successfully building the most impressive one at the time (the StrongARM followed by the XScale)
In 2004, the Treo 650 was as good as it got. I LOVED mine, and there was really no other player in the market that could truly best it until Apple landed with the iPhone. (And I say this having sampled best-of-breed Windows Mobile stuff in that era -- the HTC hardware was slick, but WinMo was useless and incredibly dumb.)
They basically started with something very crude that barely did the job, and built stacks on top.
But they had nice frontends, nice hardware, especially the Sony Clié series was quite ahead of its time hardware wise.
Using a Blackberry in the absence of BES (and an Exchange server) was pretty weak sauce.
Palm, OTOH, had a real platform that worked on its own. My Treo could talk directly to my ISP's IMAP server, something Blackberries of the era couldn't do. My Treo made it easy to separate work and personal mail. My Treo's PIM apps were superior to the Blackberry's.
Also, you and I apparently had VERY different experiences with the Clie line. I had one. It was physically interesting but insanely fragile, and for SOME reason needed different sync software than Palm (or Handspring) branded Palms.
When you're doing that you can quite easily get an idea of the weaknesses and strengths of the platform, and I can tell you that PalmOS was quite weak but almost OK at the very beginning but it quickly deteriorated and at the end they could simply not push it forward at all.
Sony did a good job considering, but they simply bet on the wrong horse.
To be honest, Android also started in a very weak state, not the same kind of mess that PalmOS was, but it was riddled with over-engineering and absurd design choices, but with a huge effort they managed to fix the worst parts and still push it forward.
I was surprised they could pull it off.
To be fair to Sony, there wasn't really any other horse to bet on in that era. The problem was their hardware was fragile vs. Palm or Handspring devices.
And there was an attempt at Linux + Qt made by Sharp with the Zaurus and Qtopia.
Symbian had some presence via Nokia devices, but was kinda an also-ran in the US in terms of actual viable smartphone platforms.
WinCE and WinMo were gawdawful and unusable unless you were just really, really drinking the Redmond Kool-Aid.
(Amusingly, if you Google "symbian" now the first link is for a thing that is absolutely not related to smartphones, but which uses a name that is "symbian" without the "m". NSFW.)
It was nothing compared to what came later, but if you were in this business at that time, Symbian was a thing.
You’re not kidding. I had a HTC HD2 and the hardware was very futuristic-feeling (one of the first phones with the original Qualcomm Snapdragon, and a “huge” 4.3” screen that my friends gently mocked for being ridiculously large), but the software experience was leagues behind iOS and Android, despite they themselves being in relative infancy. It would have been pretty nice if it got an update to Windows Phone 7, which was promised but never came.
HTC’s own customisations were the worst part. Their flashy animated home screen was very nice, but the iOS-style threaded SMS app couldn’t deal with threads longer than about 300 messages and would routinely lock up the phone for minutes at a time until you deleted your conversation history.
In the years after I got rid of it people continued to port newer versions of Android to it, but I just remember it being shit at texting and browsing the web—the only things I actually wanted it for.
When it was introduced, there was no iOS yet. And even so, it sucked out loud compared to the 800 pound gorillas of the era, Palm and (in full deployments) Blackberry. WinMo was SO DUMB. I remember discovering the hard way that if you left the browser in the foreground, on-page refresh directives (like CNN used to use) would still be honored even if the device's screen was off. Result? Dead battery in no time.
WinMo also had no way to deal with IMAP mail natively. It was Exchange or POP unless you bought an aftermarket mail client.
True fact: I actually didn't text much until I got an iPhone, so I can't speak to texting on the 8525. I think lots of people my age only came to texting later, whereas if you're like 10 years younger than I am (say, born in 1980 instead of 1970) you probably texted on flip phones in high school or whatever.
They should have kept the kernel and ditched the Shell to build something tailored for the form factor and usage.
And then iphone's multitouch UI drove the final nail.
It turned out easier to use, cloud services (Google apps, iCloud), maps+GPS (G1 had it, iPhone had it soon after), and much better media player features were simply more desirable than enterprise groupware. It also turned out that as cell phone usage normalized, a lot of employers stopped providing cell phones to employees... mostly driven by unlimited talk+text+internet plans... which really favored the non-enterprise-y Androids and iPhones.
In fact most players had divested the market at this stage. The PocketPC team was a skeleton and Symbian was being eaten from inside by competing internal projects.
Apple had a highway.
It was declining but not dead. Palm's swan song, Palm Centro, released in 2007, was a big success. They sold at least 2 million units[1]. According to AdMob, in terms of web traffic, at some point it was the second most popular smartphone in the US (7th worldwide)[2].
[1] - https://web.archive.org/web/20080805094357/http://blog.palm....
[2] - https://web.archive.org/web/20080913073944/http://www.admob....
You're not wrong, but this skips over an even bigger mistake. Arguably 2 in fact.
The kernel of the original 68K PalmOS was, I believe, bought in, just as Apple bought in a Pixo OS for the iPod:
https://apple.fandom.com/wiki/Pixo
PalmOS ran on top of the AMX 68000 RTOS kernel from Kadak:
http://www.kadak.com/rtos/rtos.htm
When Palm moved to ARM chips, it chose not to licence the Arm version of AMX from Kadak. It considered adopting the Symbian kernel:
https://www.theregister.com/1999/10/13/ms_out_in_cold_as/
... but in the end the deal didn't happen.
This was a huge mistake. Symbian was already the smartphone leader and supported multiprocessors, multimedia, and all sorts of fancy features, while being smaller and far less resource-hungry than contemporary rivals such as WinCE or the then-huge Linux. Symbian originally shipped on a circa 8MHz Arm device with 8MB of RAM and no swap: full GUI, full multitasking, Internet stack, etc. No Linux could run usefully on that level of kit.
Symbian already supported GSM phone stacks, Bluetooth, Wifi, all that stuff. It also supported pluggable UI layers, and had about 3 or 4 on sale at its peak: UIQ, a stylus- or touchscreen-driven UI from Japan for keyboardless phones; Series 60, for keypad-driven phones; Series 80, for landscape-orientation touchscreen phones; Series 90, for QWERTY-keyboard-driven PDAs. Adding another for Palm, with a Palm UI and Graffiti, would not have been a stretch.
It would have been a great fit.
Palm decided to write its own instead. Probably it was cheaper. Probably as Palm was mainly American it didn't appreciate that there were tens of millions of happy European and Japanese users with Symbian smartphones that they loved. I was using 32-bit Arm-powered smart devices with the Symbian kernel a decade before the iPhone, and ones running the direct ancestor of Symbian in the early 1990s.
This was commercial suicide #1.
Palm had no multitasking, little media support, and a single-tasking 68000 OS ported to Arm. It was very uncompetitive, but it's all Palm owners knew so they thought it was fine and liked it.
But it did have a comeback attempt.
Palm ended up under the same ownership as Be and the core BeOS team, and it eventually came up with an in-house multitasking media-enabled networked PalmOS, based on BeOS tech, called Cobalt:
https://www.palmsource.com/palmos/cobalt.html
This was commercial suicide #2.
Cobalt looked good but it was too little too late and as far as I know it never shipped on a single retail device.
Palm devices had physical buttons, one of which immediately (0 perceivable lag) opened a todo list
When I used to be have a palm, anytime I was feeling idle I'd pull out my palm and press the Todo list button and see what was next on my schedule. It was literally life changing and every smart device since is a laggy piece of shit when it comes to physical Todo lists.
The Samsung Note series could have been great if it allows for replacing the lock screen with a Todo list that you can interact with, but no, the Note cannot be used as a fucking note pad.
I once burst into the office of the PM in charge of the Tasks ui for Windows Mobile and asked him why we did such a shitty job, but because he had never used a palm before, he didn't even realize what we were shipping was garbage.
Ugh.
If you make it a point though most everyone can find an hour every day to do something like this despite the above. However for most of us it is easier to turn on the TV/youtube/read books/.... Even the more productive things like learn a foreign language, politically support a candidate, and the like. There is lots of competition for your limited time and most people won't make projects like this a priority. Some of the things above are worth doing on their own, some are just a waste of time. (though if you are nearly burned out you probably don't have the energy to spend on more than TV)
One of the projects I am currently working on is restoring an IBM ThinkPad 701CS (https://blog.jgc.org/2023/03/repairing-tiny-ribbon-cable-ins...) which has required a total teardown and rebuild. I started this project in early January and currently have a working machine that's in parts. I work on this when I have time. Which might be for two or three hours a week maximum. Basically, I decided to get satisfaction from small improvements. So, one time when working on this I just cleaned up the battery contacts, another time I replaced the CMOS battery and saw that it was retaining RAM size, another time I repaired the keyboard, another time I just sat down and figured out which parts of the case I needed to 3D print to replace, etc. etc.
I usually have two to three projects ongoing and just pick them up when I have time and inclination.
> I have a demanding job (CTO of Cloudflare)
Please use your influence to bring sturdy, repairable laptops with great keyboards back! I'd buy a cloudflare branded thinkpad clone.
If you want a repairable laptop with a good keyboard, getting a Framework now gets you much closer than hoping someone makes one. Also, you enable and encourage the company that already makes a repairable laptop to eventually sell a great keyboard, which giving your money to Apple or Dell doesn't do.
What do you think of the monitor by the way? Does it compare to e.g. a Macbook even a little bit?
Also, obviously Intel can't compare to an M1, but I hope the new AMD processors will improve on that somehow.
I think big progress will eat up an evening but I think the important point is that it's not a job -- so when it eats up an evening it should be fun and when you've not other important/interesting things to do. I almost never know when I'm going to make progress when I start.
So, in a way, im not surprised he’s done something like this. A work of ¿love? ¿Art?. A testament of deeply knowing the object of his passion.
Take a look at his code and admire it for what it is. Read how he explains it. It’s worthy on its own.
Funny you should say that. There WAS no emulator for any ARM palm devices. Ever. Until I wrote the only one: https://github.com/uARM-Palm/uARM
It wasn't a slight at you. I appreciate good work and also recreational computing. But is reviving Palm a practical endeavour? Nope, sorry.
The emulator is a good idea for whatever abandonware people might want to use. I might try it myself.
This has more value to more people than a painting of an apple, I'd guess. I don't see much point in either of them myself; but I don't have to. I can see the point in them in that they gave their creator joy while making them and even more in that others can appreciate them, even if i can't.
Yes, Palm is useless and archaic of networked features are your #1 use case for a PDA (smartphone) and there’s little use reviving it. However, if you care about old Palm games, or about efficiently organising your life with minimum distractions, then IMO not many modern devices will beat a Palm OS device.
Analogously to MS-DOS, there is a huge application base that you can dip into for most tasks that don’t require online access, that can still be used today. The UI is miles ahead of both iOS and Android, IMO (in both responsiveness and look-and-feel), if you are willing to work within its limitations (that include using a stylus). Dmitry is even working on Unicode support.
I’m glad that RePalm exists. If it didn’t, all we’d be left with is emulators and devices that are starting to fall apart.
Learning to count every byte has value today too, and this is practice in that skill
It's worth noting that this also describes virtually all poetry, the rules of all sports, etc. :)
nobody is trying to bring back C64 compatibility as a practical platform though, they are working on emulators and in the legacy machines themselves
I love the C64 demo scene myself, it was my main introduction to computing back in the day
I see a big opportunity should rePalm be ported to generic low cost embedded hardware. ESP32(|ARM|Risc-V) board+LCD+LTE module, all costing a dozen bucks each or less, would make the basis for a powerful dumbphone for when manufacturers will cease any production of them. I would personally love to have such a device.
Broadly speaking, PalmOS had filesystems, networking, graphics and interface controls, sound, hardware access and more. Who cares if I can't watch high resolution movies or play AAA games with it, the goal should rather be to use it to do things where Linux is not only overkill but also would require hardware that cost a lot more. Forget about phones and PDAs, if I want to build an I/O panel with buttons and display for some instrument, a light OS like this one could help to lower costs by doing it on much cheaper hardware.
Note that it wouldn't even be a dumbphone by definition if it has an OS running arbitrarily installed software on it.
Not having to design and explain API is a plus
perhaps worth a shot but I seriously doubt the compatibility is going to be worth enough for enough people, instead of just running an emulator
Over 13 years ago I wrote an online tool (palm2csv.com) that converts Palm Datebook (Calendar) and To Do (Tasks) to CSV and iCal/ICS format. To this day people continue to use it and email me with stories of how they love Palm Desktop and their Palm device, and are reluctant to give it up in exchange for a modern phone.
Needless to say, it never saw the light of day but I still remember that we had to ask the PalmOS engineering group to create a hardware layer thread so that we could do network I/O in parallel with running the user app.
It was an enormously challenging platform to work with.
> Most people would not take on a task of writing a just-in-time translator alone. But that is just because they are wimps :) (Or maybe they reasonably assume that it is a huge time sink with more corner cases than one could shake a stick at)
Basically can we create a secure computing & networking stack from scratch that can work on these devices, and build a useful ecosystem around it? For example the Gemini protocol could be a great starting point for an internet-like connected experience.
One can always dream. In the mean time, thank you for doing the Lord's work Dmitry!
The POSIX port of FreeRTOS (FreeRTOS running on top of Pthreads) has a way to emulate this behavior. All tasks are threads and all but one stays suspended at any given time. The FreeRTOS scheduler can switch out which task is allowed to run by sending signals to their respective thread. This allows the tasks to operate as if the FreeRTOS scheduler is in control as normal and the Linux scheduler only has an opportunity to run the one thread flagged by the signalling mechanism.
Bravo!
Initially when I started I did run it under arm Linux on a Chromebook
That is exactly the display type I would love to be able to use for a bit of typing up while sitting outside in the sun.
It is both transmissive and reflective. With back light, light goes through it. Without backlight, light is reflected off of
That OS had was really a solid foundation, I have no idea why MS abandoned the project. To make modern UI layer on top of it and it may fly.
Up until last year my Sciter ( https://sciter.com ) worked on WinCE.
Dropped support after my last customer that was using WinCE decided to drop support of that OS.
WinCE had pretty solid and stable core runtime and API. Graphics was limited by GDI (no antialiasing and alpha channel) but that was the only major problem.
Don't see any intro or summary. Just "history" and then diving straight into the details.
(Seems this particular example doesn't equate to a paid job but there are certainly analogs in the career world)