Friday, January 29, 2010

Day 8 - Zombies and a New SDK to handle iPad

I'm still reviewing the iPhone Application Development tutorials on Lynda.com. I'm on section seven that deals with User Interface. However, the previous section, Debugging and Troubleshooting was a real brain drain! It's incredibly important to remember the issue of memory. Experts constantly remind users that Apple is exceptionally stringent on use of memory. It is shocking how little memory is allocated in the iPhone to applications. So, objects must constantly be released back to the pool after each alloc and init. To help with the release of memory, but without losing track of the code, there is a tool within the debugging process called by the cool name "Zombie" that can be used.

(NOTE: I'm interrupting here to briefly mention what I find intriguing about programming jargon. Common, everyday terms are used in specialized argotic syntax that plays on a word's original meaning and extends its purpose further to define unique properties in code. An example of this would be "heap", which in C++ means available memory. "An area of memory used for dynamic memory allocation where blocks of memory are allocated and freed in an arbitrary order and the pattern of allocation and size of blocks is not known until run time. Typically, a program has one heap which it may use for several different purposes." Heap in common, everyday speak means a pile. It is easy to see the extension made here. Then there is the use of the word Zombie. - Zombie objects, whose only purpose is to report an error when someone calls them, acts as the husk of the previous object. It's fascinating to see these uses of words.)

Using Zombies as a tool to figure out problems is a good way to check code. It's important to "enable Zombie" BEFORE releasing an object during debugging. A Zombie acts like a placeholder or shell of the object that was released back to the pool. Therefore, when checking code, Zombies help you identify where the problems are in code after an object has been released. However, if you don't release the Zombie afterwards it continues to hold on to memory which you don't want. In addition, you must enable Zombies in all caps YES or NO for the BOOl. (In computer science, the Boolean or logical data type is a primitive data type having one of two values: true or false, intended to represent the truth values of logic and Boolean algebra. - Wiki)

I realize this all seems complicated, and yes, to a degree it is. But Simon, Lynda.com instructor, does his level best to keep the information to a reasonable degree of difficulty.

On a side note, the iPAD was release this week and with the release comes a new SDK! Although all the apps currently in existence will work on the iPAD, the dimensions remain the same. There is a feature where you can pixel up, but quality is lost of course. Apple recommends that developers work with the new real estate and the new SDK. At the rate that things change I hope I'm able to get above the flailing and into the creating of product.

Wednesday, January 27, 2010

Day 7 - App building and the Business Formula for Success

I have made it through several hurdles. I did finally up-grade my OS, download SDK, and begin the "Hello World" tutorial with some success. I am still watching iPhone App Development tutorials on Lynda.com. Although the information does seem overwhelming on the tutorials, it also appears manageable.

I completed researching the iTunes app store and I found that my idea for an app is NOT represented, even once, within the genre I'm interested in. That's excellent news; no competition. And this segues nicely into my topic for today on the formula for success.

As I pursue my app building journey, I do so working full time and going to school, where I am concurrently obtaining two master degrees; MBA in Marketing and MFA in creative writing. I seek these degrees as a means of formalizing my 17 years of work in marketing and writing.

Presently, I'm studying entrepreneurship. It has brought to the forefront some significant aspects of creating a business that are important to consider.

Often businesses are assessed based upon their management teams, the product, the opportunity, the risks and the start-up position of the proposed business. As the area of management team goes, I am a seasoned professional with entrepreneurship experience. I started two companies and working on my third. I've learned some excellent lessons along the way. However, to my disadvantage, I do lack experience in app building and software programming, so I need to seek out partnerships or hire people with those strengths. That's a topic for another day.

My interest today concerns the area of opportunity in relation to risk. This is where I believe there is real potential for my business model. The market is growing and the niche I plan to fill is unsaturated. That's a good thing. Critical to my success is the rate to which I can build and release my app. It's just a matter of time before someone else does release a similar app that I am working on, so time is of the essence. Strike while it’s hot and empty.

Furthermore, my start-up costs have been relatively low, thanks to the open-source SDK and the plethora of free information or inexpensively priced tutorials that are readily available. My primary cost is sweat equity; learning the programming side and developing my app’s hook and interface. I justify the learning curve as one of on-going education and skill development. It's a win-win situation for me.

In fact, I have found that my new hobby has impacted the way I think about my job at work. As I embrace the concept of user interface applications and their impact on organization and presentation of information, I realize that there are many areas of the University where I work that could benefit from applications that integrate users and information in a specialized and engaging way.

Entrepreneurship is never without risk, but the degree of risk varies. Knowledge is power and it is extremely advisable to research the industry you plan to enter. With iTunes App Store, it’s relatively simple to comb through the competition all centralized in one place. It is also prudent to read the iPhone Human Interface Guidelines provided by Apple and other materials. Currently, I have been working with such books as, “iPhone Application Development for Dummies”, “Objective-C for Dummies”, “Cocoa Programming for Dummies”, “Sams Teach Yourself iPhone Application Development”, and “Game Design Workshop” (Fullerton). All of these materials have proven effective.

So, I go about my project with a lighter heart knowing that the area I'm interested in isn't crowded and there is plenty of room for one more player.

Connect with me on Facebook, Twitter, and LinkedIn

Thursday, January 21, 2010

Day 6

Since my last entry, I did receive and install the Snow Leopard OS up-grade and download the SDK program, however it took two days, primarily my evenings, to complete these operations.

Initially, when I installed Snow Leopard OS X, it immediately threw me to the Apple website for the recent up-grade of Snow Leopard 10.6.2. I then had to download the upgrade (which took more than an hour). When I tried to install the up-grade my computer wouldn't allow it to be up-graded. After much haranguing, I called Apple.

I was instructed to try Software updates under the apple icon. I checked up-dates but my system didn't display details, which struck the support tech as wrong. So, she then instructed me to go to my system utilities and run the repair program. This did isolate an issue and repaired it.

After which, I was able to download the software up-grade 10.6.2 and install. The next step was to install the SDK from the developer center at http://developer.apple.com/iphone/

Remember, that before you can download the SDK you have to register as a developer and create an Apple ID. I had done this days earlier. So I logged on to my account and downloaded the Xcode for Snow Leopard (3.2 version).

Finally, the technical stuff was out of the way and I immediately began new project.

Saturday, January 16, 2010

Day 5

It seems I have had a break in the case so to speak. I decided to check out Lynda.com (I'm a long time subscriber to the tutorial hot spot). I was looking for Objective C tutorials, but what I found was something so amazing. A full course on iPhone App building in video tutorials. Gotta love Lynda.com for putting this out, but more importantly the guy whose teaches it.

Simon Alladice, a software developer with more than 30 years experience, is incredibly easy to understand and he breaks down everything so clearly. The tutorials are engaging and utilize a large touch screen viewing monitor where Simon interacts with the device to illustrate key points. It is easy on the eyes and ears by reducing app building step-by-step from the ground up. Although, he expects viewers to have some Objective C, C++, C# (sharp), Java, PHP or coding experience (again this issue of previous experience) he actually does take you through code with fluid ease. Whereas, I was expecting to have to muddle through, I find I can follow along and (here it comes) RETAIN the information. Wow! Kudos to Simon.

I was discussing the point that there is this idea that anyone wanting to create an app must seemingly have had coding experience. The person I was speaking to said that maybe it's because people who don't have coding experience would not think or want to build an app. There may be some truth to that. I suddenly decided and locked onto the idea to create my own app and at the time it seemed like a big jump mentally for me. However, was it? There are thousands of apps out there and people keep saying anyone can build one, perhaps I just finally took them literally.

Honestly, I have accepted that I will go at this app building business without any programming background and just dive in. I figure with enough exposure, repetitive directions and copious notes I would"get it" eventually. Only a few days in and yes, I would say I am beginning to get it.

I have also found a place that will build for you and/or consult with you on your app. I was actually contacted through twitter by AppLiya Studio in Japan. They offer app building for hire services at www.appliya-studio.com So should I become disillusioned, I can default to someone else to build the app I've dreamt of. Of course, that would defeat the purpose of this exercise and it would admit defeat. So I shall trudge on.

As of today, I have yet to receive my Mac OS up-grade and I keep peering out to see if the mailman has come. I don't want to download the SDK for Leopard, when Xcode 3.2 for Snow Leopard is thought to be so much better.

Friday, January 15, 2010

Day 4

Read. Read. Read. That has been my main objective and I've discussed this extensively. I emailed author, Neal Goldstein (neal@nealgoldstein.com) about the Objective C issue. The issue of my not having any experience, and he suggested I read "Programming C for Dummies" another book he wrote. He was exceptionally fast at responding to my email, which I greatly appreciated. I have ordered the book and I will add it to my growing list of materials.

Along with understanding the iPhone application development process, I have begun to identify and shape my application idea, core functions and scripting. This touches on an area I'm familiar with in story telling.

Designing the look of the interface and story-boarding the script for the application are exciting processes. Writing something down makes it so much more concrete and real. Psychologically, it is encouraging to feel that at this moment I can be productive. Rather than having to wait to acquire the skills to design physically the application, designing the idea out on paper generates that sense of forward motion and it's a prudent move.

By making a paper version of the application, quirks and problems are discovered. The process should also streamline coding when that time comes. I am a true believer in visualization. As an extension of visualizing, the paper process helps to create in my mind the look and feel of the application so that my actions lead me to the app's creation.

By researching and reading in tandem with designing, such issues as screen real estate, pixel allocation accommodating for "fat fingers", graphic simplicity and aesthetics are all kept prominently at the forefront of my mind.

Furthermore, by creating a statement of purpose for my application, I focus the idea that influences the app's core functions and abilities. Many people suggest to simplify apps to one core function and not to try and design an app with a slue of bells and whistles.

This sounds self-evident, but I believe people over-complicate apps because their idea for an app is weak and they are trying to mask this problem. But in the end, users will play with apps because they are immersed in the apps functions and services. To that end, beautifying an app that ultimately lacks substance will not prove successful. However, this formula for success is elusive. If it were that easy to create a true immersion experience then everyone would be doing it and all apps would be a hit.

Statistically, the majority of apps do not do well. Outside of the risk of financial recovery of development costs and the ability to make profits upon release, there are other risks associated to building apps.

You could build an app that Apple chooses NOT to publish in their app store. If that happens, you're dead in the water before you've begun. I haven't found a criteria list from Apple identifying the do's and don'ts for apps to ensure my app doesn't get squashed. If I find one I will most certainly post it here. This is probably one of the worse risks to app building.

Then there is the possibility that your app is never really seen or advertised and it gets lost among the thousands of apps out there. Presently, Apple doesn't sub-list in any general genre. For instance, in the entertainment section of the app store (the largest of all the listings) repetitive apps for hot babes and fart noises drown out other entertaining gaming apps. There are so many of each of these types of apps that it warrants Apple's attention to diversify their classifications further so that new apps don't disappear in the huge numbers of apps all thrown in together.

Also, there is the risk that your app receives revenge reviews from angry users or simply dissatisfied ones. Your app's rating is at the mercy of users. The only real way to beat this is to make an engaging and satisfying app from the start.

Well, that is easier said than done isn't it. Ultimately, creativity and ingenuity are the skills needed to be honed to a fine point in this industry.

Thursday, January 14, 2010

Day 3

There is much to write, to study, to create. This app development process is intimidating and overwhelming. I have found so much material on the subject I feel like I'm swimming in information overload. As of last night, a reader left yet another document to read called "Building Photokast" found at www.scribd.com/doc/12684298/Building-PhotoKast-Creating-an-iPhone-app-in-one- month

Thanks, Christian, for this link. This doc is really, really good. It deals less with code and more with the principles behind User Interface (UI), application motivation, process development expectations, and customer service. It's an excellent document that I highly recommend.

I have continued to cull through materials, books, and videos. Ironically, as I begin this process, I am starting at the same time as Stanford University's class on iPhone App Development. (the link is listed below in iPhone Resources). Classes are on iTunes for free. Admittedly, students are required to have taken Objective-C before entering the class, so auditors like me who have no experience are at a slight disadvantage. Furthermore, these videos aren't permanent on iTunes. Stanford warns that they will be removing the videos after a couple of months.

But Stanford is just one of many, many tutorials out there. Furthermore, there are many blogs on the subject of building apps. Therefore, it begs the question, "Why create this blog?" Well, of the blogs, articles, tutorials, books, and web sites that I have seen, I have yet to stumble across one that really starts with someone as unfamiliar and wet-behind-the-ears on development, C++, Objective-C, and iPhone app creation as I am. Undoubtedly, there must be blogs out there with newbies like me writing about their journeys, but I haven't found them.

I still feel that all the information I come across has someone with some type of coding experience, game development or app creation background working on the app. Even the "iPhone Application Development for Dummies" book that states you do not need any iPhone or Mac development experience requires some coding experience. The author, Neal Goldstein, assumes the reader has some programming knowledge and familiarity with C++ and Objective-C.

To which I respond, "No, no I don't." That's the crux of the problem. Most blogs and sites don't really begin at the very start and that's where I am.

Literally, I feel like a beginner on every level and facet of app building. If the repetitive statement so readily found in these materials is that anyone can build an app, then I'm a good test for such a qualifier. I figure if I am able to accomplish this app thing, then quite literally anyone can.

It is the reason I'm spending so much of my time reading, researching and getting my hands on anything and everything to do with app building, rather than just diving into Xcode. Yesterday was spent watching videos on the subject and continuing to collate resources for the blog.

As I wrap this entry up, I will restate my enthusiasm again for the "Building PhotoKast" document. It provides a comprehensive overview of their development process with tips, advice and lessons learned. It's short and sweet, but I think it is an excellent document to READ FIRST before all other things. With so much information to get through, this is saying something.

Ultimately, it seems that at its core an app must fill a niche and engage the user to the point of addiction, while "telling a story" of some sort. Perhaps, that is the one area I'm not so callow in. Story telling is something I love to do and the idea that an app tells a story feels, at least to me, intuitive. This is why games immerse users.

Furthermore, it is advised to build apps for one of the seven deadly sins. (read "Building PhotoKast") This statement is an intriguing way to generalize a key design rule that acknowledges the importance of building apps that fulfill and create solutions that deal with the different areas of human needs and behaviors.

As soon as I receive my Snow Leopard upgrade, I'll download the SDK for Snow Leopard and begin the simple app tutorial. In the meantime, I continue to read, watch, and research information.

(I have added a significant number of new links in the resources section. Check them out.)

Wednesday, January 13, 2010

Day 2

Yesterday was a long one. I received my "Building iPhone Applications for Dummies" and spent a great deal of time perusing it way late into the night. Upon first glance, it does appear like a good book. But here's the problem, there are so many books and materials to study. Where is my time best placed for the greatest and fastest return?

I'm unsure whether I should read the books first or dive into building. I suppose I could do a combo thing where I read, watch tutorials and create an example app. Initially, I thought reverse engineering might prove viable. Jailbreak into my iTouch, after identifying an app that most closely reflects the one I want to create, and work backwards on the code by substituting the action code that would drive my app. This is not as easy as it sounds.

There is an article that discusses this approach for those of you who want to do it that way. http://dvlabs.tippingpoint.com/blog/2009/03/06/reverse-engineering-iphone-appstore-binaries

However, I've decided that this is not a practical approach and I've chosen the origination-to-creation process.

The continuation of my research at the Apple App Store proved enlightening. Seriously, two years ago when I bought my iTouch and became hooked on apps, I spent hours for weeks solidly reviewing and downloading apps for my device. (Dare I admit that I spent almost as much on apps as my iTouch cost! Thus, the app appeal and its economy summed up.) At that time, I DO NOT remember seeing any pornography (T&A) apps.

However, my most recent inspection has me concluding that at a minimum, 1/4 of all apps in the entertainment genre are porn! Why! I guess technology brings with it the good and the bad, including the seedy underbelly of the world's oldest profession always lurking to exploit new means of commerce.

Equally, there is burgeoning fetish market with such apps as armpit pics for those who want to get their fix. The cornucopia of apps available is mind-boggling and there seems to be plenty of room for all kinds. Many apps overlap with slight differences, but the vetting criteria at Apple seems to allow a plethora of apps to reach inventory status. And why not?

Apple has an vested interest to keep the production lines going. It receives 30% of sales for apps that are sold and the great seduction of the iTouch and iPhone is the wide range of apps to choose from. It is the crux of the business paradigm shift in the ether economy. "Create great open source (free) software and they will come" - to use a takeoff of the "Field of Dreams" great one-liner. Google has also created open source software for the same reasons. I'm sure there are others. Pranav Mistry is making Sixth Sense open source, including instructions on how to dissemble a cellular phone to build a Sixth Sense device for free! (check out TED.com at http://www.ted.com/talks/pranav_mistry_the_thrilling_potential_of_sixthsense_technology.html and watch his presentation. Expect to be blown away.)

I recently read that the strongest, more robust and stable OS is Snow Leopard. For $29, I ordered the latest upgrade for my computer. Why? Because the recommendation is that Xcode 3.2 in Snow Leopard is the most user intuitive, user friendly Objective-C coding version out there. I currently have the Mac Leopard OS, so the upgrade was fairly inexpensive to get.

It is important to remember that you need to have Mac Leopard OS to build apps. It is further encouraged to have and be familiar with the iTouch or iPhone.

Tuesday, January 12, 2010

http://adeem.me/blog/2009/07/03/getting-started-with-iphone-development/ paper version of the "Hello World" tutorial

The Novice App Builder: In the beginning...

The Novice App Builder: In the beginning...

http://connect.apple.com/cgi

In the beginning...

Well, here I go attempting to do two things simultaneously; maintain a blog and build my first iPhone application in the process.

It seemed that simply embracing the idea of building an application was an epiphany. Having never studied C++ or Objective C or any other software code and never having designed a video game or application, it was a rather large leap in my mind to think "I want to build an application for the iPhone."

Mind you, at the time of this posting there are thousands of applications for iPhone and iTouch users. This idea isn't novel, but it is new for me. I'm uncertain how many people with my lack of experience embark on the process and I'm hoping my process will be of interest to others like me.

After embracing the ideas of building an application and blogging about my experience, it was time to do some serious, extensive research.

Apple provides open source software for iPhone developers. Their software development kit (SDK) provides developers with all types of documents, tutorials, and developer testimonials at their web site. http://developer.apple.com/iphone/

Initially, I found an excellent article "How to become an iPhone developer in eight easy steps" at http://www.guardian.co.uk/technology/gamesblog/2009/feb/10/gameculture-apple this gave me the leads to begin the process.

Once I was at Apple's SDK site, I quickly learned that one of the best articles to read BEFORE developing anything was the "iPhone Human Interface Guidelines".

Furthermore, I researched some of the best books on beginning the development process and I found "iPhone Application Development for Dummies" book received very high and favorable reviews. I've ordered the book and I am awaiting its arrival.

In the meantime, I am reading the copious materials on the Apple site, and searching video tutorials on the Web. One site offers a good tutorial at www.pragmaticstudio.com I will continue to search for more tutorials and update this blog with all the reference materials as I come across them.

The other research I have done is to begin to look through ALL the iPhone applications being offered in the Apple App Store in the genre relating to my application, which might fall under entertainment, lifestyle, health or education. Looking through these many apps helps me to understand what is currently out there and what apps may be similar to the one I'm creating. This research is daunting! There are thousands of applications, but knowledge is power and it's best to know what niche you are filling and what the competition is.