HNHacker News
TopNewBestAskShowJobs

sandoze

340 karma · joined May 9, 2013

submissionscomments
sandoze··on App Store Rejection of the Week: Dark Hours
It's been selective for sure. I have a macOS app that has been approved within a day. There are two apps I submit for a client both have cleared review twice in the past two weeks within 24 hours.

On the other hand I have a personal iOS app that normally doesn't take long to approve that's been waiting two weeks.

sandoze··on Born Against, or why hobby programming communities are against LLM usage
I can respect a developer who is still smitten with their craft to feel a bit anxious when the topic of LLM generated code comes up. I have a child who never grows tired of building their next game but first has to build the engine from scratch (needless to say they've built a lot of engines, not so many games). This use to frustrate me but then I realized the joy is in making a concept of a game for them. When I suggest Claude might get the job done faster I get a death glare followed by an eye roll. I get it, I've been in the industry long enough where coding is more of a means to an end and not the same novelty it once was.

More dangerous are communities who shun AI and treat every disclosure like a Scarlett letter. Generally the loudest opinions come from consumers (fan bois) and not creators. I think this will eventually drive new innovators away from these communities. These vocal naysayers have likely never experienced being a project manager, lead developer, and QA for an agent writing code. Instead they think a prompt magically creates software, but without wearing all these hats at once, you get something far worse than 'slop'. Call me crazy, but I think these multi-hat 'developers' using an agent and are dipping their toe into LLM development are going to raise the bar and leave us vim users in the dust.

sandoze··on SwiftUI After 7 Years
I don't want to downplay your lived developer experience, I'm not fully following all your arguments but let me just say @Environment is a great tool. We've all used singletons, even more so in UIKit seeing how unintuitive key value observation was.

It's used a few different ways in the app I'm looking at now. One is to hold a source of truth for my API data models. This way I have a cache of say User that, when it changes for whatever reason - maybe invalidating the cache (read logout) or changing a profile image - is handed around to all my Views that need User info with @Environment(\.user)

Same thing with my analytics. Something like a MixPanel is only going to be created once. It's a singleton. You pass it around in an @Environment.

NavigationStack was a problem pre-iOS 17 and even a bit of a jam in 17 -> 18 and was glad to drop that version. But passing around an enum of values makes deep linking intuitive, yes there's a bunch of boiler plate - setting up an enum I guess - but deep linking was never easy. If you're not doing deep linking then a NavigationPath is really simple to use but I assume that's not what you were talking about.

I used MVVM for about 6 months and ripped it out. There's no reason to use that pattern in SwiftUI. It was popularized by certain iOS evangelists and caught on with the newbies (myself included). Your reaction to MVVM and useless ceremony is exactly the response you should have to a code smell that doesn't belong and it was mine too.

sandoze··on SwiftUI After 7 Years
Just a couple points because your opinions aren’t wrong, they’re just your lived experience.

2. There’s no magic here. There is poor documentation. The biggest trick — small views, think about what values are going to trigger a refresh. Avoid cascading view refreshes.

6. You might have missed a couple big iOS releases (iOS 7 was one to remember) where many of our apps fell over in UIKit. Swift was another ‘DOA’ for YEARS with the same issues you’re making here, each new version broke the old, but here we are in a day and age where it’s the standard.

sandoze··on SwiftUI After 7 Years
This seems to be a popular ‘controversial’ topic. I’ve been using SwiftUI for production applications and games since 2021. I drop down UIKit, Metal, or core animation when needed. But that’s no different than when I was making games in UIKit and would drop down to core animation or glyph renderers written in C etc.

Data Flow: The author claims there’s no way to know when things update. Not only does experience help here but there are profile tools that tell you when and where things are updated. This isn’t black magic. Keep Views small, be careful how you hand around data. @environment is super cool but can have a cascade effect. This was greatly improved iOS 17+ and I wouldn’t support anything older than iOS 17.

GeometryReader: Occasionally I’ll use this. It’s kind of a necessary evil when dealing with certain view complexity. It can also be a sign that you’re doing something wrong.

API Stability and performance: Apple users upgrade. There’s no reason that you should be supporting iOS 17 at this point — even iOS 18 is roughly 2%% of our user base across several apps. I’ve been using SwiftUI without major performance issues but I also don’t early optimize. I profile and fix as needed. One of the early studios I worked for wrote all our games in UIKit as prototypes, when performance tanked we’d switch to the appropriate tools (eg. OpenGL) where it was necessary — like in the core game.

I could go on but in the end just use the right tool for the job, if you’re not proficient in SwiftUI or it isn’t going to work for your cross platform project, you have a lot of other alternatives. For me though, it’s been amazing to work with. I stepped away from iOS programming for 3 - 4 years because I was burnt out using storyboards, dealing with massive view controllers, and all the boiler plate it’d take to get a view up and going in UIKit. SwiftUI roped me back in.

* Quick addition edit: Cross platform for iOS, iPad, macOS has never been good. I’ve found recent updates have made things better to the point of tolerable and it’s nothing like when we had to post-fix an ~ipad to our Nibs — There has never been a ‘glory days’ of cross platform Apple UI libraries.

sandoze··on After AI takes everything
Where you see quality crisis I see job security! Honest question, when it comes to enshittification of software quality.. have you ever had to use a Meta framework? How many times have they rewritten their mobile apps to use some architect's bespoke code pipe dream? The quality crisis has always been here, now there's just more of it.
sandoze··on After AI Takes Everything
>> It will happily recreate the same function in several different places for no reason

So do many developers. I've lost count how many times a code review had to be rejected or cleaned up because of copy and pasted code and I'm going to admit, sometimes it's just quicker to duplicate a little code and leave a comment for 'next time'.. we've all done it.

.. like this one time I had a PR and the developer created on loooong linear method, couldn't figure out how to share between targets and copied and pasted the same bad code somewhere else. Somehow it got through and when asked why this was on production the answer was 'it worked'.

>> no time for elegance

This happens, your experience in is generally your quality out. But that doesn't necessarily mean there's going to be elegance. I've worked at major product driven companies where elegance took a back seat to getting release out the door.

sandoze··on Native all the way, until you need text
Having worked on an interactive novel in 2012 (NSString and attributes), low level glyphs (API deprecated) on a rogue-like, two chat apps (with markdown support for formatting) in SwiftUI, and an idle game using a mix of iOS tricks but all wrapped in SwiftUI.. I’m going to agree with how I summarized this response: skill issue.
sandoze··on Xs of Y – roguelike that names itself every run. Written in 4kLoC
So the author used the latest and greatest development tech to create a unique little demo in their custom language. I'm unsure your point. You know what I don't use to program with anymore? Punch cards and Borland C++. The industry has evolved for better or worse.
sandoze··on Xs of Y – roguelike that names itself every run. Written in 4kLoC
Amazing and great work!
sandoze··on Xs of Y – roguelike that names itself every run. Written in 4kLoC
Yes. I don’t think we’re having the same argument though.
sandoze··on Xs of Y – roguelike that names itself every run. Written in 4kLoC
The genre of course. But this is almost a 1-1 copy of the Brogue style. Right down to the colors, animation, and ASCII
sandoze··on Xs of Y – roguelike that names itself every run. Written in 4kLoC
I’ll be sure to keep that in mind with my next plumber platformer
sandoze··on Xs of Y – roguelike that names itself every run. Written in 4kLoC
No credit for the art direction and inspiration? Brogue?

Or did I miss the attribution?

* Edit: I’m not looking for the downvotes or to stir things up. I’m simply calling out that this is a small niche community we notice these things, we’re very free with our code, and copy is a compliment, but so is attribution.

The author wasn’t so much inspired the by Brogue style, but copied it directly down to the animations and ASCII.

sandoze··on Tell HN: An app is silently installing itself on my iPhone every day
There’s no indication to the developer or app when a deletion happens. We rely on the OS to clean it up.
sandoze··on Show HN: Audio Toolkit for Agents
Looks awesome but ran against the same thing. Feels like a good Claude skill/test. Run my readme w/a clean install.
sandoze··on Xcode 26.3 – Developers can leverage coding agents directly in Xcode
Keep in mind, you’re claiming to be an experienced mobile (iOS) dev. Your fallback when things don’t work (let’s say, auth) are your years of doing iOS. Fastlane is handy (I don’t use it anymore re: Xcode Cloud) but in the past it still fell victim to Apple Store changes and updates.

Worse is going to be the job listing, no native iOS developer is going to touch it. It’s possible a rn + ts developer might find it an interesting challenge and maybe even have some iOS experience. I guess it all comes down to what the job qualifications are in said listing. But is your startup going to know this when/if they need to do a backfill?

But here’s the caveat to what I said. If the rest of the team you’re working in is also using the same language and maybe has some familiarity in react native it’s probably not so bad and someone can step into your shoes if necessary. Also, if your implementation is fully transparent and this is what the startup paid for, then I’m going to say more power to you, you built them what they needed and you did it your way.

sandoze··on Xcode 26.3 – Developers can leverage coding agents directly in Xcode
That startup is going to LOVE you when they need to backfill your position and every potential iOS developer hire runs in the other direction.

* This is coming from someone doing iOS since the store opened in 2008. I've pretty much seen ALL the bad decisions at some point. There are projects I will not take no matter what the pay is.

sandoze··on Comprehension debt: A ticking time bomb of LLM-generated code
I can’t speak to OS development but industrial coding there’s a lot of experimenting and throw away. You generally don’t write a lot of code for the platform you’re building on (PLCs, automation components). It’s well tested and if it doesn’t hit industry standards (eg. timing, braking) you iterate or start over. At least that was my experience.

When it comes to general software development for customers in the everyday world (phones, computers, web). I often write once for proof, iterate as product requirements becomes clearer/refined, rewrite if necessary (code smell, initial pattern was inefficient for the final outcome).

On a large project, often I’ll touch something I wrote a year ago and realize I’ve evolved the pattern or learned something new in the language/system and I’ll do a little refactor while I’m in there. Even if it’s just code organization for readability.

sandoze··on Suno Studio, a Generative AI DAW
My thought to who you replied to exactly. Am I going to invest several days to read an AI slop novel? No. But I will take several minutes to read a blog post and likely have read many that were AI generated or assisted.
sandoze··on Suno Studio, a Generative AI DAW
Before AI there was a general consensus that creative areas (eg. Cities) were becoming a homogenized experience. A Starbuckization if you will. I can’t help but wonder what gets lost when using tools like this.
sandoze··on The elegance of movement in Silksong
Different strokes for different folks. You don't need to please everyone, but it helps if you can move 15 million units with three developers. I don't play Candy Crush but yet somehow this little cash cow keeps getting updated and I'm not one of the 2.7 billion downloads!
sandoze··on iOS indie app development looks like
There are additional links and details about LazyVStack highlighted in the content. I thought the top level article focused on Lists would be more helpful for you.
sandoze··on iOS indie app development looks like
I’m on a phone which means digging through Apple docs or WWDC-ascii isn’t fun. But for my recent Insta-like infinite feed on iOS this was very helpful:

https://fatbobman.com/en/posts/tips-and-considerations-for-u...

sandoze··on iOS indie app development looks like
To be fair a LazyVStack handles cell reuse and unloading automatically which is why offscreen content that was previously viewed further back on the list will only maintain the root level state (children in the view hierarchy may and will lose state in order to save memory and energy). How that data is loaded and how you key off Identifiable is also important.

Apple’s own documentation discusses this in detail and for large data sets recommends the Lazy approach. If you’re using List you’re in for some issues.

sandoze··on iOS indie app development looks like
I primarily do iOS and iPadOS, but it’s far easier to bridge the gap between all the platforms than the experience I had in the past with UIKit/AppKit. My last MacOS app sadly does not do infinite scrolling.

Off the top of my head, I’d consider the approach. Is it a ScrollView? A LazyVStack? What do your view redraws look like?

Anyone working with Swift Strings back in Swift 1+2 was in for some shockingly bad performance. We adopt, we adapt, and the framework matures.

sandoze··on iOS indie app development looks like
So many things wrong with this. Reminds me of the Objective-c vs Swift arguments from back in the day. The author mentions the initial release, as someone who held out migrating production apps to Swift until v3 I think we all know early adoption is going to be bumpy.

But as of iOS 15+ SwiftUI is very production ready. I’ve migrated two production applications from UIKit to SwiftUI. These have active users and are available on the App Store.

Bloated? The last migration resulted in 79k new lines of code written and 181k deletions after rewriting 80% of the application.

Photos album works out of the box. If you mean camera then there are some issues depending on your use case. Beauty of SwiftUI is we can wrap UIKit views and interop allowing it to play nicely with other frameworks.

If you’re supporting applications that target the last few iOS versions it’s time to learn the new paradigm. Do yourself a favor but most of all anyone who might inherit your codebase.

sandoze··on The Toyota Prius transformed the auto industry
I know all cars can’t be perfect but as a 2010 Prius owner (I probably shouldn’t complain given it’s 15 years old) it has had several well documented issues that never prompted a recall.

I was hit with a bad oil gasket that causes the engine to burn oil. It’s so much work to replace their solution is to replace the entire engine. My solution is to keep putting oil in it. I was told by the dealer this is common over 70k miles.

The steering controls (heat, volume, cruise) stopped working pretty early on. It was well over $1k to fix, mostly labor. Apparently the connection they use is prone to failure.

Leaves me wondering if my next car will be a Toyota. Maybe if they adopted Apple CarPlay.

That being said, batteries are still good and I’ve been pretty impressed how low the maintenance has been.

sandoze··on Not every user owns an iPhone
Sadly this rings true. Of all the apps and games we've ported to Android the cost has never been worth it. The games were pirated more than purchased and across both apps and games our support tickets went way up.
sandoze··on Reverse engineering the Sega Channel game image file format
Had this back in the 90s for a month or two. It was amazing. A bit finicky. Our neighbors split out cable outside and it stopped working. Apparently needed a dedicated line.
Page 1 of 3Next →