Show HN: A new native app for 20 year old OS X
144 points| chadkeck | 1 year ago |uppercut.chadbibler.com
For those who aren’t familiar, getting access to xbins involves a rather dated process. You need to connect to a channel on an EFnet IRC server, message a bot for temporary credentials, then plug those credentials into your FTP client to access xbins. Pandora (and my app) simplifies this entire workflow into a single click.
Inspired by Pandora, I decided to build my own take on what this dream tool might have looked like back in the day. I wrote a native Mac app on original hardware—an Intel iMac (20-inch, 2007)—running a 20-year-old operating system, Mac OS X 10.4 Tiger.
This was my first foray into native Mac app development, though I’ve done some iOS development in the past. The result is Uppercut [1], and the source is available on GitHub [2].
For the development process, I used Claude to help with a lot of the coding, especially since I was constrained to Xcode 2.5 and the pre-“Objective-C 2.0” features available at the time. I had to be very specific in prompting Claude to avoid newer features that didn’t exist back then. Since the majority of Objective-C code out there comes from the era of iOS development (which relied heavily on Objective-C 2.0 until the arrival of Swift), this was a unique and challenging exercise in retro development.
[0] - https://github.com/Team-Resurgent/Pandora
Lammy|1 year ago
> thinking about how incredible something like this would have been 20 years ago
There are a couple of iterations of this idea that are slightly older than Pandora. Key word “Easy-Xbins” or “AutoXbins”: https://www.se7ensins.com/forums/threads/how-to-use-auto-xbi... (2007)
The one I liked most for Windows was called Auto Xbins 2009 and had embedded mIRC which would trigger every anti-malware system under the sun due to looking exactly like malware C&C lol
chadkeck|1 year ago
I recall seeing stuff in Xcode about building for down to 10.2, but I don't have anything set up to test on 10.2. I'd bet this build won't work on 10.1.
TheSmoke|1 year ago
NikkiA|1 year ago
cmiller1|1 year ago
chadkeck|1 year ago
landr0id|1 year ago
eahm|1 year ago
I even used to release my own version with updates etc., cool stuff. Even this new project is cool.
chadkeck|1 year ago
troad|1 year ago
It's a real shame there's nothing like Wine for the late PPC/early Intel era of OS X. That entire galaxy of apps basically just no longer have anything to run on. I would love to fire up a game of Pac the Man X, but no dice.
(I'm aware of Darling, but its development seems to have stalled.)
miles|1 year ago
PPC apps run great in QEMU/UTM on Apple silicon:
Run Tiger, Leopard, or any Mac OS X PowerPC version on M1 https://tinyapps.org/docs/tiger-on-m1.html
Intel emulation works too, but is not nearly as performant at present:
Virtualizing OpenCore and x86 macOS on Apple Silicon (and even iOS!) https://khronokernel.com/apple/silicon/2021/01/17/QEMU-AS.ht...
Emulating Windows XP x86 under M1 Mac via UTM & QEMU https://tinyapps.org/blog/202105220715_m1_mac_emulate_x86.ht...
ralphc|1 year ago
chadkeck|1 year ago
"This project must generate code that works with Mac OS X Tiger 10.4, Xcode 2.5, and Objective-C 1.x. The Objective-C code generated MUST NOT have ARC, blocks, @property, @optional, @try, @synchronize, NSInteger, auto-layout, or modern features, NSCharacterSet doesn't have newlineCharacterSet. I know it's an old, obsolete version but I must use it.
Generate clean code with comments and debug logging to NSLog."
asow92|1 year ago
ChrisMarshallNY|1 year ago
Thanks for sharing it!
I probably won't use it, though.
On a practical note, when I release apps, I generally try to support as far back as possible (usually a couple of major releases). Supporting these can be challenging. I can only imagine what this was like.
Wowfunhappy|1 year ago
This isn't to diminish OP's work, but I imagine it's quite a bit easier if you're only targeting an older platform.
Basically, just write the software as if it's the year your target platform was released. It shouldn't be more difficult than writing any software was back then. Heck, it may even be easier because you have access to more modern tools, like AI.
gizajob|1 year ago
Wowfunhappy|1 year ago
One thing I noticed is that the main menu has some items I don't think apply to your app:
https://i.ibb.co/7rXcMCH/Screen-Shot-2025-01-26-at-7-37-12-P...
Page Setup? Print? Unless there's an aspect of your app I'm missing, I think you want to get rid of these.
The other menus also have some stuff you may want to cut down on. Correct me if I'm wrong, but, I don't think you can actually open files in this app, right? So then `New` `Open`, `Open Recent` and so on probably shouldn't be there.
I'm using 10.9 instead of 10.4, still pretty old but a lot newer than Tiger, so if this is OS specific please ignore me. :)
----------
Edit:
Your app stopped loading new categories for me, so I tried disconnecting and reconnecting. When I tried to reconnect, it never completed. Then I saw this in Console.app:
```
1/26/25 7:44:36.466 PM Uppercut[80462]: IRC | Received message: NOTICE AUTH :*** Found your hostname :irc.swepipe.se NOTICE nZuLWvRtl :*** Banned Temporary K-line 4320 min. - Open proxy found. See http://rbl.efnetrbl.org/?i=###.###.###.### for more information. (2025/1/27 00.37) ERROR :Closing Link: syn-###.###.###.###.###.###.com (*** Banned )
```
(I've censored my IP address by replacing it with #).
Is it possible the irc server detected your app as malicious activity? It is a bot, after all. But I don't know why it would only happen for me?
It's theoretically possible there is something else wrong with my network, but (1) I took a quick look at my router's traffic and did not notice anything amiss, and (2) I wasn't banned when I first started using your app, and I am now.
On yet another separate note, I tried checking the log window in your app (window → show log) before I checked the system Console, but it was empty. If you're going to have a log window in your app, IRC connection messages might be a good thing to put there!
chadkeck|1 year ago
Yep, I'd forgotten about those default menu items and need to remove them in a future version.
> Is it possible the irc server detected your app as malicious activity?
Yes, during my testing I got banned with a similar message from one of the servers. Uppercut randomly selects an EFnet server from a list, so trying again may have everything go smoothly. I'm not sure what exactly some servers are looking for to determine a ban or not.
randall|1 year ago
mrcwinn|1 year ago
Wowfunhappy|1 year ago