This week we've been joined by keyboardP, the developer behind Air Pick Voice ("epic voice"), who agreed to a Windows Phone developer interview. Should you be interested to learn more about his project and experience developing for Microsoft's mobile platform, head on past the break for the full interview.
Tell us about yourselves and how you got into software development.
I’m a self-taught developer and have been programming since the age of ten. I would stay after school in the computer rooms so that I could mess around with QBasic, which was the IDE the school had at the time. I started off writing simple text adventure games in QBasic before moving on to other languages such as Java, C++ and C#. I pursued my interest in computers and read Computer Science and Business at university and interned at Microsoft, which was a great experience.
Games were primarily the main reason I got into programming as every time I played games, half of my concentration was on playing and the other half was on trying to figure out how developers created certain aspects. With the evolution of games and technology, that curiosity still lingers within my mind as I’m playing any game. It’s also part of my inspiration to create applications and games that causes other people to ask “how was that created?”.
What do you think of Microsoft's platform (from a user perspective) and how do you compare it to competitors?
Like a lot of things in life, different platforms are suited to different users. The openness of Android, for example, is suited to a certain demographic, but not necessarily the best choice for all consumers who actually have an Android. Likewise, those who want the ability to hack their phone however they like may not be as happy with their iOS or Windows Phone device (in their current states) as they would be with an Android device. In my opinion, having had an Android device and a Windows Phone device, I’m very happy with the Window Phone from a user perspective. Everything just works out the box and there are no custom ROMs required if you want to speed up your device.
You’re also guaranteed updates regardless of your carrier which, from a user perspective, is something I’d like to have as standard as opposed to manually downloading and installing custom ROMs on to my device. It seems that Microsoft are taking the middle ground between iPhone and Android devices. The former has a limited number of devices with a consistent interface whereas the latter has a wide range of devices with the OEMs being able to customise it to their requirements. Windows Phone is the middle ground where there are a range of devices, so users have hardware options, but the software experience remains consistent. Despite the smoothness of the devices, the hardware specs are what consumers compare and, in my opinion, this is where Windows Phone has to improve if they want to start battling on the marketing front.
What's the number one feature you love the most in Mango, and what are you looking forward to in the next update?
What path(s) led you to develop for Windows Phone?
Being a C# developer, it was certainly an advantage to not have to learn a new development environment or language to get started. I was familiar with Visual Studio and since Windows Phone development uses Visual Studio, there was a very low barrier to entry in terms of skill set. However, I believe it’s important to be a ‘programming language polyglot’ as a developer and having to learn a new language shouldn’t be the only reason to not work on other platforms. When I first saw Windows Phone announced at a developer conference, I immediately felt that it had a huge potential.
With Microsoft falling behind in the mobile space, I felt that they would put a lot of resources into this project to try and become a competing force against the iPhone and Android platforms. I feel that there is a popular belief that the iPhone market and the Android market is a sure fire way to make millions, simply because of the success stories you hear. The reality is, a vast majority of apps don’t make it and you need a something unique and a bit of luck to be able to make it in such a crowded marketplace. As a one-man team, I felt that a great place to make a name would be in an emerging piece of technology which has huge potential.
What's your take on the Windows Phone development process?
I absolutely love it. The fact that an existing skill set can be utilised from the offset is something that is often underrated in terms of importance. However, more than that, Visual Studio is a great IDE and Expression Blend is a brilliant UX development tool. I’ve been developing for Windows Phone from the beta of the original SDK and it’s great to see it constantly improving. I think what helps a lot are the official samples you can download for pretty much any major feature. Having the samples really helps explain how to use the various APIs and tools.
Have you developed for other platforms and if so how does the development process compare?
Windows Phone development experience is second to none. I’ve developed for iOS, Android, and Windows Phone and I can say without a shadow of a doubt, the development experience on Windows Phone is by far the easiest and smoothest. The fact that a rough prototype of Angry Birds can be created within a few hours, with barely a line of code, speaks volumes in my opinion. As a one-man team, I feel that prototyping should be a fast process and with the combination of Visual Studio and Expression Blend, the entire process is very efficient and effective.
It’s easy to forget that Microsoft puts a lot of store in developers and has done since its inception. Over the years, they’ve had the opportunity to listen to developer feedback and improve the development experience. The current state of Visual Studio is not something that sprung up overnight and comparing it with my experience of the Eclipse IDE and XCode, you can really see the difference. Even if I’m developing an iOS app, I’d prototype it using the Windows Phone kit simply because I find it more efficient to do that and then port it, rather than prototype with XCode and Objective-C.
The only area which Windows Phone falls behind on, in my experience, is with its API. iOS has had the time to expand the API and Android’s API is great for being able to do pretty much anything. Windows Phone has to catch up on providing more APIs to developers as it’s currently more limited than the other two platforms.
Air Pick Voice is an 'epic' concept, how did the idea came to be and what issues did you run into throughout development?
Thanks! My apps tend to be born out of personal experience. I feel that if I tackle a problem that I personally face, I have a better chance of solving it in the best possible way. I also have the tendency to solve problems in a unique way which doesn’t conform to expected solutions. I feel this not only spawns further ideas, but can often result in a better solution. It also makes things more challenging, which is something I embrace as a developer.
The first time the idea for APV came about was when I was developing on a machine that didn’t have my music. Whenever I wanted to listen to a particular song, I’d have to flick to the other machine and select the song which often broken my concentration. Additionally, I listen to music when I get ready in the morning and so when I was making breakfast, the randomised playlist sometimes played a song I didn’t want to listen to. At that point I knew there must be a better way to fix this solution than to having to go back to my machine or to have to scroll through thousands of songs on my phone.
Speech recognition wasn’t something I had played around with before so the whole development process has been a learning experience. There are things I would and would not do if I was to recreate this project from scratch. Besides a few hiccups, I think the biggest issue was speed and memory. There is only so much control I have over the boot up time and it was taking around seven seconds for 3500 songs. Using some tricks and relatively complex plumbing, I managed to cut the boot up time to three seconds on my machine. I also managed to shave off over sixty percent in memory usage. I put a lot of effort into these two areas because this is a service I expect users to be running for an extended period of time, hence the memory concern, and the possibility that the user has quite a large music collection and so the speed was important.
The project as a whole sports some well sought after features (especially the custom ringtone creation), why pack so much into a single package?
When I was creating the various aspects of the app, I knew straight away that I could sell them as individual apps and possibly earn a higher revenue. However, the first and foremost aspect for me is to be proud of my apps and to ensure that anyone who actually uses my apps are getting the best possible experience. I’ve been using APV in its current state for a couple of weeks and I think when users do too, they’ll see that all the features work well together.
There’s a fluid interaction from one task to another and the custom ringtones sits very nicely in this process. If I’m listening to a song and I suddenly hear a particular bit I want as a ringtone, I can immediately do that without having to exit the app. That experience is something I consider important and hopefully my users will appreciate that when they use it. I’m sure other apps of a similar nature will hit the Marketplace, but my priorities lie with the actual users of my apps even if that results in fewer sales.
What can we expect from APV in the future once version 1 is out in the wild?
Firstly, I’d love to receive feedback and build up on that. I try and make it easy to contact me and do my best to reply to people who message me on Twitter or email me. Being a one-man team means that I can listen to my users directly and that’s an advantage I’d hate to see go to waste. In fact, I’ve already received feedback regarding the name Air Pick Voice or APV. There’s been mixed responses regarding the name and so I’m accepting new name suggestions until Tuesday 7th (more information at www.keyboardp.me).
Besides feedback, there are some very cool plans and I think they adhere to my philosophy of trying to do things differently. Version 1 sets out to facilitate your listening experience from an interaction point of view but future plans, that have been with me from the beginning, attempts to improve it from a psychological point of view. That’s all I’m saying for now...
Are you looking forward to the upcoming Windows 8 to expand onto the big screen, as well as mobile, with higher levels of integration being made available?
Absolutely. I feel that Microsoft are carefully coordinating certain aspects of Windows Phone to coincide with Windows 8. Not only does this mean that even more things are going to be possible, but that the entire development process is going to be made even easier. As someone who adores technology and its potential, Windows 8 and the integration it brings is something I’m very excited about.
What other Windows Phone projects are you working on?
I was working on a game (which, incidentally, was the app being developed on the machine that didn’t have my music). During development of the game, I created the prototype of APV (which was known as ‘PhoneZune’) to solve the music issue, and the response to the video I uploaded was simply immense. A lot of people wanted APV so I put the game on the back burner and made APV my main project over the last couple of months. I have a couple of other apps that I have prototyped and I believe that they’re all as unique as APV as well as changing the way people perform certain tasks. However, APV is my current focus at the moment so you’ll have to wait for a bit until I announce the other apps
What advice would you give to other aspiring developers?
Don’t give up. As cliché as that sounds, I know of many developers who jumped into the deep end, tried to code an ambitious project as their first attempt and were permanently put off programming. It’s important to start off simple and regardless of how pointless some of the more basic tutorials seem, there’s always a reason they’ve become standard. There’s nothing wrong with ambition, but it needs to be coupled with ability in order for anything to be realised.
I think it’s also quite easy to be put off programming when you see people on forums answering complex questions off the top of their heads. It’s important to remember that these people also started off without any programming knowledge and I think a common trait amongst the best programmers is that they’ve always stuck at it.
Thank you for your time. Any closing words about WP7's future?
I believe that Windows Phone is, and always has been, in this for the long term. I think it would be naïve to have expected Windows Phone to take a huge chunk of the marketshare in a year or so. However, the platform is solid, the development experience is second to none in my opinion, and the final hurdle is to get this message across to the consumers. Having a great product isn’t enough in this industry and sometimes you have to compete on numbers that don’t necessarily have tangible effects.
A lot of non-technical consumers will look at the specs of a device and if it has higher numbers, they’d assume it’s faster than a device that has lower specs. I think Windows Phone needs to, and will, start competing on the specification front even if it’s just for the marketing aspect. I also believe Microsoft will start to target the lower end of the market where Android is dominating. I feel that the important question there is if people are buying Android devices because of the Android brand or because of the price. Competing on positive branding is much more difficult than competing on pricing in this case. It’s going to be an uphill battle, but the fact that Windows Phone is a solid device is a great start to the climb.
Thank you for the interview, it’s been an absolute pleasure!