5 ms·
Just yesterday I was thinking that I like the iOS Clock app but hate the time picker, and it’s not very OO of it that I can’t subclass the app and fix it. Also
by ken 8y ago
Just yesterday I was thinking that I like the iOS Clock app but hate the time picker, and it’s not very OO of it that I can’t subclass the app and fix it. Also that Maps cleverly picks an appropriate scale but there’s no way for me to use that functionality from my app for my data.
iOS apps aren’t unique in this. Modern software isn’t very flexible.
- Wowfunhappy 8y agoYou'd be able to fix the Clock app if your phone was Jailbroken. There's a system for modifying existing apps called Cydia Substrate, and it's very robust. For simple modifications, there’s also Flex, which doesn’t require any programming! Flex provides a list of variables and methods, and lets you to override them with whatever value you want. I changed setSwitcherStyle from 1 to 2, and now I have the iPad’s “grid” app switcher on my iPhone. iOS software isn’t inherently inflexible. Apple is just preventing you from modifying it.
- ken 8y agoI think there's a big fundamental difference between "programming" (with source code) and "reverse engineering". Cydia Substrate definitely looks like the latter. I also think there's a big difference between "programming" and "toggle a single bit of configuration". You got a different behavior which didn't require programming because someone else had already gone to all the effort of programming it, and you only needed to find the secret switch to enable it. If there's any system in common use today which allows subclassing applications to permit users to change arbitrary behavior, or plucking out a single function to re-use in a different context, I'd love to hear about it. We've got open-source, but most of those are really not at all designed for end-user programming. The closest example I can think of today is Greasemonkey.
- Wowfunhappy 8y agoCreating Cydia Substrate certainly involved a ton of reverse engineering, but I get the sense creating tweaks on top of Substrate is a lot closer to Greasemonkey. There are also tools like Flipboard Explorer[1] that make it easy to see how an iOS view is constructed and what needs to be modified, very similar to a web browser's inspector. There's a line in a blog post[2] Saurik (Substrate's creator) wrote a while back: > In general, I also believe the algorithms for reverse engineering have started getting better faster than the technology behind binary obfuscation. [...] I believe that we will find the distinction between closed source and open source crumbling—not just for people like comex and myself, but for the average developer. He also references a longer talk he gave on the subject. Disclaimer that I haven't watched it. https://www.youtube.com/watch?v=D91jVZ4Z6og https://www.youtube.com/watch?v=D91jVZ4Z6og Note that all of this absolutely still requires programming though. And Flex is absolutely not a programming tool, although the wealth of options it opens up is very substantial, since you can modify the return value of just about any method. --- [1] https://github.com/Flipboard/FLEX https://github.com/Flipboard/FLEX (Note: Flipboard Explorer's abbreviated name is "FLEX". It has no relation to the other software I mentioned, "Flex".) [2] http://www.saurik.com/id/22 http://www.saurik.com/id/22