Friday, September 30, 2011

We're on the App Store!

After all of the waiting and watching, we're finally on the App Store!  Yesterday evening I was on my way to the lake to get some wake boarding in when I received the notification from iTC mobile (the mobile itunesconnect app) that my app was "Ready for Sale".  And now begins another waiting game...

I never really thought of what was going to happen once my app finally made it to the store.  I tried to prepare my app, throw out some tweets, get this blog started, etc. in preparation for the app the launch, but now that it is in the store, I didn't know what to do initially.  I started with iTunesConnect, trying to see if anyone had bought my app.  This was a fairly frustrating morning to have an app launch though.  iTunes Connect was acting very strange this morning and wouldn't let anyone see sales and trends reports.  It was nuts.  I went to like 5 forums and everyone had the same frustrations that I had.  I had to wait from 7:00 till about 13:00 to finally be able to log in.  Then when I logged in, NOTHING.  The reports are lagged a day, and my app had no data yet.  :(

As I was determined to find out if anyone had purchased my app yet, I began thinking of ways I could figure it out.  Then it hit me that a last minute feature that I added to my app might help.  Google Analytics.  It was very easy, maybe 5 minutes of work, to add analytics to my app.  Google has made it so easy to do.  The only negative with including analytics is the size of the library you have to include in your app.  It's a little more than 1 MB which pretty much doubled the size of my app.  But oh well.  It was worth it.  I anxiously logged on to the analytics portal and checked out my app's activity.  Low and behold there was some activity!!!  We had a couple of people in Europe and a couple Americans that had sent some activity over.  I was ecstatic!  


As the day went on, there was little to no new activity in analytics.  I began to worry about what to do now.  I've put a lot of work into the app, and I didn't want to give up that easily.  So I set out to find some review sites that would take a look at my app and give some exposure and feedback.  App-score.com was the first site I encountered and they seem like awesome people!  Rob from app-score.com emailed me literally within 2 minutes of submitting a review request.  We exchanged 3 or 4 emails and he seemed like a nice guy.  I gave him a promo code and hopefully  he'll review my app.  That got me excited about review sites, so I went to half a dozen more sites and submitted promo codes and review requests.  Hopefully that will give my app a little more exposure and it won't die within one day of releasing.

In any event, I've had a lot of fun with ScoreApp.  It's been really exciting and we've still got some work to do.  I'll report my success or failure with the review sites and update you on activity in my app next time.  Until then, reach for the clouds!

Friday, September 23, 2011

App Store Submission

Last night I finally submitted my application to the App Store.  The process was very simple and streamlined.  The hardest part of the process was writing an adequate description for my app.  Although I am really trying to get things right with this app, I have kind of grown anxious and just wanted to get the app out there.  Here are a couple of my experiences and how I dealt with them:

Artwork: 

Artwork is not my strength when it comes to making apps.  I can get around okay in Gimp and Inkscape or Photoshop and Illustrator, but I don't proclaim to be a pro at any of those programs.  Creating the icon for ScoreApp was an adventure that I hope turned out okay, but only time will tell I guess.  I think it looks nice, so I guess that's all I can do.  To create the artwork for my app, I tried to do everything I could in Inkscape.  Inkscape is a free Illustrator alternative.  It creates and edits SVG files, with stands for scalable vector graphics.    I created the logo in that format so I could easily export it to any size that I wanted.  The artwork I had in my project included the following files:

  • icon.png - icon for iphone 3GS and earlier home screen
  • icon@2x.png - icon for iPhone 4 home screen
  • icon-settings.png - icon for iPhone spotlight
  • icon-settings@2x.png - icon for iPhone 4 spotlight
  • default.png - iPhone launch image
  • default@2x.png - iPhone 4 launch image
  • iTunesArtwork.png - icon for the iTunes version of App Store
  • screenshots.png - screenshots for the store, without the status bar included.
  • and the background, button, toolbar graphics - for in app graphics

It was the most artwork I've ever had to create in my programming career.  I usually just put in requests to real graphic designers at work when I need something.  But I think the resulting look and feel of the app is pretty good.  Hopefully, if there are some real designers out there, you can download my app when it comes out and send me some feedback so I can improve in the future!  Thanks in advance.

Logistics:

The logistics of getting my app submitted were very straight forward and simple.  After my app was complete, I logged on to itunesconnect.apple.com and requested my distribution certificate by following the easy instructions posted there.  Then I installed the certificate.  Then I created and downloaded my distribution provisioning profile, which was also a breeze.  At any time before or after all of these steps, you'll need to set up your App in the "Manage Your Applications" section of iTunes Connect.  This process is also very straight-forward.  Just set everything up according to the instructions on the page.  The SKU number is an internal identification number that you use for your product.  You can make up anything you want there.  I just put a base number in there and it accepted it just fine.  After getting your app to the point the it is "Ready to Upload Binary", switch back to Xcode.  In Xcode, you'll need to build your app in a different way than just running it in the simulator to get it ready to go.  First, you'll need to make sure that your targeting your iOS device and not the simulator.  That threw me for a loop and wasted about 15 minutes of me trying to figure that one out.  In the build settings, make sure that your distribution profile is selected in the code signing section.  Then from the Product menu choose Archive.  Archive will be greyed out unless you select iOS device instead of the simulator.  Once it finishes Archiving, the Organizer will pop up.  Select your newly created archive, click "Validate...", enter credentials, click "Submit...", enter credentials, sit back and watch and then your done!!  That's all there was to it for me.  Quite easy, quite slick.

Waiting:

Now begins the fun part.  The waiting game.  I came across a cool website that tries to gather statistics for how long the review process takes.  Check it out at http://reviewtimes.shinydevelopment.com/ if you'd like.  I've had my app submitted for about 12 hours now and counting.  I'm pretty anxious to see how it goes, but I guess patience is a virtue.  I'll keep you posted on what happens.  Until then, reach for the clouds!


Monday, September 19, 2011

Let the Coding Begin!

Well, another week has gone by and it's time for another post.  This past week has been a lot of fun!!  I've been able to scrape together quite a bit of time to dedicate to things iOS and iPhone and things are going really well.  I'm putting the finishing touches on ScoreApp, my first iPhone application.  I'm going to be submitting it to the App Store hopefully by the end of the week or early next week.  I'm treating this app as a learning experience and am getting a lot of the infrastructure that an app needs together for this app, even though I really don't think it will be the next Angry Birds.  The more time I spend with Xcode 4, iOS and Objective C, the more I like it.  Here are a few of the things that I've learned in the past few weeks:

Memory management was the number one thing that I didn't like when coming from a clean, garbage collected world.  I didn't like that I, as a programmer, had to be concerned with things that I thought compilers should be able to do reliably.  But, as I have looked through sample code, played with Xcode and watched some iTunes U classes, memory management has started to become second nature.  I don't notice that I'm doing it anymore.  If I alloc something, I've got to figure out where I'm going to release it.  That's about all there is to it.  I mean, there are some nuances that are more complicated than that, but it's not bad at all.  Xcode has an "Analyze" option and a "Profile" option in the project menu that give you some great tools that will help you detect and eliminate potential leaks.  While it is still not ideal, it is a lot less painful than I expected initially.  As iOS 5 comes down the pipe-line, there is a feature called ARC or automatic reference counting that will be available.  I understand this to be like compile time garbage collection.  You can turn on ARC and your compiler will detect and insert appropriate retain/release statements to make sure your program doesn't leak memory.  This feature could be nice, but I've not used it yet, so only time will tell I guess.

Core Data is another feature that I wasn't quite sure of when I began my foray into iOS world.  It turns out that Core Data is possibly one of the coolest and most powerful solutions for data that is absolutely awesome for the iOS environment.  Core Data is a framework that encapsulates and SQLite database using a base class called NSManagedObject.  You can subclass this base class to have custom objects that have any unique or calculated properties that you might want.  You get started with Core Data most often by creating a mapping of your database.  You create your entities, which attributes they have and what kind of relations they have.  Then you can generate some NSManagedObject subclass stubs for you entities and flesh them out to your hearts content.  Then, as you code your app, you use some very simple and intuitive objects (NSManagedContext) to fetch and put entities into the persistent storage.  Admittedly, I'm not building large scientific databases with my applications yet, but so far the performance and ease of use of Core Data is awesome!!  It's the slickest database tool for oo programmers that I've ever used.  It similar to hibernate, llblgen, other ORM tools, but it's done the Apple way.  Consistent and friendly messages are used to use the framework.  I've really begun to like it.

The app itself has been a joy to create.  Right now I've got my app on a handful of beta-tester's iPhones and it has been getting pretty solid reviews so far!  I'm excited to take the next steps, get a website set up (http://scoreapp.cloudappit.com), start tweeting for publicity (@ScoreAppIT) and try to give this app a chance to at least get a few downloads when it launches.  

Look for my next posts to be about the process of preparing the app for submission, and hopefully I'll have some news about how the launch day went.  Until then, reach for the clouds!

Tuesday, September 13, 2011

Applying for the iOS Developer Program

I’ve been reading many blogs and books about beginning iPhone and iPad development lately. I’ve found a plethora of information on the subject. There are many good blogs and forums where people exchange information on their experience as they got started in the App Store. Many of these resources that I’ve looked at lately suggest that you begin the process of applying for official membership in Apple’s iOS Developer Program. This process can be lengthy, especially for a business. There are a couple of different levels of membership in the developer programs at Apple. And there are a couple of different programs. There is an iOS Develper Program, Mac Developer Program, and Safari Developer Program. My main interest is the iOS program, and within that program there are 3 different membership “levels”. Well, 4 if you count the free version. Here is the basic breakdown between the 4 (these aren’t official names of the levels of membership, just descriptions according to what I can remember about them):

  • Free - download released iOS SDK, Xcode and develop/test using iOS Simulator
  • Paid Individual ($99) - same as free with access to pre-release SDK and software, test on your device, submit applications to the App Store.
  • Paid Organization ($99) - same as individual plus ability to add a team of developers to the same account. You can set up teams and administrators of teams, but there is only one Agent who does all the submitting of apps to the App Store and agreeing to terms and contracts, etc. You can set up 100 devices for testing each year of your membership.
  • Enterprise ($299) - same as organization except you can also develop and deploy production applications for internal use in your organization.
I opted to go for the Paid Organization level of membership. This process was a little more extensive than the individual process, but it will allow for growth in the future. Right now, I’m the only iOS developer for CloudApp IT, LLC. However, that can easily change in the future. I applied for the program about 2 weeks ago online. There was a little bit of basic demographic info that I submitted. Then a few days later, Apple requested that I fax over some legal documents for my organization. I faxed our Articles and played the waiting game again. A couple days later, Apple let me know that they had received my documents and were reviewing them. My enrollment remained in this state for about 5 days. Then, this morning, I got a call from a nice lady at Apple informing me that my documents looked good an I was approved. I logged on to the member center at developer.apple.com, purchased the program, waited about an hour for a confirmation email after my purchase, and I was in. Lots of posts on blogs that I’ve read have indicated that the process of getting started with all the code signing certificates, etc. could be complicated. I found that developer.apple.com had some really nice and easy to follow how-to videos. I just watched those videos for about 15 minutes and then boom, my first app was up and running on my actual iPhone device! I’m pretty excited to get started with posting my app on the store. I’ll keep you posted on my experience in the process of posting apps to the store. Look for the next post to be about more experiences as I learn to use the iOS SDK to get my first app together. Until then, reach for the clouds!

Thursday, September 8, 2011

Beginning iPhone Development


As I mentioned in my last post, I am going to be talking alittle about my experience as I’ve started to learn the ropes of iOSdevelopment. After getting set up todevelop iPhone and iPad applications there was a lot to learn. When I opened my new Macbook Pro I starteddownloading the bare essentials to begin my development. First thing I did was download and installLion. This was a great move, as Imentioned in my last post. After that, Idownloaded and installed Xcode 4, which requires Lion. It too is awesome. Over the years, I have opened Xcode 3 on myiMac a couple of times. I tried to writea few console apps in Java, but always found my way back to the confortable confinesof Eclipse as my IDE of choice. Ofcourse, when it comes to iOS dev, Apple has really tried to level the playingfield for everyone and create a sense of consistency in everything they’vedone. Part of that is requiring us touse Xcode as our IDE. Xcode 4 is, atleast on the surface, a great leap forward for Apple’s IDE. It integrates the needed tools such asInterface Builder and a code editor into a single window. With the full screen mode in Lion, Xcode is avery capable IDE and very easy to use for new comers to iOS development. After getting everything installed, I wasrearing to have a go at my first app: Hello World iPhone edition.

I learn best by doing, not reading. I’ve always hated reading textbooks andenjoyed doing projects. As I began towonder where I was going to learn to tackle this new framework and learn thetricks of the trade, I naturally started looking for sample projects thatlooked interesting. In my search I cameacross a course that was offered at Rose-Hulman University. I found this course offered in the form of afree podcast listed in iTunes. I quicklylearned the basics of navigating Xcode (though the examples were from version3,they were easily converted to version 4). I learned the basics of Interface Builder and how to quickly attachinterface elements to my code. Thisprocess is even more intuitive and painless in version 4 of Xcode. I learned how to make my Hello Worldapplication work on both iPhone and iPad. The course was structured in a natural and easy way to help you progressslowly but surely to master the needed techniques to be able to develop prettycool apps. With this new-foundknowledge, I am excited to now go about developing my first app to list in theApp Store. I am not planning anythingtoo complicated for my first App Store app, just a simple Score Keeper likeapp. We’ll see how it goes, and I’ll tryto keep you updated as I continue to learn the ropes of the iOS and App Storebusiness. Until next time, reach for theClouds!

Tuesday, September 6, 2011

Getting set up for iOS development

So it begins.  I've become an iOS developer.  My wife and I ran over to the new Apple Store in the Fashion Place mall and picked up this beautiful laptop a little more than a week ago.  We got a great deal on it and also go a free printer (with mail-in rebate).  When we opened the box, I was slightly bummed to discover that Snow Leopard was installed on our new Macbook Pro instead of Apple's latest OS, Lion.  This was easily remedied by downloading and installing Lion from the Mac App Store.  The installation took a few minutes, but was fast and easy.

Aside on Lion:  I'm not going to offer a full review of Lion or anything like that.  I'll leave the reviews to people more skilled at offering technical reviews on products such as an OS.  But, I will say that I love Lion.  It has all that awesome eye candy that Apple is known for in every aspect of the new OS.  The features that I am most excited about however are the gestures that you can use to navigate through Lion.  I was never a big fan of track-pads or other pointing devices besides the mouse, but with the gesture support in Lion, a track-pad or magic mouse can do wonders for your productivity.  The notion of "spaces" or virtual desktops has been around for a long time and Lion makes them so accessible that it's difficult not to use them to your advantage.  Mission control is very much more useful than previous iterations of expose.  Lion is a polished OS that breaks traditional molds of operating systems.  You can touch your way through your computer like never before.  I'm excited to see where the next version of Mac OSX goes.

Now on to matters of hardware:  I've had an iMac sitting at home since the first aluminum iMacs came out in August of 2007.  That iMac has served me very well.  It got me through computer science at the University of Utah.  I've started a slideshow production business using nothing but my iMac and a printer/scanner.  I've had a hard-drive failure.  I've successfully performed open-heart surgery and installed a new 1.5 TB hard drive into it.  I've pushed my iMac to the max and it has responded admirably.  It has done everything that I've asked it to do and more.  It is now more than 4 years old and it is still a slick, fast, responsive machine that has many more years of life in it.  But sadly, life changes and situations call for new hardware.  My iMac cannot be as portable as I would like it to be.  I've been married to my beautiful wife for just over a year now and we have made many lofty goals in lots of areas of our lives including in the financial world.  With the availability of public transportation, it no longer make sense for me to commute anywhere via my own vehicle.  Enter the need for mobility.  I now have 45 minutes of public transportation to look forward to every morning and another 45 in the evening.  With this 1.5 hours a day potentially wasting away, I've convinced my wife to buy me a Macbook so that I can develop iOS apps during my commute.  It's a base model 13" Macbook Pro with 4GB ram and a 2.3 GHz i5 processor.  Someday, I'll write a post about my decision making process before we went with this model, but not today.  This arrangement has been wonderful so far!  I love the new Macbook and am loving iOS development; in fact, I am well on my way to finishing my first app for the App Store!

In my next post, I'll chronicle my first few days learning to program for the iOS and let you all in on some of the plans that I have for the future.  Until then, reach for the Clouds!

Friday, September 2, 2011

iPhone / iPad App Store

Apple's iPhone 4
Hello to my regular blog readers.  CloudApp IT, LLC has undergone a thorough introspection and evaluation of our core business model.  We have emerged better equipped to succeed in today's economy.  We are very pleased to announce that the future of CloudApp will not abandon it's roots, but rather expand into a new and very exciting landscape centered on mobile applications.  We aim to stay on the cutting edge of technology and bring to our customers an expertise and knowledge that is second to none.  We will continue to broaden our horizons and share what we know with the same passion and enthusiasm that we've had over the past 10 months of our existence.  We are excited as we enter this new phase and hope you will enjoy the ride.

In light of our new direction as a company, I hope to make this blog more of a daily blog.  I will write about my experiences as I learn the ropes and enter the foray of the App Store for iPhone/iPad as well as the Mac.  I look forward to sharing these experiences with all of you.