fXceed

eXceeding Abundantly!

  • Home
  • About PopToo Project
Twitter RSS
Tag Archives: Development

PopToo is updated to Version 1.3.1!

Posted on 2012/01/31 by petershine
Comments off

PopToo is updated to fix some minor bugs and added small performance improvement.

[iTunes Link: http://itunes.com/apps/poptoo]

Thank you and keep PopTooing your favorite music!

Categories: PopToo | Tags: Development, iOS, PopToo, Update

Celebrating PopToo’s First Year

Posted on 2012/01/19 by petershine
No Comments

PopToo recently has become one year old!

I thank every PopToo Friend for finding this meager iOS app and using it everyday.

To a solo developer like myself, who never had his own personal project before PopToo, any kind of interest means a lot. I can’t help but feeling grateful and be humbled by all the PopToo-ings made by our Friends. Thank you so much!

 

Here are some records made with our PopToo Friends:

179 PopToo Friends checked-in 37419 times.

The first check-in was done by @revilo1390 at Jan. 5, 2011 20:13 UTC from Denver, Colorado, United States.

The song was “Chasing the Lights” by Last Winter.

Top 3 users who checked-in their songs are:

  1. @orbitat (14995 times)
  2. @r_Salxixa (11818)
  3. @yukino1230music (3020)

11932 songs, 3719 albums and 2651 artists were identified.

The Most checked-in song (84 times) is titled “All I Want” by

  1. A Day to Remember” (58 times)
  2. LCD Soudsystem (23)
  3. The Offspring (2)
  4. Cure (1)

The Most checked-in album (516 times) is “The Black Swan” by “Story of the Year”

The Most checked-in artist (1763 times) is “A Day to Remember”

Top 5 songs of “A Day to Remember” are:

  1. “All Signs Point To Lauderdale” (64 times)
  2. “I Heard It’s The Softest Thing Ever” (59)
  3. “Better Off This Way” (59)
  4. “All I Want” (58)
  5. “If It Means A Lot To You” (56)

Top 10 genres are:

  1. Rock
  2. Pop
  3. Soundtrack
  4. Indie
  5. Hardcore
  6. Alternative
  7. Punk Rock
  8. Indie Rock
  9. J-Pop
  10. Electronica/Dance

The Most checked-in Foursquare venue is “Runner Academia (1199 times) in São Paulo, Brazil

Top 10 cities are:

  1. Sao Paulo (Brazil)
  2. San Francisco, CA
  3. Vallejo, CA
  4. Fremont, CA
  5. Palm Coast, FL
  6. Berlin, Germany
  7. Mt. Shasta, CA
  8. Rocklin, CA
  9. Santa Barbara, CA

Because of the experience in developing PopToo as my own personal project, I was able to prove my proficiency in software development and eventually got full-time employment.

Though I had to compromise time I may spend to improve PopToo more rapidly, having financial security freed me from the pressure to find the business model for PopToo.

So, I could keep PopToo as a free app without advertisements. By treating it as a non-commercial project, I didn’t have to ask for the user’s attention for the ads, but just for their satisfaction in using PopToo everyday.

About 3 months after PopToo’s release, an awesome app called Soundtracking was introduced. Other than its name, the app and its service were exactly how PopToo dreamed to be. Instead of feeling beaten, it taught me about the importance of knowing the limits of PopToo project. Without serious capital and additional development resources, trying to make PopToo as good as Soundtracking while having full-time job could have been the fatal disaster. It did solidify PopToo’s mission to stay non-commercial project, to be used for training me to become better iOS developer and for building meaningful relationships with PopToo Friends.

The future of PopToo is about becoming the Real Service. Though I’m not sure about keeping it non-commercial, I want to build great community of people who love to use PopToo. Three of the important objectives for continuing PopToo project are upgrading to have aesthetically pleasing user experience, building the web platform and utilizing geolocation more effectively. For these objectives, I guess I should learn more about graphic design and web development.

Again, I would like to thank all my PopToo Friends. Thank you so much for enjoying your favorite music with PopToo!

 

Categories: Development, Personal, PopToo | Tags: Development, Google App Engine, iOS, Learning, PopToo, Statistics, Update

PopToo is updated to Version 1.3.0!

Posted on 2011/12/18 by petershine
No Comments

PopToo is updated to fix some minor bugs and added small performance improvement.

[iTunes Link: http://itunes.com/apps/poptoo]

In about a few days PopToo becomes 1 year old. We are thinking about how we can celebrate it with PopToo Friends. Any idea is welcome! You can send an email to poptoo@fxceed.com or a tweet to @poptooco.

Thank you and keep enjoying your favorite music with PopToo!

Categories: PopToo | Tags: Development, iOS, PopToo, Update

iOS Tech Talk 2011 in Seoul

Posted on 2011/12/08 by petershine
No Comments

[This blog does not contain any technical information. Also, I am an Apple fan, probably my blog will be purely subjective.]

iOS Tech Talk World Tour

Today, December 8, was very special day for me.

It was my birthday, which was meaningful to me and my parents.

Also, it was the event day for iOS Tech Talk in Seoul, which was meaningful to every iOS developer in S. Korea.

One of the greatest things I didn’t expect from this event was to be able to meet the same instructors who were at the WWDC. In other words, this Tech Talk event can be considered as the extension of WWDC, not the another kind.

To some people, including myself, these instructors are the Rock Stars. They were touring around the world to excite their fans. Some people took pictures with their stars. I didn’t do it because I thought it could be perceived as objectifying them, which could be impolite. However, I just hope I don’t regret not taking pictures with them, later.

Aside their professional authority in the field of software development, the instructors were extremely friendly. They were so generous enough to pay good attention to people they never met before, who kept asking annoying questions. Probably, it’s their job requirement as the  Apple Evangelists. However, it’s impossible to ignore but respect their effort.

This one day event did impress me a lot, strengthening my positive perception about Apple and its people. They do know how to make their fans happy.

Allow me to reuse the tweet I shared: With these enthusiastic, friendly and yet extremely professional masters, the future of Apple will stay to be bright, I think. Even if Steve is no longer with them, with us.

I definitely want to attend WWDC 2012. Not only because I am eager to learn new technologies, but also I want to continue the joyful conversation I was having with the masters. Now it’s clear to me that, everything about Apple has become very personal to me.

Categories: Academic, Personal, Summary | Tags: Apple, Development, iOS, Learning, Programming, Software Architecture, TechTalk

[Korean] About my comment on the book, ‘Real iOS Programming without Interface Builder’

Posted on 2011/12/02 by petershine
No Comments

This is the comment I left at following URL: http://www.acornpub.co.kr/blog/406  ‘인터페이스 빌더 없이 하는 아이폰 리얼 프로그래밍’

It’s about questioning the intention of the book about doing iOS development WITHOUT using  Interface Builder. It’s written without reading the book yet.

I’m a strong proponent of Interface Building and its usefulness, and my comment was about that not using the interface builder may not be useful for those who need to read this book, who may be new to programming. And ironically to the author’s intention, it may not be able to help creating the application which should be easily maintained and expanded.

(내용을 읽지 않고, 별도의 프로그래밍 관련 주제의 댓글입니다. 소개글만 읽고 적은 것이므로. 책에 대한 평가로 오해하지 말아주세요.)

좋은 책이 나온 것 같습니다. 인터페이스 빌더’만’ 쓸 줄 아시는 분들에게 무척이나 유용하고 의미있는 내용을 가지고 있을 것이라 생각됩니다.

정교하고 디테일한, 100% 통제를 해서 모든 요소들을 일일이 다 챙기는 것이 중요한 프로젝트라면 당연히 코딩으로 VIEW 또한 손수 다 그리는 것이 좋을 수 있습니다.
또한, .xib 은 일종의 XML 로서 parsing 과정을 거쳐야 하기 때문에, 0.001 초라도 아껴야하는 경우에는 분명 사용하지 않는 것이 맞습니다.

하지만, MVC 분리법에 대한 충분한 이해가 되지 않은 초보 개발자, 실제로 응용해본 경험이 적고, 그 가치를 제대로 이해하지 못한 개발자들에게는 잘못하면, VIEW-CONTROL-MODEL 에 속하는 코드들이 우후죽순 막 섞히는 결과물을 내게 만들기도 합니다. 마감날짜가 급한 경우에는 더더욱 유지보수에 문제가 있는 (앞으로 문제가 생길) ‘위험한 코드’를 만들게 되지요.

이렇게 되면 소개글에 나타난 대로 유지보수에 탁월한 해결책이 되어주지 못하게 됩니다.

분명 하드코딩은 중요하고, 어떤 개발환경도 반드시 이것을 가능케 해야 합니다. 하지만, 이것은 과거의 생산물이 가진 생명력을 연장하는데 좋은 것이지, 미래를 위한 혁신적인 결과물을 만드는데 장애가 되는 것이라 생각합니다.

그래서, 혹시라도 미래를 위해서 일해야할 초보 개발자들에게 잘못된 습관을 가지게 하거나 자칫 혼란을 주지 않을까 하네요. 컴퓨터가 할 수 있고, 컴퓨터가 해주는 것이 훨씬 더 좋은 일인데도 불구하고, 단지 자기는 이렇게 가르침 받았고, 이렇게 하고 싶다는 이유만으로 하드 코딩을 고집하는 것은 미래에 대한 좋은 준비자세가 아니라고 생각합니다.

또한 단지 코멘트를 많이 남기기 위해서도 좋은 이유라고 생각되지 않네요. 코멘트 대신에 코드 그 자체로 모든 내용을 표현할 수 있다면 제일 좋다고 많은 분들이 얘기하시는 것 같던데.

반대로, 인터페이스 빌더를 쓰면 그에 대한 설명을 구구절절 코멘트로 어딘가게 남겨둬야 하니, 아예 코멘트 없이 코딩을 하기 위해서라도 하드코딩을 하는게 좋다고 하려 하신 거라면, 적극 동감할 수는 있습니다.

책의 내용은 분명 추정컨데 회사내 베테랑 개발자들에게 무척이나 도움이 되겠지만, 책없이 공부할 줄 아시는 그분들에게 정작 책이 필요하지 않을 것도 같고요. 왜 그동안 이것을 공개적으로 다룬 책이 씌여지지 않았을 지 좀더 냉정한 고민을 하셨기를 바랍니다.

당연히 그런 고민을 하셨다면, 어떻게 하면, 인터페이스 빌더의 장점과 하드코딩의 장점을 융합해서 양쪽 모두가 가진 탁월함을 같이 쓸 수 있는 방법도 책에 써주셨을 거라 믿습니다.

이런 목적으로 두마리 토끼를 다 잡는데 유용한 내용을 쓰셨다면, 이런 책이 다른 곳도 아닌 한국에서 한글로 먼저 출간된 것에 엄청난 자부심을 느끼셔도 좋을 것 같습니다.

Categories: Academic, Development, Personal | Tags: Development, iOS, Practice, Programming, Refactor, Software Architecture

My understanding in naming a Class with Prefix

Posted on 2011/11/26 by petershine
No Comments

Many source codes, especially those which are written in kinds of C languages, almost always named their classes using prefix.

Intuitively, I adopted to use this way of naming, since many GOOD ones were written in this way. My usual way of learning is by imitating.

As I’ve gained more experience, it became obvious to me why it’s critically helpful for programming.

In my case, I care quite a lot how methods and variables are named. Nicely named ones can help understanding the workflow, minimizing any confusion, thus producing reliable lines of codes.

However, one must careful not to use same syntax for the name of class and instance of it, since it’s difficult to distinguish if one is meant for the instance or the class. It gets worse if the class name and the instance name are as common as something like ‘WebViewController.’

Since naming instances of class happens more often than naming a class, it’s better to name the class with less common way. To make it less common, one of the easiest way is to use a prefix, elongating it to be syntactically different. For example, by using prefixed, ‘FXDWebViewController’ for the class name, one can use ‘webViewController’ as a name for an instance.

Though this instance name is quite common, you can use it as often as possible, without causing the programmer to be confused and even preventing compile time or run-time errors, as long as they are separated by scopes.

It gets even better when one has to use Find and Replace function, since syntactically different words are much easier to be found more quickly.

Also, using the prefix, you can leave it as some kind of signature, claiming your authorship and responsibility on the source codes.

Categories: Academic, Development, Personal | Tags: Development, English learning, iOS, Learning, Practice, Prefix, Programming, Software Architecture, Tip

PopToo is updated to Version 1.2.9!

Posted on 2011/10/19 by petershine
No Comments

http://itunes.com/apps/poptoo

As much requested feature, PopToo is updated to use #ArtistName for utilizing Twitter’s hash tagging.

Now you can show how much you appreciate your favorite artist by using auto generated hash tag.

Thank you and keep enjoying your favorite music with PopToo!

Categories: PopToo | Tags: Development, iOS, PopToo, Update

Steve Jobs, the artist of User Experience

Posted on 2011/10/07 by petershine
No Comments

On October 6th, 2011, the news of Steve Jobs’ death started spreading.

As a professional iOS developer, I was busy updating the applications to be prepared for upcoming iOS 5.

When I heard the news, like many people, sadness immediately fell on me.

It was just like what a fan could feel when our hero died.

He was like Michael Jackson to the pop music fans, Gregory Peck to the film lovers, and Bruce Lee to the martial artists.

Unlike them, however, Steve had used  the electronic devices and their software, which could provide the great user experience.

Probably, he could be the first one who had chosen this form of art, I think.

And Steve’s art was so entertaining and so right. None us had to be ashamed of enjoying it.

Like BMW drivers, Harley Davidson riders, and Stephen King readers, us Apple users are so proud of our objects.

Thank you, Steve Jobs, for all your awesome artifacts joyfully shared to us. We will miss you a lot.

Categories: Personal | Tags: Career, Condolence, Development, Life

PopToo is updated to Version 1.2.7!

Posted on 2011/09/23 by petershine
No Comments

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!

Categories: PopToo | Tags: Development, iOS, PopToo, Update

Coding while Commuting

Posted on 2011/09/03 by petershine
No Comments

Last week, I’ve been coding while commuting to my office. Due to busy schedule for our projects, being required to learn Cocos2d framework, and having own desire to utilize my time to its fullest, I began to train myself to be more comfortable at coding while commuting using bus.

I use long distance bus from my home to subway station, and take a train to the office. It takes about an hour for bus ride and about 20 minutes for subway transit. And almost every time, I’ve been able to take a sit in the bus. In other words, I have an hour at my disposal to do something productive, such as coding.

[New York Time] Wi-Fi Turns Rowdy Bus Into Rolling Study Hall

from New York Times

Typing and building using Xcode works just fine, especially if you are free from needing to use big external display, comfortable desk and chair. When I do occasionally need to use internet, my iPhone 4 can provide personal hotspot. However, coding without internet browsing is not bad at all for me, since it lasts only about an hour.

During this hour of coding, somehow I could be able to focus on my coding more efficiently than while sitting  comfortably in my office. I suspect it’s because of using only Xcode with all other apps being closed, and encouraging myself to find solutions from my own stuff, rather than passively search answers from internet. Also, knowing the bus ride would last only for an hour, I could just focus on finishing miniscule but important matters which could be fixed quickly.

Because of this good experience, I began to have stronger desire to get Macbook Air. This lightweight compact laptop will surely make my coding while commuting more enjoyable, though my current 13″ Macbook Pro is not so bad at all. Guess I need to find about opinions of the developers using Macbook Air with Xcode, and how to deal with disadvantages.

Categories: Development, Personal | Tags: Career, Development, Life, Practice, Tip

Why having personal projects is critical for a software developer?

Posted on 2011/08/08 by petershine
No Comments

I would like to share my reasons, based on what I learned from other developers, to have personal projects outside of professional jobs.

Unless you are a super genius, who can implement newly acquired knowledge flawlessly at once, it’s inevitable to make mistakes in programming based on new ideas. Your choice for solutions will need to be revised repeatedly. It may require number of customizations to accommodate merging these solution with codes from other developers or from older projects, though they are working just fine with no problems by themselves.

At early stage, your professional job will provide this kind of challenges many times, allowing you to grow patience in dealing with errors and testing implementations to find the right solutions. Sooner or later, you may find yourself simply customizing lines of codes for already solved problems. In other words, your job will get easier as your professional experience grows.

Unlike many other professional fields, new technologies are introduced so often, much faster than we can keep up with. But until your project manager or supervising developer decide to use these new technologies, you may only hear about them, if this is the worst case.

Your ability to implement new ideas, that you’ve practiced so hard, will become dull or inefficient. And what makes it more depressing is that this kind of backsliding happens very quickly and drastically. When finally new technologies are required for your projects, it could be embarrassing that your development skill is much like how it were at the early stage of your profession.

Having your personal projects not only mean that you build something, but also that you make own decisions. Because you are in charge, you can test your implementation skill with new technologies without waiting for anything. Whether your attempt to use new ideas is successful or not, you will be prepared to deal with issues later when it’s much needed for real jobs assigned by your employer.

Along with technical decisions, you can also make scheduling one on your own, without any constraints. Of course, once it’s public and used by many others, you may have to listen to their requests and satisfy their demands as soon as possible. However, it’s done proactively, being able to lengthen or even shorten the development time as you like. This sense of controlling time is probably only possible if you have complete ownership of your project, which is by having personal project outside of your job.

Also, no matter how much dedication you’ve put into your works, technically these jobs assigned by your employer are actually not yours. These most useful evidences for proving your skills may not be permitted to be used when you are applying for a new job from another company. But with you own personal projects, you can just submit them to be fully analyzed without any guilt but with great confidence. It’s always better to silently show what you are so good at, than just loudly speak about it.

Categories: Academic, Development, Personal | Tags: Career, Development, Learning, Life, Practice

PopToo’s one reason for performance lagging: Unreleased allocation

Posted on 2011/07/22 by petershine
No Comments

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.

Categories: Development, PopToo | Tags: Development, iOS, memory allocation, Performance, PopToo

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

Posted on 2011/06/25 by petershine
No Comments

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.

Categories: Development, PopToo | Tags: Development, iOS, Performance, PopToo, Refactor, Testing

Dealing with busy situation of finalizing development

Posted on 2011/05/04 by petershine
No Comments

About last 5 days were dedicated to prepare newly developed iOS app to be submitted to the App Store. During those days, unknown but high priority errors were found and prevented other issues to be solved in time. It was extremely stressful to find the causes and solutions, especially if every line of code compiled and worked just fine. As expected, the main causes were architecture related, run-time issues, which are usually considered to be more difficult than anything else.

What made me more frustrated was that, the architecture was working just fine until new feature were added for the requests that were made so late as when we were just ready to submit the product to the App Store. As we were adding new feature, processes were changed and other components were affected without our knowledge. To those who request, it’s just one more feature. However, to those who develop, it’s one more variable affecting entire system.

Also, I have realized how inexperienced I am, especially if I am under time constraining situation. If newly added feature is not working right at first, I easily lost confidence in my own design of software, and attempted to modify it to accommodate the new feature. And because this modification on the currently working design was made hastily, I often overlooked how important components were affected by recent change.

I should have more training on staying calm and keeping the confidence in finely working software design in the midst the frantic development.

Categories: Development, Personal | Tags: Development, iOS, Software Architecture

Re-organizing once unclear iOS project

Posted on 2011/04/20 by petershine
No Comments

For about three weeks working for the company, I have been dealing with the project that has been developed by other programmers before. Looking through the lines of code, I could observe how lack of solid architecture made the project to be extremely difficult to manage and discouraging for a newly added member like me to understand the flow and make meaningful contribution for significant progress of the project.

After a week of struggling with the unclear organization of the project, I rearranged some part of the code. Though it wasn’t done for the whole project, re-structuring classes and flow of method calling based on MVC convention did bring some sense to the project and allowed me to get on the track quite earlier than how I worried it to be.

Probably, it was because iOS development is usually done by only Xcode and only one kind of SDK, and the most of recommended practices are already established firmly and shared to the public. They are clear enough for an intermediate programmer like me to apply on the project.

With this experience of re-organizing the project and being benefited by it, I am so much motivated than ever to master software architecture, design patterns, and other important practices. For a software development project to succeed, help of an architect is necessary and I wish to be the one who is truly helpful.

Categories: Academic, Development | Tags: Career, Development, Software Architecture

One week has passed working for new company

Posted on 2011/04/10 by petershine
Comments off

One week has passed working for new company. Testing my skills in iOS development has commenced.

Unfortunately, what I have feared did happen. I got involved to the project which is struggling to be finished for some reason. It was impossible to avoid being the newly added member to the project in the midst of development. This is really daunting for me, since I have to do cramming to learn the whole plan and history of successes and failures, in limited time before the due date. And I must meet their expectation for me to actually contribute something helpful to increase the chance to finish the project successfully.

Above all, it’s really frustrating when the solutions I want to implement are not working for this project, when they are the similar ones I had done successfully in other places. Being a new comer to the project is really hard for me to trace the causes of problems, without having enough time to understand whole lines of codes and their intentions. It scares me how bad it will be if the project is much larger than current one.

I just want to save precious time, without being troubled by failed tests of implementations. It could be much better if I could get involved from the beginning of a project.

Categories: Development, Personal | Tags: Career, Development

[Korean] Explaining How I developed PopToo service

Posted on 2011/03/24 by petershine
No Comments

This is written in Korean, introducing myself for the development job application. However, actually this describes how I developed PopToo, what I thought and what decisions I made, rather than who I am in general. Though it’s unconventional, telling the story about what I have done for my project can tell more about who I am, since I am applying for a technical job requiring to solve to problems. I don’t know when it will be, but perhaps I may rewrite this in English to be shared, or to be used for applying for other development jobs.

[아이폰 개발]
전세계 많은 개발자들과 마찬가지로, 독학으로 직접 개발을 해보면서 학습을 했습니다. 이전부터 MacBook 제품을 사용해 왔으며, iPhone 3GS, iPad, iPhone 4 모두를 경험해보면서, 최종적으로 현재 PopToo iOS App 을 완성하여 App Store 에서 서비스 하고 있습니다. http://itunes.com/apps/poptoo

개발을 진행하면서, Objective-C 의 장단점을 충분히 경험할 수 있었으며, 성능 향상을 위해서 iOS Framework 의 전반적인 특징과 Multi-Threading 의 기초를 습득, 구현하였으며, iOS 가 제공하는 객체형 데이터베이스 Core Data 의 장점을 최대한 활용하여, 유지 보수에 탁월한 소스를 효율적으로 완성할 수 있었습니다. 충분한 검토와 고민을 하여 탄탄하고 버그 없는 Version 1.0.0 이 설계되었고, 데이터베이스 Migration 등을 포함한 업그레이드를 설계상의 큰 변형없이 무리없이 진행하면서, 현재 버젼 1.2.x 를 서비스 하고 있습니다.

아이폰 및 다른 프레임워크에서도 공통적으로 추구되는 객체지향과 MVC 방법론을 최대로 응용하여 장기적으로 유지 보수에 탁월한 설계를 완성하였습니다. 물론, 동료 개발자들과 소스가 실제로 공유될 시에는 여러가지 다른 사항들을 보완해야겠지만, 개인적으로 객체지향의 최대 장점이라 여기는 Inheritance 와 Polymorphism 의 혜택을 받으면서 수정과 개선에 필요한 작업을 최대 코드 몇줄 수준까지 줄일 수 있었습니다. 설계상 시작부터 DRY 원칙을 지키면서 Model – View – Control 을 서로 분리하였기에, 한쪽의 변경이 어떻게 다른 부분에 영향을 미치는지 확인이 무척 용이하였고, 단순반복 작업을 피하면서, 이후 업그레이드 까지 준비할 수 있었습니다.

소스코드 작업을 할 때에는 객체의 상태와 변수 값을 구동 중에도 테스트합니다. 데이터베이스 모델이 수시로 변경되고 객체의 클래스 자체가 변경될 지라도, 기본적인 구동에는 문제가 없게 할 수 있기 때문입니다. 거기에 더불어, Xcode 의 기능들을 최대한 활용하여 수시로 Build 상황을 점검하면서, 버그 없는 결과물을 만들기 위해서 테스트에 충분한 시간을 할애하고 있습니다. 물론 시간이라는 중요한 자원을 소비해야 하지만, 훌륭한 결과물이 만들어지면, 사후 관리에 필요한 시간을 별도로 할애해야 하는 상황을 방지할 수 있기 때문에, 궁극적으로는 오히려 시간을 더 아낄 수 있다고 여깁니다. 특히 PopToo 의 경우에는 버그 제거에 국한되지 않은 지속적인 업그레이드를 사용자들에게 제공해야 하기 때문에 꼭 필요한 설계 및 작업 방식이었습니다.

훌륭한 개발자 분들이 거듭 강조하시는대로, Comment 설명이 굳이 필요하지 않을 만큼 사람이 읽기 편하고, 설계의 의도와 당위성이 보이는 코드를 작성하고자 최선을 다했습니다. 목적과 용법을 쉽게 파악할 수 있는 변수, 클래스 및 메소드 명을 사용하였으며, 성능을 최대한 헤치지 않으면서 개발자가 쉽게 작업 순서도를 파악할 수 있게 한줄 한줄 신경을 썼습니다. 물론, 공동 작업자가 없이 혼자만 보게된다면 그리 심각하게 여기지 않아도 되지만, 불필요한 반복과 실수를 방지하는데 가장 좋은 방법이라고 여깁니다. 소스코드 자체가 개발 설계도가 될 수 있게 하면, 최대의 결과물이 나올 수 있기 때문입니다.

[웹 애플리케이션 개발]
PopToo 는 위치기반의 음악 정보 공유 서비스로서, 독자적인 앱으로서만이 아니라, RESTful 웹 애플리케이션과 함께 연동되는 Social Network Service 입니다. 각각의 아이폰 앱에서 데이터를 중앙 서버에 업로드하고 다른 사용자들이 공유한 데이터를 다운로드할 수 있어야 합니다. 결국, 아이폰 앱 개발 만으로는 해결할 수 없는 부분이라서 추가적인 학습이 필요한 주제였습니다.

이전부터 WordPress 기반의 블로그를 운영하면서, PHP 와 MySQL 를 활용해 보았습니다. 개발 초기에는 간단하게 PHP 를 활용한 RESTful 기반의 애플리케이션을 이용하였습니다. 웹 개발에는 초보였던 제게는 단순히 아이폰 앱에서 데이터를 업로드하고 MySQL 에 저장하고, 다운로드 받을 수 있는 것에 만족을 했었습니다. 블로그 용의 일반적인 PHP 호스팅을 사용한 무척이나 단순한 초보 수준의 작업이었습니다.

하지만, 점점 더 RESTful 기반의 웹 애플리케이션 개발에 대해 학습을 하면서, 블로그용 호스팅을 사용하는 것은 좋은 선택이 아니며, 성능과 확장성을 위해서는 PHP 보다는 Ruby 또는 Python 이 훨씬 더 용이하다는 것을 알게 되었습니다. 더군다나 자료를 검색해보아도 Ruby 또는 Python 을 이용한 자료가 훨씬 더 많고 선호됨을 알 수 있었습니다. 바쁘게 진행되는 아이폰 앱 개발에 비해서, 웹 개발은 지식과 경험의 부족함으로 어떻게 설계해야 하고 작업해야 할 지 확실한 결정을 내리기 힘들었습니다.

다행이도, Google, Amazon, Heroku, Engine Yard 등에서 개발자들을 위해서 웹 애플리케이션 전용 클라우드 호스팅을 제공하고 있습니다. 처음에는 작은 규모에서 무료로 서비스를 이용하고, 성장 규모와 트래픽에 따라서 추가 비용을 지불하게 하는 방식이어서, 본인과 같은 소규모 개발자에게, 막 새롭게 웹 개발을 배우기 시작한 사람에게는 무척이나 유용한 서비스입니다.

Ruby 기반의 Heroku 와 Python 과 Google App Engine 중에서 선택을 하려는데, 막상 두가지의 장점과 단점을 비교하기 보다는 제가 가진 한계를 어떻게 보완해 줄 수 있느냐에 더 큰 비중을 두었습니다. 개인적으로는 Ruby 언어에 대한 관심이 무척이나 크고, 학습자료의 방대함과 커뮤니티에 매료되었기에 Heroku 서비스를 이용하고 싶었으나, 웹 애플리케이션은 개발자의 역량뿐만 아니라 서버의 성능과 확장력에 대한 의존도가 무척이나 높기 때문에, 별도의 관리대응능력을 갖추지 않으면 상당히 어렵거나, 추가 비용이 많이 필요할 것으로 판단되었습니다. 반면, Google App Engine 은 이용방식에 제약이 많고, 자료가 상대적으로 많지 않지만, 자동적으로 일정 규모까지 서버의 성능을 애플리케이션에 맞게 조절을 해줄 수 있고, 일정 Quota 까지는 무료로 이용할 수 있기때문에, 저와 같은 비전문 웹 개발자에게는 상당히 유용하고 경제적인 선택이었습니다.

현재 웹 애플리케이션은, 학습자료에서 가르쳐 주는 소스들을 활용한 가장 기본적인 데이터 저장과 전송을 맡고 있습니다. 분명 PopToo 가 어떻게 성장하느냐에 따라, 웹 애플리케이션의 중요도가 커질 터인데, 시간을 내어서 웹 애플리케이션 개발능력을 더 키워보고 싶습니다. 아무리 아이폰 앱 개발에 집중을 하고 싶을 지라도, 웹 개발의 기초 정도는 분명 파악을 하고 Prototype 수준으로라도 개발을 할 수 있어야, 공동 작업시 웹 개발 담당자와의 의사소통과 작업 효율을 높일 수 있을 거라 생각합니다.

Categories: Development, Personal | Tags: Career, Development
  • Peter SHINe 신동혁 (Donghyeok Shin)
    iOS Developer of fXceed, professionally working for Ensight Media, learning to use righteous technologies to serve people
    • Twitter
    • Facebook
    • LinkedIn
    • StackOverflow
    • GitHub
  • Tweets

  • Recent Posts

    • PopToo is updated to Version 1.3.1!
    • Celebrating PopToo’s First Year
    • PopToo is updated to Version 1.3.0!
    • iOS Tech Talk 2011 in Seoul
    • [Korean] About my comment on the book, ‘Real iOS Programming without Interface Builder’
    • My understanding in naming a Class with Prefix
    • PopToo is updated to Version 1.2.9!
    • PopToo is updated to Version 1.2.8 for iOS 5
    • Steve Jobs, the artist of User Experience
    • PopToo is updated to Version 1.2.7!
    • Coding while Commuting
    • Why having personal projects is critical for a software developer?
    • Started research and development using Cocos2D
    • About PopToo’s Foursquare account
    • PopToo’s one reason for performance lagging: Unreleased allocation
    • Optimizing PopToo’s performance: Found the cause which can’t be removed
    • Talented people are happy to help others using their talents
    • Renewing domain and hosting services
    • Dealing with busy situation of finalizing development
    • My thoughts on teaching English grammar in S. Korea
© fXceed. Proudly Powered by WordPress | Nest Theme by YChong