Show HN: A new native app for 20 year old OS X

uppercut.chadbibler.com

142 points by chadkeck 6 days ago

A few of us here are probably familiar with the original Xbox modding scene and the iconic xbins FTP server. Recently, I came across an amazing tool called Pandora by Team Resurgent [0], which got me thinking about how incredible something like this would have been 20 years ago. Just to clarify, I had no involvement in creating Pandora—I’m just inspired by their work.

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

[1] - https://uppercut.chadbibler.com

[2] - https://github.com/chadkeck/Uppercut

Lammy 3 days ago

Very cool. Is Tiger the minimum bound for the app itself, or just for the Intel Mac? I have 10.1 on a Wallstreet and can give it a shot if not.

> 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 3 days ago

    > Very cool. Is Tiger the minimum bound for the app itself, or just for the Intel Mac? I have 10.1 on a Wallstreet and can give it a shot if not.

    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 3 days ago

I so miss this look and feel.

  • NikkiA 3 days ago

    I actually liked the stronger pin stripes on Jaguar

    • p_ing 3 days ago

      Same! And I really liked the pill on the upper right of each window. Brings back that Mac OS feel.

      • xattt 3 days ago

        I would best guess that each era of Mac OS design was heavily intertwined with display technology of the time. Pinstripes were for CRT raster. Brushed metal detail was for LCDs. “Sparkly” metal in Leopard was for higher res LCDs, and so on.

cmiller1 3 days ago

Nice, it's a universal binary! Works great on my PPC machine.

  • chadkeck 3 days ago

    Good to know, thanks for testing on PPC.

landr0id 3 days ago

Cool project! I remember back in the day having to poke my friends with xbins upload access to drop things for me. It wasn’t super clear who anyone involved with the service was in that capacity. I’m surprised xbins is still kicking and with the same model it used to have, but it’s kinda cool at the same time.

eahm 3 days ago

"The tool we all wished we had back in 2005 for homebrew development and exploration." but we did have one, it was called Auto-Xbins, it had an integrated console irc client and FileZilla.

I even used to release my own version with updates etc., cool stuff. Even this new project is cool.

  • chadkeck 3 days ago

    I never came across Auto-Xbins, but it's good to know it existed. Hopefully it got a lot of use over the years.

troad 3 days ago

This is really neat!

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.)

ralphc 3 days ago

Can you give some examples of the prompts you used to get Claude to generate the old-enough code?

  • chadkeck 3 days ago

    Here's the prompt I ended up with after several iterations of Claude trying to spit out Objective-C 2.0 code:

    "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 2 days ago

      Any reason Xcode 2 was chosen? Wouldn't have Xcode 3.2.6 on Snow Leopard but targeting OS X 10.4 and including ppc as an architecture also worked?

      • chadkeck 2 days ago

        > Any reason Xcode 2 was chosen? Wouldn't have Xcode 3.2.6 on Snow Leopard but targeting OS X 10.4 and including ppc as an architecture also worked?

        I forget exactly why I used Xcode 2.5, but I wanted to do it on Tiger since that OS was the one around the time Xbins started. It probably would've been a bit nicer working in Snow Leopard, but I just chose Tiger.

  • asow92 3 days ago

    I asked Claude "As a developer writing for mac os x 10.4 tiger on Xcode 2, write me a hello world mac app with a button that outputs the string "hello world" to the console" and it seemed to produce correct results in Objective-C.

ChrisMarshallNY 3 days ago

A labor of love!

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 3 days ago

    > 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.

    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.

    • chadkeck 3 days ago

      > 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.

      I used Claude heavily for this project. I doubt I would've put the time in to get this to an acceptable release state without being able to use Claude. I did buy a few old books and reference them for Xcode things, but most was done with Claude.

gizajob 3 days ago

I always feel like Tiger was the pinnacle of the Stevesie era

Wowfunhappy 3 days ago

Thank you OP, it's great to see new apps for old OS X!

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 3 days ago

    > One thing I noticed is that the main menu has some items I don't think apply to your app:

    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 3 days ago

i love you this is amazing

mrcwinn 3 days ago

Meh. I'm holding out for Leopard. Sure hope it's good!

  • Wowfunhappy 3 days ago

    I'd expect an app that targets Tiger to work fine in Leopard as well!