Ask HN: Writing my first app

4 points by pbhjpbhj ↗ HN
I've got a killer idea (!) and want to write my first app. What's the best way to do it. I'd like to optimise widest coverage for time spent initially.

Which platforms should I target. It's to be a paid app for parents (though generally info about targeting demographics vs platforms appreciated) but I'd consider free as they're are strong advertising opportunities. I'm assuming iOS is going to be best but I'd love to develop once and deploy to android as well if that's even possible. Primarily I see it being used on phones.

Primarily my closest domain experience is in webdev (PHP, HTML, JS) though I've done a tiny bit of python, C++, SmallTalk, Fortran in the past.

I don't have funds to purchase anything, I'm on Kubuntu but have Windows accessible.

Thanks for any info and advice.

[Sorry if this is a dupe of a dupe ... I did search but couldn't find "App Dev 101" - this is probably the closest https://news.ycombinator.com/item?id=4731469 (the link should be http://www.codelearn.org/rails-tutorials) but it has no info about implementation on a device, distribution, getting in to app-stores and such.]

14 comments

[ 4.3 ms ] story [ 37.1 ms ] thread
You won't be able to build and deploy iOS apps without running OS X - so that's not an option from Linux/Windows unfortunately.

You can use something like Appcelerator Titanium[1] to use HTML/JS and build native apps from that. So you will be able to use what you build to deploy to iOS should you purchase a Mac in the future.

[1] http://www.appcelerator.com/platform/titanium-platform/

Thanks for the tip.

Anyone here have personal experience of Titanium?

If it's a killer idea and can be monetize why don't you consider invest on it? You can't create iOS apps without a Mac. You can try to do a hackintosh but its a pain if you don't de right hardware.

Another option is to create using HTML 5 but its no the same as a native app.

I'd invest on it if I had money to invest. Perhaps I can get hold of an old Mac, what's the oldest vintage that would work well enough?
It has to be after they started putting Intel processors in. If it is a PowerPC, it will not work for iOS dev.
Older Macs won't support the latest OSX and XCode.

I'd look at MacinCloud or something similar if you have good bandwidth. $50 / month for 24x7 online access to a Mac isn't bad at all and they have pay-as-you-go for about $1/hour. I haven't tried them, but I think I've even seen people claiming to do iOS development there using an iPad (+keyboard) as their physical interface. You can get a few friends with iDevices to join Testflight for free physical testing.

http://www.macincloud.com/pricing/ http://XCodeClub.com http://virtualmacosx.com/

You can run OS X vm in vmware player. If you have a decent desktop box it can be quite usable. This probably violates apple's TOS, but whatever.
I had the chance to do this 1 year ago and it's usable (not as good as a real computer) but I think it would be a pain (not worth) to develop an app in a Virtual Machine
You can make a full HTML5 App and later package it using PhoneGap. http://phonegap.com

I wish we could have a node-webkit for iOS... damn you big brother Apple!

I've researched this a lot and I have found that the cross platform options are just not there yet. Non-native apps feel weird to users and are almost always hated.

I'd start with native Android.

Xamarin is also a possiblity for people with more of a .net background. Although before you take the time to build an MVP. I would build a website to collect emails for beta users so you have an initial set of users to program for. If you can't get an initial set people to sign up for a free beta then why waste your time on the great idea. Especially since you have the web background. and expect only about 1 out of 10 to actually download the the thing from yuor list, if your lucky.
I was actually just in a similar situation not long ago so I'll explain the route I decided to go:

TL;DR : Cross-platform frameworks at this point in time (to me) are either 1. Expensive, or 2. Unreliable in providing a native-feeling application. We chose to develop a Client-Server Android app and add iOS when funds become available.

I'm a college student and an opportunity came along from our vet program to make a smartphone application, I jumped at it. They had no idea about platforms but eventually wanted iOS/Android and possibly Windows. The only computers I own run Xubuntu, Windows7, Ubuntu, and Fedora at school. So iOS was obviously out of the picture at this point.

I originally researched along the lines of a cross-platform mobile framework. After looking/asking around it seems these technologies really aren't there yet, especially if you're looking at using any native functionality on the device. I read lots of developer reviews and they were generally mixed in terms of reliability and performance. Also, some are quite expensive; I recall seeing a 1-year dev license for $1000 a year per developer. Possibly worth it for a huge corporation, but just not for us at this stage in the game. It took some convincing but I steered them away from this option.

I have experience in Android so we chose to develop a native stand-alone Android prototype (they needed something simple to use to re-apply for their grant next round/present to other investors), and plan on moving it to a Client-Server architecture Android application and I'll either purchase a cheap Mac Mini and learn obj-c or hire a iOS developer once we have allocated more funding to hook it up on the same server as the Android application. This way you can use the same server back-end logic for dispatching data and have native GUI for each supported platform.

edit: grammar