Optimizing PopToo’s performance: Found the cause which can’t be removed

Lately, I’ve been doing some tests on my iOS app of PopToo project to optimize its performance.

The main situation I wanted to solve was when the PopToo is restoring to be Active from being in Background, it freezes for at least a second before starting to respond to user interaction.

I’ve examined a few areas and these three areas came to my attention: saving transformable objects in Core Data model, delayed selector callings for dismissing certain views while in background, and activating different accuracies for Core Location service. I tested them by eliminating each one.

Initially, I thought saving transformable objects in Core Data was the main cause. As recommended by many, I changed it to store numerical data types. Though it could save some storage space, which may positively affect migrating to new database scheme in the future, it didn’t solve the problem of experiencing freezing.

Next, delayed selector callings for dismissing certain views were dealt by simply excluding them to be used simpler without delay. Which had started for dismissing keyboards when PopToo iOS App goes background, gradually became too complicated, and currently requiring to be refactored anyway.

For saving device power, PopToo changes Core Location service accuracies to be Best if it’s Active, or ThreeKilometers if it’s in Background. And this is the spot where PopToo’s performance is significantly lagged. Core Location seemed to do a lot of critical jobs, that are important enough to cause freezing for a while, when it’s activating stronger accuracy.

Though a cause of performance lagging was found, I couldn’t develop ways around it yet. Since it’s very important and useful way to save device power while using PopToo’s Auto Check-in features, this accuracy changing can’t be removed.

Also, PopToo’s lagging interval seemed to get longer as it’s kept running until being terminated. This means there can be other reasons too, in different areas. I’m guessing it’s related to memory management.

Guess my search is to be continued.

Being employed and having new expectation for PopToo

I got employed to work for a South Korean company, developing iOS apps. Though it will cause me to take less attention to PopToo project, personally I am grateful for going to be able to earn some money to support myself and other activities, and continue to train myself to be a better iOS developer while working for this company.

PopToo has been great so far, being used by highly active users from United States, Brazil, Japan, Germany and Australia. While developing PopToo’s iOS app and its web application, I was not only able to learn the right technologies, but also have them to be tested by many users. Being confident about the apps to work is one thing, but confirming them actually working for many users is something really different.

However, I must admit PopToo has big disadvantage. It needs long period of time to build users, if massive strategic marketing cannot be granted to this project. Since PopToo is willing to stay free as long as possible, it’s really easy to be demotivated by having so little number of downloads for days, though it’s natural result for not being promoted like other popular apps. I shouldn’t forget not to have too much expectation for a service app like PopToo.

I guess working for a company and developing apps designed (or demanded) by others can broaden my experience in iOS deveopment, allowing me to see PopToo as an interesting test for my skills and an app that is evolving over long period time, not as something I need to be dependent on to prove myself instantly. No matter what, programming should be meaningful and fun, especially if it’s for PopToo project.

As I am getting used to new responsibilities given from the company, I will make time to continue developing for PopToo project. Though it won’t be as exciting as bringing regular updates almost every week, keep supporting the platform and its users will teach me a lot of things about software development and serving others, especially those things that can only be taught after long time has been passed. Test of time has commenced.

Google App Engine’s recent situation & PopToo’s challenge to develop web application

For unknown length of time, Google App Engine suffered server errors related to importing modules. And PopToo and other companies’ web applications were affected. Fortunately, it was solved by Google sooner than I thought, or not soon enough for others.

I don’t know about others, but for me the main reason for using Google App Engine was simply because I don’t have experience in administrating servers and scaling them up to accommodate millions of requests. Until I finish teaching myself thoroughly about the subject and be tested with some important issues, developing for both iOS and web application simultaneously could be excruciating.

I shouldn’t forget, and hope some of PopToo Friends may recognize, that PopToo project is currently one man project, until it’s big enough to partner with the great people. I am doing my best to make PopToo project as exciting and meaningful as possible to potential partners. Fortunately,  for PopToo’s advantage, Google App Engine’s initial cost is free, allowing me to economize many current aspects of PopToo project. The dashboard’s graphic analytic, especially, is very useful for me to see how PopToo API is serving requests from PopToo Friends.

Soon, my focus will be shifted to develop for more robust and superb web application for PopToo API and PopToo Web to serve more PopToo Friends coming from non-iOS environment. Considering how this will bring more PopToo Friends, there will be so much benefit after undergoing developing for the platform where I have so little experience. It will be a great challenge, but I expect it will also be very interesting and meaningful to learn and later apply the knowledge of web development for future use.

My expectation for PopToo project

Just submitted new PopToo iOS App Version 1.1.5 This is to keep the original plan I have, which is to continuously update PopToo in weekly basis. Hope this one doesn’t take too long to be ready for sale.

More and more, PopToo is becoming what I have been envisioned since the beginning. With the newly added feature, PopToo Friends can search for the songs checked-in by other Friends in YouTube. If the songs can be found, they can be played in YouTube streaming. It’s amazing to be able to listen to the songs from many different places! YouTube has become THE MEDIA PLAYER OF THE WORLD!

The most important aspect is that these songs found in PopToo’s Timeline is actually being played by the music file owners at the moment, at certain locations. With Auto Check-in switched on, they can simply share the tag information of their songs purchased and kept in their iPhone or iPod, while doing something else. Though I am still working on the objective analysis, I believe this has some significant difference or  value over just listening to the songs streamed online, which are often not owned by the listeners.

As I mentioned in previous blog, it becomes even more interesting when a PopToo Friend checks-in manually. For the user, it’s just simple act of pressing Check-in button in home screen. But when it’s open to the public in Timeline, it conveys the user’s liking of this song and implicit intention to share and recommend to other PopToo Friends. This is a kind of expression like sharing tweets or blogs. Like many other forms of media, I believe music is one of the best ways to express oneself. And this isn’t only applicable to the music makers, but also true for the listeners of their favorite songs.

My expectation for PopToo project is to become like Twitter, specially for sharing favorite songs of PopToo Friends. With #nowplaying hash tag, Twitter is already accommodating this feature somehow. But I hope PopToo to be a specially added layer of service, or an independent streaming, focused on sharing media information. By providing the constantly flowing stream of music tags using standardized format, PopToo Friends can share what they are listening as so easily as Auto Check-in, expressing themselves through their favorite songs.

My current challenges are to bring as many PopToo Friends as possible and finding the rightful accesses to the media streaming like what YouTube is trying to provide. Probably,  learning the science and technique of crowd sourcing may bring some effective solutions, I guess.

I just wish there is not so many stumbling blocks to achieve the goals, or there is enough solutions or help from others to overcome the difficulties. Adventure continues!

Preparing PopToo iOS App Version 1.2.0

No sale for PopToo iOS App was made today. It wasn’t too surprising, since the delay for latest updating was too long, for the reasons on my side and also on App Store’s side. As an excuse, I was actually preparing the bigger update which will be Version 1.2.0, but instead I had to fix some critical issues and submit Version 1.1.4. To understand App Store’s delay, I assumed the delay was probably caused by recent policy change related to In App Subscription. However, even though App Store is famous for making developers to wait for the good or bad reasons, I doubt if my updated version is too complicated to be thoroughly reviewed.

After analyzing the graph of sales, I made up the plan to upgrade PopToo iOS App on weekly basis, believing this is the best way to promote my app at the initial stage of PopToo project. After all, there are so many features need to be added and enhanced, making each upgrading not insignificant. The latest Version 1.1.4’s main feature is to allow the user to open and close continuous check-ins of one PopToo Friend in Timeline view. This feature was planned long time ago, but after careful observation, I figured it’s very critical to bring it as soon as possible.

Until there are so many different PopToo Friends constantly checking-in to fill the Timeline with diversity, it’s inevitable to let only a few Friends’ to dominate the Timeline with Auto Check-in switched on. I never wanted to penalize them since they are the highly active users who make PopToo project vibrant and exciting. It won’t become a problem if  many different users are constantly checking-in. But until then, we should be considerate to the users who only check-in occasionally and it would be bad if their check-ins of favorite songs are simply buried and ignored among the dominant ones.

This kind of users are also very important for PopToo project, since their check-ins are manually done, which have clear intentions of sharing  songs with others because they are probably their favorite songs worthy to be recommended. Perhaps, it wouldn’t be too unfair to visibly promote this kind of occasional manual check-ins. But for now, it seems to be enough to just apply grouping with numeric indication for continuous check-ins of one PopToo Friends.

So, Version 1.1.4 was submitted to bring this important feature, in the midst of developing Version 1.2.0, which has the goal to bring Foursquare integration. This integration has been promised for long time, but it’s taking longer than I expected. The main reason is to allow Twitter connection to be used along with Foursquare, unless the user wants to use Foursquare exclusively. Since Foursquare itself is also often connected to Twitter or Facebook accounts, the goal of not causing any redundancy or confusion is much harder than it seemed to be.

Since Foursquare Venues will be used for PopToo Areas, I guess it’s inevitable to revise the check-in process. Probably, the order of the process will be changed. Also, it will take some time to figure out how to use Auto Check-in with Foursquare, for it requires to select a venue when checking-in. Anyway, I believe right solution can be found, like how other solutions have been found since the beginning of PopToo project.

Three weeks has passed for PopToo iOS App

The first approval was done, and the app was open to the public on January 5, 2011. I had to make a fix for critical error and submit it again to be reviewed, but fortunately, it didn’t take too long. http://poptoo.tumblr.com/post/2618532473/fixed-parsing-related-bug

For the purpose of securing the spot, I registered PopToo as a Foursquare app so early, even though the app doesn’t have any feature for it yet. I should change my previous plan and quicken the development for Foursquare integration, since I don’t want new PopToo Friends to be disappointed at the app. http://poptoo.tumblr.com/post/2775366965/our-apologies-to-poptoo-co-visitors

However, it wasn’t too bad to get an unexpected exposure in Foursquare App listing, and it brought some visitors to PopToo.co. Some people even clicked Like button for the app which doesn’t support check-in or venue listing yet. I am so grateful for their interest in PopToo project and I will do my best to meet their expectations, especially in Foursquare integration.

From all over the world, about 140 downloads were made for an iOS app that wasn’t promoted strategically. The app was simply there and people simply downloaded it. I wonder if this many downloads could be possible if the app wasn’t free. Maybe I am too naive about this, but the dynamic of iOS App Store is extremely attractive. What can happen if I do strategically smart marketing to bring more PopToo Friends?

New version is just submitted and waiting to be published. I wish Foursquare integration can be finished as soon as possible, but the public Foursquare API library for iOS development is not using the current API version 2.0. Probably, I should build my own library. And if it’s good and acceptable, I may try contributing it to be used by other Foursquare API developers. It will be very satisfying if my codes can be useful to others.

PopToo project is officially started

PopToo iOS AppBy submitting, actually re-submitting, revised version of PopToo iOS App, the fXceed’s latest project is officially commenced. For about last 6 months, I have focused on iOS development. Realizing, how vast this world of application development is, even for just iOS sector, more and more I feel the need to learn broader and deeper.

What I realized is, especially for providing a social service, the web application programming is much important, if not more, as the client app development, even though the users may never even care about the web side. Well, being completely ignored by the users is the criteria for being a great web application, I assume. Since, PopToo iOS App is finished its preparation, PopToo Web Application resides in Google App Engine will need much more attention to be optimal, secure and thus become more invisible to the users.

It has been a great challenge for me to develop for two different platforms, iOS and Google App Engine using Python. But after all, it was more about architecture than framework. Finding bugs in processing logic was much harder than learning about semantics of programming languages. Through this experience, I developed stronger respect to the software architects, and aspiration to be become like them.

The bigger challenge is coming. I must get out of this comfort zone and actually engage with the users, the customers, the ones who support PopToo project.