Who are you and what do you do?

I’m Aakash Sahney, I’m 21 years old, and I’m a co-founder and the CTO of MyVoice, a company that makes a revolutionary communication aid app for people with speech and language challenges. Our users include stroke survivors with aphasia, nonverbal children on the autism spectrum, and people with other medical conditions that make it difficult or impossible for them to speak. The app lets users tap on words and phrases to have them spoken aloud over the device’s speakers. It’s also location-aware, super easy to use and personalize, and it replaces devices that cost as much as $15,000. It’s a product that makes a huge difference in thousands of people’s lives.

I’m also an Engineering Science student at the University of Toronto.

How did you get started in iOS development?

I spent my first summer in university writing Flex apps at a company called QuickPlay Media. QuickPlay’s focus is on mobile apps, though, so I got a bunch of exposure to the scene and some brilliant developers. I got excited and started experimenting that year. My first non-hello-world app took users to a random Wikipedia page that changed daily. Sadly, “Randopedia” never made it out of the simulator.

About 6 months later, while I was doing some research in the CS department at the University of Toronto, a man came to our lab after having had a stroke and developing a speech challenge. He was using an expensive, complex communication aid device and asked our research team if we could make something more affordable that was easier and faster to speak with.

We had the idea of something that spoke out loud like his old device, but wanted to spice it up by suggesting relevant vocabularies based on his location as well as adding online vocabulary management for easy personalization. He also had an iPhone - an app was clearly the right way to go.

I started getting serious about iOS (and Android and Rails) development while we were building this early prototype of what ultimately became the MyVoice Communication Aid (come to think of it, some of that code is still out in the wild). While initially intended just for this one man, MyVoice became a real product when we realized that there was a genuine need for an affordable, smart communication aid. Several versions later, sparks are still flying between me and iOS.

What does your computer and workspace setup look like while developing?

I use a 15" MacBook Pro, Quad Core i7 at 2.3GHz with 8GB of RAM. My desk usually features coffee, a pen, a notebook, an iPad, and an iPhone. Mighty mice and external monitors make occasional cameos.

What are your favourite Apple iOS API's to use within apps you develop?

For me, the best APIs are the ones where, after a little practice, I can start to guess object and method names. This happens pretty often with iOS; it’s very well-designed. UIKit has a consistency that I always appreciate. GCD and the NSOperation family are also really well done, hiding thread complexity is crucial in client side development. While not an API as such, I don’t think that Interface Builder gets enough credit. It’s a godsend, especially once you’ve spent some time with XML-based layout tools like on Android. I’ve come to love IB almost as much as autocomplete in Xcode. While I don’t use it very much, I think UIAppearance in iOS 5 is excellent as well.

As far as language features, I’ll echo others in saying blocks are awesome. I also really like categories - it’s great to be able to avoid subclassing in an environment where you rely so heavily on objects your framework uses and returns.

What is some software that you use outside of Xcode for development?

Git for version control, TextMate for Rails, BetterTouchTool for fast trackpad navigation, Terminal for everything. I switch to-do apps so often that it probably dampens the productivity gains. Right now I use Wunderlist.

What is a tip that you would share with others that may help while debugging their apps?

It’s nothing fancy, but I just use a healthy combination of logging, breakpoints, and SO. If you have a complex UI, use NSStringFromCGRect to log UIView frames. I discovered that one way too late. Also, avoid wheel reinvention - use third-party frameworks when they’re appropriate.

From a developers perspective, what are your hopes for the next major iOS update?

I think iOS is a really solid platform and honestly have relatively few complaints. I’d enjoy APIs for developers to respond to Siri requests. Also the adoption of blocks in more Apple APIs where really slim delegates are currently used would be great. I’d also like Apple implementations of the functionality I usually use third-party frameworks for; if only because Apple API design is often better.

Finally, what is your favourite app?

Such a difficult question. Right now, I’m particularly enamoured with iA Writer (I’m answering these questions in it at the very least) for both Mac and iOS. GarageBand for iOS is just a triumph, both in terms of the functionality they were able to bring as well as the amount they packed into that UI without getting too complex. Reeder is also in my Hall of Fame.