Dear all,
I am a blind engineer with a Linux and command-line background.
I always wanted to become an iOS developer but each time I tried I found the learning curve quite steep.
Are there recommendations on how to get started developing for iOS when you are blind yourself?
Is it best to use XCode although it is so graphical, or are there ways to work more from the command-line for developing?
Could somebody recommend resources to get started either with Objective C or with Swift?
The reference documentation for the APIs etc. always seemed very big to me and discouraging because I have not been able so far to find where to start.
Many thanks for any pointer, advice...
Comments
getting started
Take all this with a grain of salt. Not sure if you're still looking into this, but I see you never really got a response so here's mine.
First, I would strongly urge you to stay away from Objective-C at this point. If you aim to write your own apps, you will really want to just stick with Swift as that is what is most common these days and it's quite a bit easier to read.
Second, even though SwiftUI has not yet reached full perity with what InterfaceBuilder can do, I recommend you use it anyway as writing UIs in SwiftUI is quite a bit more accessible and eliminates a lot of the drag-and-dropping you'd otherwise have to do.
The "100 days of SwiftUI" course is a good textual tutorial to get your feet wet and introduce you to the language, various frameworks and the way xCode works.
As for your query about working with the commandline ... yes and no. Most tutorials will assume you aren't doing this, and you will miss out on things like autocomplete for code which can be quite useful, but have a google on the xcode-build command and what it does. It's the commandline tool that third party frameworks depend on to work with xcode without actually having the UI visible, react-native comes to mind for example.
I hope that helps you out some :)
Thanks, Florian!
Dear Florian,
Many thanks for having taken the time to respond in such a detailed and kind way.
Yes, although I tend to find the step very steep and difficult, I am still interested in becoming able to write my own iPhone apps.
I am also curious to know whether there actually are other visually impaired persons doing that and, if so, how they do: do they do it from within the GUI and, if so, how accessible everything is, or do they do it in another way, e.g. through xcode-build as you mentionned.
I'll definitely follow your advice to use swift. I don't keep such a good memory of my Objective-C course and, although it was not the main obstacle for me to get started, I must say it didn't help too much either. Just that, at that time, I heard that the apps written in Objective-C were more efficient because they could be compiled to native binary code, whereas the swift apps were either interpreted or compiled to some bytecode, that I don't remember, but in any case at that time the situation was such that the swift interpreter could not be shared between several swift applications, meaning that each application had to use its own instance of the interpreter, which seemed a bit waste of resources. I don't know if the situation is still like this today or not.
Regarding the design of UIs, why not program them in Swift directly? As I understood it, InterfaceBuilder was just a tool that would generate proper Objective-C code that you could also write on your own and then do it in a more maintainable and factorized way than what InterfaceBuilder would have come up with, not even speaking about the accessibility aspect (it's easier for a visually impaired person to write code rather than using drag and drop for widgets). Isn't the same true for Swift and SwiftUI?
Many thanks for the pointer to the "100 days of SwiftUI"" course! I always found it difficult to find good introductory material and found Apple's guides very difficult to approach, because they all seem to depend on each other, making it difficult to find out where to start for not missing any prerequisite.
Coming back to using XCode's graphical interface or not, I think I kind of understand what I could be missing by not using it. I think my question would then be: okay, but how productive can one be when one is blind and tries to use the graphical interface? For instance, I remain with the impression that from XCode it's easy to have access to the documentation of different APIs. Is XCode the only way to have access to such resources or is it okay to access them with any web browser, at the price, of course, of loosing some integration?
To conclude, here is something that happened to me when I tried to use XCode. French is my native language so I configured the Mac I had at that time in french. XCode, though, seemed to be available only in english. So I created a dedicated "programming" VoiceOver activity with an english speech synthesis. Everything could have worked just fine, except that the types of the widgets continued to be announced in french by the english speech synthesis. To me that's a bug. If an application is in english, then the widget types should be announced in english too, so that you can hope to get something coherent by selecting an engoish speech synthesis. To give an artificial exaple, assume a checkbox saying "Include debug information". In XCode on a Mac set-up in french, that would be announced as something like "Include debug information, case à cocher", where "Case à cocher" is the french for "checkbox", so that you have no chance to get anything coherent, neither by choosing a french nor english speech synthesi
some tips
In no particular order:
- Use x code, it makes everything much more simpler on the long run.
- Assuming you are familiar with voiceover on a Mac, my top of the top keybindings for x code is:
Command plus 1: brings you to the project tree.
2. Voiceover plus j two times from any file from the project tree will move the focus to the corresponding code editor.
3. Comand plus r and command plus b to run and build the project respectively.
4. Control plus command plus j from the editor jumps to the definition for a given class, method, etc.
5. Command plus 5 move the focus to the errors and warnings list.
Check google for a full list of shortkeys.
- Debug on an iOS device better than an emulator. Connect your device and choose it from the product menu bar.
- A free account allows you to build and test your own apps, enough to getting started.
- Use swift.
- Try to familiarize yourself with swift Ui, it offers great results with less effort.
- Some amazing resources can be found on sites like hacking with swift, stackoverflow, subreddits such as r/iosPrograming, r/swift and r/swiftUi.
- Autocompletion is your friend: on swift, every parameter is named, so when x code code completions appear they offer a lot of information on how to do things. Explore and try to understand the available possibilities.
Hope it helps. It's a very extensive topic for a comment on the fly like this, but contains some keys nobody told me when I started.
And excuse my English.
Good luck!
Many thanks for the tips!
Dear Alan,
Many thakns!
I do not have access to the GUI of a Mac right now, only access through ssh so I washoping that would be enough but understand this is not really the case.
So, many thanks for your tips.
I am used to VoiceOver only on the iPhone and am seriously missingpracticing on the Mac, being a long-term Linux user.
But really, thanks for the starting points, I'll definitely give them a try!
Best wishes!