One-man Show vs Having Investors in Mobile Development

I just wanted to take a brief moment to talk about startups, entrepreneurship and lifestyle. As I've been working on my mobile app to help the bullying problem, the common wisdom is that I should get investors and build a company. The company would sell the software and/or sell the data that is collected to schools.

I recently read an article that said the rough 'burn rate' per developer is $10k/month, so with 4 developers the burn rate is $40K/month or roughly $500K per year. That means you have to make $500K per year just to break even. With varying amounts of staff, experience levels, and roles these numbers could be less or more of course.

Another option could be to team up with a group of people who are partners and perhaps don't draw a salary at first. But at some point the revenues you earn would have to be split, and therefore increasing the revenue requirements (4 partners = 4 times the desired revenue).

These options aren't that attractive to me because you'd have to spend a lot of your time chasing investors, being subjected to their direction, having high overhead, having to earn huge revenues and so on.

Another option that also incorporates a desired lifestyle and control is to develop a software product on your own and either try to sell it (to clients or in the app store), or release it open source. An open source project could result in a lot of consulting work as you help businesses or governments, install, configure and modify the code.

I like this option for a few reasons. It gives me full control, it keeps me coding, and developing my software skills (which is good for future contracts), and it helps society by providing open source software to the world. This may be 'thinking small' to some people, but at this point it makes a lot of sense for my particular situation.

Posted

How To Learn Mobile App Development

Screen_shot_2012-01-05_at_11
I started out my journey to learn mobile application development by using Google to make sense of the landscape. Because I didn't want to learn a myriad of different platforms (for each type of mobile device) I persistently searched for a better way.

 

Eventually I found out about PhoneGap which allows you to write mobile apps using HTML5, CSS, and Javascript which is great because these are standard technologies. While I have some experience with them things have changed quite a bit.

 

So I bought a few book on these topics (including jQuery) and read the books to get an overview. But when I started coding I realized in general the books aren't that helpful. I was still pretty clueless. It's hard to find what you're looking for and they don't have examples for your specific problem.

 

So my basic workflow is:

  • come up with an idea for an app you want to build
  • build it with HTML5 and view it on a browser. I'm using jQuery Mobile for styling the app
  • search Google and often StackOverflow.com to find an example of what you're trying to do
  • search these sites again when something doesn't work, describing the problem 'jQuery mobile how to pass parameter to another page', 'jquery mobile how to append li to ul' and so on
  • sometimes blogs have examples or tutorials that help. Nettuts is a good site for tutorials as well.
  • jQuery Mobile is where the main help resides

 

I set up my xCode environment on my iMac and purchased a Developer licence so I can install the app on my iPhone for testing. But for the most part I am building the bulk of my app using HTML5 and viewing it in a browser (as a separate, small window to mimic the phone). You can also ftp the files to your server (I use hostgator) and view in on your phone in the browser.

 

This post is about 'how to learn' most effectively. It is 'exception based' meaning we learn when something doesn't work. Many people love 'The Khan Academy' videos but some have found that there are critical misconceptions even after watching the videos. So merely passively watching videos is not enough. Solving problems that will reflect these exceptions are key to learning. Anyone can do a very basic problem that is similar to what was in a lesson.

 

So in summary, if you are in a new area for yourself then read a few books and do some tutorials. But the real learning happens when you attempt to actually do something, in which case Google is your best friend.

 

Posted

Programming Creatively

They say being lazy is a good thing for programmers. This laziness will cause you to avoid reinventing the wheel by finding an existing solution out there. I spent weeks trying to find a better solution to mobile programming than Objective-C (and related languages for other platforms). Luckily there are things like PhoneGap, jQuery mobile and HTML5.

As I think about mobile apps and worry about scalability (perhaps prematurely) I've been trying to find creative ways to leverage existing services. At a basic level, you could use Google's App Engine but you'd have to consider the languages they support (Python, Java, Go) and whether you want to learn them or use those languages.

With the recent Vancouver riots, police have been using YouTube videos and pictures to arrest people that committed crimes. In the Middle East, people were using Twitter to post events as they happened or to set up meets. This got me thinking that I could use Twitter as my application instead of building my own. It's essentially a database with rich RESTful APIs and handles the scalabliity issue for you.

So instead of using your own app and database, you could use Twitter for apps that require geolocation. You could post information to Twitter and leverage the geolocation capabilities, Places, hashtags. You can use their REST API to POST information and query the results using GET requests.

Posterous is a weblog site so you could use that to post photos, text, videos for a community site where content is user generated. Many of these apps do things already that you would have to spend a lot of time creating yourself. Foursquare is another location based service. Can you leverage their APIs in your own application?

Some might call this technique a 'mashup'. Also depending on your business model this may not be suitable for you (you want to sell the data for example).

If these sites can not be leveraged it is at least a great exercise to impose constraints on yourself and see what you can come up with for a given problem.

 

Posted

Successfully installing Developer App on iPhone

Well, I was finally successful at getting an app I developed on my iPhone! This is done via the Developer program not the App store as you'll want to test your app out on actual phones before you submit it to the store for approval.

I've had all sorts of problems as the original app could not be deployed to my phone because it had iOS version 5.x on it and the app was built with xCode 3.2 for Snow Leopard. Luckily they have v4.2 for Snow Leopard (I originally thought I'd have to upgrade my OS to Lion, which I might do at some point anyway).

So after I installed xCode v4.2 I had start errors. I then uninstalled xCode and reinstalled, then rebooted. I still got errors on boot up and the confusing thing for me is that there are multiple xCode icons in my Finder so when you right click on one it will say what version it is. The one that was giving errors was v3.2.6 to I moved that to trash.

Then I tried copying previous projects into xCode and it would build okay but wouldn't go on the phone. I wasn't sure with the reinstall if I lost some things but I rebooted and restarted xCode a few times as suggested during Google searches but that didn't help. So I created a new project from scratch and copied the files over (from PhoneGap) and presto it went onto the phone!

With all the Developer provisioning profile stuff you have to do on Apple, at the end of the day you get a bundle identifier that you need to use in your app plist file.

When you drag the www folder from another project over you have to make sure it highlights your project and keeps the references. I find using a previous project directory is ripe for problems so try to start everything fresh. A huge pain but it's great to now have an app on the phone to test. And with phonegap you can copy over different apps and test them in the same project if you want to avoid creating new provisioning profiles. I haven't fully mastered this area yet but I have it working so I'm super pumped.

Posted

Installing a Developer-version app on the iPhone

I joined the Apple iOS Developer Program (you'll need to if you plan to install apps on your phone prior to submitting to the App Store). It's $99/year.

A little glitch with their Activation code (error validating my name or something) but after notifying support it was resolved within a few hours.

I then went about creating a Developer Provisioning profile which allows you to install an app on the phone. Since I already had a bunch of apps I made with PhoneGap I just picked one of those. Actually most of the work is completely separate from the app itself. Apple has a straightfoward Provisioning Assistant that walks you through all the steps, from certificates to profiles. I've attached a variety of screenshots below.

Once you have the app id you just copy it to the Bundle Identifier in the .plist file in Xcode. Unfortunately I couldn't deploy the app to the phone because the phone uses a new version of the iOS (5.x) whereas the one with xCode was only 4.3. So I am now downloading xCode v4.2 which hopefully will work on my Snow Leopard OS. I don't have the latest OS for my Mac (Lion).

Screen_shot_2011-12-21_at_3
(download)

Posted

Upload a File to a Remote Server with PhoneGap (revised for version 1.2.0)

Media_httpzacvineyard_unpep

I'm looking at uploading images, audio, video and text from a mobile phone, so this tutorial should help!

Posted

Using AJAX with JQuery Mobile | Giant Flying Saucer

$("#resultLog").html("Result: " + data);

This post helped me to make an AJAX call in a jQuery mobile app and get a result, then update a DIV. Worked great!

Posted

Check if current geolocation is inside polygon

I had an idea recently after going to the T4G open data hackathon in Fredericton, New Brunswick. To aid in New Brunswick tourism when someon visits the area you could determine which municipality they are in and present them with some ideas for places to visit and things to do. I found a Google Fusion table that has the Nhttp://www.google.com/fusiontables/DataSource?dsrcid=843427#mce_temp_url# which uses polygons. And knowing the location of the person via their mobile device we could determine which boundary they are within.

I haven't tried modifying this code to work with the boundaries above, but I found this code on the Google Fusion Tables API group.

// check if point is in URL 
var latLng = results[0].geometry.location.toString() 
var SQL="SELECT URL_VRL_Name FROM 1271853 WHERE 
ST_INTERSECTS(geometry,CIRCLE(LATLNG" + latLng + ",1))"; 
var queryText = encodeURIComponent(SQL); 
var query = new 
google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq=' 
 + queryText);   
query.send(getURLLookup); 

 

function getURLLookup(response) { 
    numRows = response.getDataTable().getNumberOfRows(); 
      numCols = response.getDataTable().getNumberOfColumns(); 
    if (numRows == 0) { // point not in URL polygon 
        document.getElementById('geoMessage').innerHTML = "** ** OK -- 
Address not within a URL/VRL"; 
    } else { 
       document.getElementById('geoMessage').innerHTML = "** ** Address is 
within the: " + response.getDataTable().getValue(0, 0) + "."; 
    } 

 

Filed under  //  geolocation  
Posted

Using Drag and Drop Editors and Code Generators for Mobile Apps

I love learning. I'm always reading and trying new things. As I looked into mobile application development I tried to figure out the best way to do things.

The first major discovery was that you could use HTML5, CSS and Javascript to build a powerful, slick mobile app and get the benefits of using web standards, as well as the internals of the device thanks to sites like PhoneGap.

Then I started looking at IDEs and tools that help you build mobile apps fast. I came across sites like BuzzTouch which allows you build apps using their web application. I was able to easily create screens and link them together, pull in RSS feeds and so on. Then I hit a wall as I discovered I couldn't easily link from custom HTML screens to the screens I had already created with Buzztouch. Doing that requires going back to objective C programming (which is platform specific). Also you can only current build apps for iPhones and Androids. Also v2.0 of their server will require a server installation instead of using their already hosted web app for v1.5. Buzztouch is great for some people though. One of the amazing things is the ability to update your app from the app itself without having to resubmit to iTunes.

Another cool site is Tiggr. You can use a visual drag and drop editor to create your app and they generate HTML5, CSS and Javascript. The first month is free and then it's $45 per month per developer. They say it's good for fast prototypes which makes sense, so I wonder if it can also be used for production apps.

You have to evaluate your goals and the goals for your app to determine which path is best for you. But generally I don't like to be put into a box where I may run up against the wall at some point. Also as a developer I want to also learn the technologies and not just generate code. So I am going to stick with the 'standards' (HTML5, CSS, JS, jQuery mobile, PHP, etc). This way I can leverage these skills if I decide to start taking contracts.

Also any of these tools require you to learn their tool and way of doing things and the code generated may not be easy to understand or modify. 

Also as I work on mobile apps I realize that there is an important server side component to all of this. The server can provide the content to the device (unless it's static content which is rare these days), it can filter the content for a smaller device, provide API access, update websites with client locations, push notifications to device, and so on. Many of the tools I mentioned and have worked with do not do any of this.

Posted

Google Fusion tables - Google maps jQuery plugin

Media_httpmt0googleap_thjku

I was able to pull data from my Google fusion table into a google map. You can right click on the page and view source to see the code (after you click the link below the map).

Filed under  //  database   google fusion tables  
Posted