PopToo is updated to Version 1.2.8 for iOS 5

http://itunes.com/apps/poptoo

For new iOS 5 upgrade, PopToo has prepared it by being updated to 1.2.8

We’ve fixed some minor bugs, and improved some workflows.

App Store reviewing process went so smoothly, even though it should be crazy over there reviewing immense number of updated apps for iOS 5. PopToo was submitted and approved to be ready for sale in about 8 hours. Thanks App Store.

Also, we do thank our PopToo Friends, who have been enjoying their music with PopToo iOS App everyday. It’s great joy for us to serve our users in daily basis.

Keep enjoying your favorite music with PopToo!

PopToo is updated to Version 1.2.7!

After struggling in revising the check-in process for a while, updated PopToo fixed the critical issue.

While PopToo is running background, most of its views are unloaded from memory for optimal functionality. But because the controlling elements and the displaying elements were not perfectly separately, often the important elements for Auto Check-in feature were also unloaded along with the displaying ones.

If Auto Check-in was initiated while being in background, the count-down seconds and the indicators for phases of process, which used to be residing in the displaying objects, were not being activated.

It didn’t affect Auto Check-in itself, but when PopToo was restored while it was in the middle of count-down, the displaying elements were not showing the current state of Auto Check-in correctly with count-down seconds.

This issue is fixed by completely separating the controlling objects from the displaying object which may have been unloaded while PopToo is running background.

Thank you for your patience, and keep enjoying your favorite music with PopToo!

About PopToo’s Foursquare account

PopToo has been making mistakes in not being active in managing Foursquare account.

For simple reason, such as having too little time for managing PopToo project due to working for my employer, I almost ignored importance of managing Foursquare account, contrasting to my activeness in PopToo’s Twitter account.

At least, I should be aware of Foursquare Friendship Requests from our PopToo Friends and accept them for building relationships. Though many of them were sent when PopToo’s email weren’t active, making it too hard to be notified about them, it’s definitely my mistake for not being responsive.

Though it’s too late, I accepted their Friendship Requests. I just hope our PopToo Friends are much forgiving and understand some limits of PopToo project and its developer.

From now on, as PopToo’s dedicated developer, I will try to spend more time using Foursquare. This is much needed for me to learn more about Foursquare’s API, so I can bring more Foursquare related new feature for PopToo iOS App.

PopToo’s one reason for performance lagging: Unreleased allocation

PopToo uses Core Data extensively. However, the way it uses fetched objects is not good for memory management, especially for an app like PopToo, which is focused on running background.

Unlike what’s often recommended, PopToo simply uses a few number of NSMutableArray instances to manage fetched objects from Core Data. Due to the original design structure for sectioning these objects into UITableView based on time or distance, I have postponed to use NSFetchedResultsController instead.

Though the design has worked as I intended, using NSMutableArray wasn’t the right way. As PopToo is running background, new objects will be constantly added, when new stream of PopToo Friends’ check-in data is downloaded and when the user checks-in his media information. Inevitably, memory allocation for NSMutableArrays will be grown until the user terminates PopToo, or the device system does. And as they grow, performance of PopToo is affected, which is more visible when it’s restoring to be active from being background.

For next update, I will refactor PopToo’s workflow to be more suitable for running background. Memory allocation will be strictly minimized, instead fetching objects from Core Data will be refreshed more often. I am fully aware that fetching requires some time and may not be the right solution for better performance, but I am confident it will make PopToo’s lagging issues to be less visible, enhancing the user experience.

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.

%d bloggers like this: