Show HN: I took over Painteresque, a 14 year old Objective-C app and rebuilt it

apps.apple.com

108 points by busymom0 2 days ago

Around 3 weeks ago, I came across a reddit post from someone who was looking to see if anyone was interested in taking over a 12-14 year old objective c app which hadn't been on the app store for many years. I responded and decided to do it.

The app is called Painteresque. It lets you turn photos to charcoal drawings, paintings etc while doing all the processing locally on device:

https://apps.apple.com/ca/app/painteresque-photo-to-sketch/i...

The app is entirely free to use, has no ads, third party analytics, trackers, subscriptions or other junk. It does offer 5 options for tips (which are basically consumable in app purchases), portion of which I will share with the original developer. However, based on my past experiences with tips, they are rarely given by users.

Here's a screenshot of the OLD app:

https://i.imgur.com/fPhoqlp.jpeg

The old app was built like 12-14 years ago in a combination of objective c and vanilla C. The "filters" were built in C while the UI was in objective c.

The codebase was so old that it wasn't even using ARC (Automatic Reference Counting).

The app would also instantly crash because back in those days, using the camera or adding photos to photo library didn't require declaring permission things like `NSCameraUsageDescription`, `NSLocationWhenInUseUsageDescription`.

Also had to remove obsolete frameworks to get it to run on devices iOS 12 onwards.

It was also not built for retina displays, nor handling safe area layout guides.

After fixing all these things, I got the old app to work on phone. But the UI was very rough and rudimentary. Back in those days, it would get approved by Apple. But nowadays, Apple is very strict about these things.

So, I decided to rebuild the app from scratch in Swift with, what I think, is a better UI design. I still used the old vanilla C code for the filters with some small changes and extra filters of my own. But the rest of the UI is all from scratch. I also incorporated things like `NSOperationQueue` for background processing of the image filtration as it can take a few seconds to generate. I incorporated caching of the images, preview thumbnails etc. to disk because the current phones have cameras which take humongous photos that can use a lot of ram if kept in memory.

The only package dependency the app uses is SnapKit to make auto layout simpler. The UI is made with code instead of storyboards.

The App Store screenshots are all made by me from scratch using Photopea, a browser alternative to Photoshop. The app icon is still the old icon, except I changed the background to be an off-white color instead of the old blue color to make it look a bit more modern.

Overall, this process took about 3 weeks. Most of the important work was done in about 1.5-2 weeks. The rest of the time was spent adding things like tipping in app purchases, UI improvements, tweaking the filters, adding feedback button etc.

The App Store review was fast. I submitted at 6:30 PM and it was approved at 4 AM. Also got an update approved last night to fix some slowness issue when opening new images.

The new app on iOS is only around 1.8 MB, most of it used by images for the buttons and app icon.

Ask me anything you'd like about this experience. Have any of you taken over an old app and rebuilt it?

Terretta a day ago

I had this app. Great job!

PS. Thank you for Hack, one of the only YC clients that's perfect on mobile and supports all features: https://apps.apple.com/us/app/hack-for-yc-hacker-news-reader...

  • nozzlegear a day ago

    What a coincidence, I'm using Hack right now! I second it being perfect on mobile, really great app. My only nitpick: I wish it wouldn't reload the entire app view when switching from dark mode to light and vice versa, losing my place and the story I was reading.

  • busymom0 a day ago

    Thank you. Glad you like both my apps!

    • fragmede a day ago

      Hack has this bug where it doesn't let me a share comment if I wrote the comment in reply to another comment I wrote

      also, I get a notification if I reply to my own comment.

      can I get notifications for replies to replies to comments I've made?

      • busymom0 a day ago

        > Hack has this bug where it doesn't let me a share comment if I wrote the comment in reply to another comment I wrote

        Let me have a look and fix it.

        > I get a notification if I reply to my own comment.

        Hmmm, I feel like this should be the intended behaviour. But maybe I can add a setting to disable this behaviour.

        > can I get notifications for replies to replies to comments I've made?

        Unfortunately, I don't think this would be possible due to the limitations of the HN website itself. Remember that HN's api is very rudimentary. So the whole notification system in my app works using scraping of the newest comments. This would require me to keep track of every single comment and its parents and that's just not feasible.

Gys a day ago

You did a good job! Will try it later.

> The app is entirely free to use, has no ads, third party analytics, trackers, subscriptions or other junk. It does offer 5 options for tips (which are basically consumable in app purchases), portion of which I will share with the original developer. However, based on my past experiences with tips, they are rarely given by users.

I noticed the 'in app purchases' remark. Generally (not in this case) a little annoying, good that you explain. Because Apple does not seem to offer a more clear option to explain what these purchases may be, feature wise of price wise. Sorry for the rant :/

  • ludwigschubert a day ago

    Hm, I’m not sure from your comment if you’ve seen this: if you scroll down on an app’s App Store page, there’s an “Information” section with an “In-App Purchases” subsection that you can expand to see all In-App purchase names and their associated prices.

    • pan69 a day ago

      Even after you pointed it out, I really had to search the page for it and finally found it tucked away if the far bottom right corner of the page.. I can totally imagine that for those who do not know where to look specifically, that they'll never see this information.

  • busymom0 a day ago

    Yes. Even though they are called tips (they do not unlock any features in the app), they are still mandatory to go through Apple and they take their 15-30% cut.

  • Terretta a day ago

    In-App Purchases

    Godzilla Tip: $19.99

    Amazing Tip: $9.99

    Generous Tip: $5.99

    Nice Tip: $1.99

    Kind Tip: $3.99

fadesibert a day ago

This is a really fun app. I took a painting class for a few years in an effort to exercise the other side of the brain - and this does what I failed to do with tens of hours of effort with GIMP, and no amount of prompt magic could do with $LLM.

I trust your tip jar gets and stays full - bringing this back to life is a wonderful contribution!

  • busymom0 a day ago

    Thank you. I also really love the Charcoal filter. After fine tuning it to be a bit darker, I really like the look.

Gys 19 hours ago

Maybe at some point you do a blog post or something about the results of the tipping. I am curious how that works out.

  • busymom0 10 hours ago

    I will look into it. Though, there is very little to write about. I have had tipping option in most of my apps. But very very few users use it.

    Only exception is that a single user from my Hacker News app sent me $280 CAD in tips via PayPal (not via app). Very grateful to them. However, they are an exception.

    Otherwise, I rarely get tips via the apps. For example, I have a free OLEDify app which lets you make dark photos be pure black as they look good and save battery on OLED phones. It's used by thousands of users. But in the 8 years it's been in the App Store, it's gotten under $20 in tips.

    If developers want to make a sustainable income via apps, I would not recommend relying solely on tips. A freemium model plus an extra tipping option is the way to go.

noja 11 hours ago

Nice.

Could there be an option to retain exif data (date time and location)

  • busymom0 11 hours ago

    Since the entire original image is converted to a UIImage and then modified, the exif data gets destroyed. However, I could add a setting to write the exif data back into the saved image.

_aavaa_ a day ago

Interesting app! If you can share, are you getting the effects through the Kuwahara filter?

  • busymom0 a day ago

    I don't think so. Note that the original filters were coded in vanilla c by the original owner of the old app.

Clubber 17 hours ago

I learned Obj-C during the early days of the app store, probably 2009-2010. This was before the iPad came out, so I remember ARC being introduced. I really liked it back then because code had to be so lean memory wise (compared to say Java or C#) and I had to deal with memory allocation and deallocation in the Delphi days, so I was comfortable with it. I published a few apps that were moderately successful (not FU money) then kinda got bored during the long tail of the cycle and didn't feel like upgrading the icons and images over and over again.

I never got onto the Swift train, it was too new when I stopped. I think I know the answer, but would you recommend Swift over Obj-C, for someone failingly familiar with Obj-C if I were to get back into the game? If so why or why not? Is it just as fast as Obj-C and is there anything I can't do with Swift that I could do with Obj-C?

  • busymom0 14 hours ago

    I stuck around with objective C for a long time. Till around 2018/2019 when I finally built my first fully swift app. It was actually my hacker news app called HACK:

    https://apps.apple.com/ca/app/hack-for-yc-hacker-news-reader...

    I would highly recommend Swift over Objective C. It's a lot cleaner and therefore also fun. I still use objective c if I am using some old codebase but other than that, nowadays, I don't see any reason to start a new project I in objective c.

    You should really give Swift a try.

    Also, Android's Kotlin is also kinda fun similar to Swift.

nokun7 a day ago

How timely!! I was looking for something similar to convert some of my portrait images. I'm trying it right now and I'll let you know how it goes soon. Thank you