The Glog Blog
Wednesday, 7 March, 2012

I recently released my first app Squall on the iPhone app store. Its been a steep learning curve, and I believe that the experience gained in the process is more valuable than any revenue I receive in sales.

One of the first things I noticed when I started the development cycle, was the distinct lack of information about what is actually involved in developing and submitting an app to the iPhone app store. Once you have purchased your 'developer license', you are (somewhat) guided through the loops by Apple, but until that point, I had no idea what was waiting for me. This article will hopefully shed some light on what that process involves.

Initial development

You don't actually need a developer license to start working on your app. I started on paper, then moved on to building some prototypes using JSFiddle. I then looked around for a framework to use and settled on Appcelerator (In hindsight, I would have been better off just coding everything in Objective-C but at the time the appeal of being able to write an app in JavaScript was just too great).

Once you get to the coding stage, you will need the latest iPhone SDKs, which can only be downloaded if you have a developer license. I think this is where a lot of developers get put off. $99 can seem like a lot of cash up front, especially when you have not even started coding. You just need to bite the bullet and go for it. In reality $99 is nothing to what you will get out of the process (talking about experience, not cash here).

Purchasing a developer license

Purchasing the developer license is strait forward (the submission process is the killer). You just need a method of payment (credit card) and an address. You can sign up at https://developer.apple.com/, enrolling in the iOS developer program (don't enrol in the Mac developer program by mistake, the two are not compatible). Once you have made the purchase, it usually takes about 24 hours for your account to become active, and you will then have access to the wonderful 'iTunes connect', the management hub for your app(s). From within iTunes connect you can do everything that is not related to the actual development of your app. This is where you prepare the meta data, keywords, descriptions, upload screenshots, set pricing, view sales etc.

Once your account has been confirmed, navigate to the downloads section and grab the latest Xcode and iOS SDK.

iTunes connect & The Provisioning Portal

Although this step could wait a bit, there is not harm in getting it out the way. Before you can deploy apps on actual devices, you need to create provisioning profiles and developer certificates. The certificates are used to sign the binaries so they can't be tampered with, and the provisioning profiles allow you to deploy your apps to test devices. The provisioning portal can be accessed via Apple's developer portal and you will need to generate both development and deployment certificates and profiles. Although the process is not simple, Apple does a really good job of guiding you through it step by step and showing you how to install the certificates on your computer.

Once you have all your certificates and profiles, you need to register your app ID. Again, this can be done in the provisioning portal and is a fairly simple process. At this stage, the app ID can have wildcards (e.g. com.ginkapps.*) allowing you to setup push and purchase rules for more than one app.

With the App IDs created, you can then register your app in iTunes Connect. You will need to fill in details about your app (name, unique identifier, description etc), and finally, you can mark your app as 'ready for upload'. You can leave this step until a bit later, but if you forget then you will get an error when you try to submit your app.

Preparing you app

It is very important that your app (in particular the .plist file) contains all the required information. If anything is missing, or is in the wrong format, you won't be able to submit your app. A list of exactly what information is required in the .plist can be found in the Apple Developer portal. Luckily, if you miss any information, or it is formatted incorrectly, your app submission will immediately fail and you can correct the issue.

In addition to the .plist file, it is a good idea to take a look at Apple's rules and guidelines. Its quite a chunk to read but it can save you a headache later on down the line. My first app was rejected after a week in the approval process because the option to automatically load on startup was enabled by default. If I had taken the time to read the guidelines properly I would have known that this is not allowed and not had to resubmit my app a 2nd time.

Testing on your device(s)

Having setup all your certificates and provisioning profiles its time to start testing your app on your devices. You should have been testing the app in the iOS simulator up to now, but you can't rely on it to behave exactly the same as an actual device. To allow you app to be install on an external device, you need to install your provisioning profile on it. This can be done in Xcode, via the organiser (devices tab). Once the profile is installed, you should be able to install your app via iTunes, just as you would any other app (I usually just drag it onto the device from the Apps window). I believe you can also install apps through Xcode. Of course, for you app to be accepted by the device, it must have an App ID that matches the one in the provisioning profile installed on the device.

This is not the only way to test on multiple devices, but probably the easiest if you are only testing on a few phones/ipods. For power users, you might want to take a look at Test Flight.

The submission process

When you have finished testing you app and you are happy with it, you can submit it to the app store. This involves building the app 'for distribution' which means it gets signed by different (distribution) certificates, and creates an archive that can be uploaded. So long as you have registered an app with the same App ID in iTunes Connect, you should now be able to submit your app via the Xcode Organiser. Some more signing happens, and then your app will start uploading. If there are any obvious issues with the app (mostly with the .plist), then you will get an immediate rejection message. Otherwise, the binary will be uploaded, and your app will be pending review. In this state, you can change the details about the app (description, screenshots), but you cannot upload a new version of the app (unless you do it as an 'update').

Approval

Approval typically takes a week, or at least in my experience it has. For some apps it takes longer, for others less. You have no control over it, and you will get no indication of your place in the queue. Just sit back, forget about it for a few days and wait for an email.

If your app is rejected, you should get some information stating why. This is usually quite vague, but should give you enough information to work out which of the 10,000 rules you broke. If you think that your app was unfairly rejected, then there is an appeal process, but I have no experience of that myself.

Hopefully, your app will pass approval, and your app status will become 'pending developer release'. At this stage, the app is ready to go, but hasnt been made available on the app store yet. The temptation (having waited so long) is to immediately release your app, but I urge you to go through one final stage of testing. Even though your app has not been made available on the app store, you can still generate promo codes and use these to download the app. Send a few out, and make sure the app downloads and works as expected. Thousands of apps are approved on the app store every day, and you will get approximately 48 hours in the 'new and noteworthy' section of your app's category. You will only get this chance once, and it is the time in which your app will either sink in a sea of doom, or get enough downloads to keep it afloat once its pushed off the list, so make sure that the app is 100% before releasing it.

Release

Having completed your final tests, you can now release your app. It usually takes a few hours to appear on the various app stores, but over 24 hours it should have gone global. After another 24 hours, you should see your first days stats appearing in iTunes connect.

While the app is on the app store, you can still change some of the metadata (e.g. descrption) and this is usually updated quite promptly on the various app stores.

Updates

At some point, you will want to release an update for your app. Either adding new features, or fixing bugs. To do this, you will need to register an update in iTunes connect with a new version number. Make sure you update your .plist to reflect the new version number, and once you are ready, go through the same submission process as before. In my experience, approval for updates takes just as long as the initial approval did, so be warned, you are not going to get a 'quick fix' out.

I hope you found this article helpful. Feel free to contact me with any questions you have, either by commenting below or via any means listed on my home page.

If you enjoyed this article, please upvote on Hacker News

Friday, 17 Febuary, 2012

You can't have missed the recent buzz about the Twitter Bootstrap. Its been featured several times on Hacker News, and some of the larger powerhouses in the blogging industry.

For a web developer, Twitter Bootstrap is a godsend. For the past few years we have had to make do with JQuery UI, which just didn't quite cut it. Don't get me wrong, I love the JQuery project, and I have used JQuery UI in several of my own projects, but I have always felt that it was slightly lacking. It never felt like a complete tool set. Twitter Bootstrap has everything you could ever want, from layouts, via default css templates, to every component we could ever need. Designing UIs becomes a breeze, and no doubt development time (and therefore cost) will be drastically reduced.

Wordpress was a similarly successful tool. A blogging engine that was free, easy to setup, and simple to use. It went viral (for a good reason), and now, disguising individual wordpress blogs as something unique is a multi million pound industry. According to ZDNet, Wordpress powers 14.7 percent of the top million sites worldwide, and Wordpress 3.3 alone has been downloaded over 8 million times. This means, that for the average web user, over 1 in 6 sites they visit is powered by Wordpress. But, that tell-tale wordpress theme that was once so big and beautiful, is now a blight on the internet.

Twitter Bootstrap, I fear, will lead us down the same path. Developers will flock to use this new tool (and with good reason). But the result will be that every webpage we visit will have that same "Twitter Bootstrap" look. Just like Wordpress Templates, we will start to see "Bootstrap Templates", followed by the inevitable birth of the "Bootstrap Templating" industry.

I applaud Twitter for their hard work in creating Twitter Bootstrap, it really is a marvellous tool, but I do fear that their good deed will eventually backfire on us all.

Saturday, 11 Febuary, 2012

For the past week, I have been using Fetchnotes to organise my tasks. Over the years I have used many different services... Evernote, Wunderlist, Remember the Milk and the iPhones good old 'Notes' app (The iOS 5 'Task' app was a non starter, for some reason I cant set tasks as done and I think the app is unintuitive and badly designed... not to mention seriously buggy). Until now, I have not come across a service that quite suits my need. Evernote is really a 'note' taking platform rather then a task list, Wunderlist was a bit too buggy for me and managing the tasks could be a bit fiddle, and RTM is non free if you want to use it on your iPhone. For each of these services, I really tried to like them, but in the end I always ended up using the iPhone notes app to manage my tasks. The reason for this is that I am essentially very fussy about how I like to take notes. I dislike apps that are unnecessarily complex, or do more than the job they are designed to do.

About a week ago, I came across an article on Hacker News entitled What Happens When You Swear At Your Users. The article itself is a great read, talking about how Fetchnotes accidentally sent a test email to their entire user base with the phrase 'This is my test bitches'. It actually turned out rather well for them... a lot of users (luckily) found it rather amusing, and the article made the front page of Hacker News, exposing Fetchnotes to several hundred thousand readers.

Although Fetchnotes is still very much in beta, I decided to give it a go and was immediately impressed. It is simple and intuitive to learn, and using hashtags to organise notes is simply genius. Almost all note taking apps allow you to tag your notes, but by using hashtags, Fetchnotes allows you to tag your note as you are typing, saving you the trouble of writing your note, then finding the right tag for it, then clicking on the tag.

Fetchnotes has very limited features at the moment (basically just the ability to save notes on their web platform), but already I am finding that I use it much more than any of the other services I have tried. Its quick to make notes and tag them in one or multiple categories, and just as easy to filter by those categories. iPhone and Android apps are not available yet, but their blog suggests that they are on their way. They are also promising integration with several existing services (Evernote, Gmail, Instapaper, Outlook) which should really make Fetchnotes a serious competitor to some of the more established services.

A couple of things I would like to see improved:

Its the only service I have found so far that fits well with how I like to manage my tasks and I am looking forward to seeing what they have to offer in the future.

Thursday, 26 January, 2012

I like the idea of having Reddit and Hacker News links appear in my Twitter feed, but all the bots that I have found so far are too high volume and just dominate my feed. Therefore I decided to write my own.

TopOnHN: A bot that tweets each article that reaches the number one spot on Hacker News

TopOnReddit: A bot that tweets each link that reaches the top 15 on Reddit

The bots mush abide by the following laws

The first step was to register the Twitter accounts and apps. This is a fairly strait forward process. The only step that required some intellect was authenticating the app for the twitter account, but helpfully, twitter has set up a 1 click oauth login for an app that is connected to a twitter account (found at the bottom of the main app page).

To handle twitter access, I decided to use the ntwitter module as it seems to be the most up to date, and also the bitly module to shorten the urls (for this you also need to setup a bit.ly account and obtain an API key).

So… here is the code:

The entire process is wrapped in a single function, which is triggered using setInterval every x seconds. A request is made to the reddit API and on receiving a status 200 response the data is extracted and parsed.

The script then takes the top x tweets, checks their score threshold and timestamp, and then generates bit.ly urls for the links and comments. Once all this has been put together, the tweet is posted. Simples!

Wednesday, 4 January, 2012

Blogging with Wordpress has become boring and tiresome. I have grown to dislike the clunky interface, the editor, and the way that however much you try to customize, it still looks like just another Wordpress blog.

I decided to try to put together my own blog engine which would only do the bare minimum. The idea behind Glog is to create a super simple and ultra minimalistic blog engine that has a tiny overhead and only the most basic features.

Although Glog is basic, it is also very powerful. Here's why you might want to give it a shot.

Glog is not for everyone, but if you are looking for a super simple bloggin solution, and you enjoy using git and javascript, give it a shot.

https://github.com/guyht/Glog

Next Page