fXceed

eXceeding Abundantly!

  • Home
  • About PopToo Project
Twitter RSS
Category Archives: Academic

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

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

Started research and development using Cocos2D

Posted on 2011/08/01 by petershine
No comments

Today my employer company started research and development using Cocos2D.

For diversifying our catalog of iOS application and eventually make more profit, we began to take game development very seriously. Since none of our iOS developers have experience in this area, we selected Cocos2D as the entry framework. Probably in the future, we may venture into more serious game engine, such Unity or Unreal.

My first impression from Cocos2D is, how friendly the framework is structured for avid Cocoa Touch developers. Many of coding conventions are almost identical to that of Cocoa’s. If you have already good experience in iOS development, whole aspect of the project and its architecture, then graphical game specific elements are the only problems you should work on, based my initial observation.

The important elements of Cocos2D, Director, Scene, Layer, Sprite have its counterparts that are UIApplicationDelegate, UiViewController, UIView, and UIControl, making it easier to understand. Utilizing default structure and the objects of iOS application, you can focus mainly on graphics problems, which are the majority of game development, I believe.

We expect to save a lot of time for development using Cocos2D. As a new comer in this field, our company will make a lot of mistakes, but if those trials can be tackled rapidly, though we may not have blockbuster success for each iteration, at least we will learn a lot of game development and increase our chance to have successful result next time.

Categories: Academic, Personal

Talented people are happy to help others using their talents

Posted on 2011/06/17 by petershine
No comments

Everyone is so good at something, and asking for his help is actually easier than it seems.

When working together, however, some people feel reluctant to reach out for help, thinking it might be interfering or distracting the co-worker. And so they decide to try to solve the problems by themselves. It causes initially small problems to become bigger than when they are first appeared, making it even harder to ask for help later.

From the beginning, it was never possible for them to find the solutions on their own, since they are not prepared for certain problems at all. But people often forget that, in many areas, trying is not sufficient enough for finishing the assignments in the right ways.

For example, when you are writing in English, no matter how much you are willing, focused, and diligently browsing through dictionaries and utilizing translating tools, it’s never faster than a native English speaker can write. And the finished writing will definitely require a few number of revisions before finally becoming acceptable.

If you have a co-worker who is so good at writing in English, just ask for help as early as possible and as often as possible. Since tasks are smaller if they are requested in this way, and he is naturally prepared to use his English fluently and confidently, almost always he will happily accept the request for help.  It’s much better than bringing the big assignment with so little time before deadline, worrying if the co-worker will hate you. Likewise, similar principle can be practiced in many other areas.

Talented people are happy to help others using their talents. Their talents are meant to be used to help others. Though it’s tough and we are busy doing our own tasks, it’s critical to remind ourselves that we commute to workplaces which are essentially set up for the us workers to work together.

Categories: Academic, Personal | Tags: Career, Collaboration, Life

My thoughts on teaching English grammar in S. Korea

Posted on 2011/04/30 by petershine
No comments

Studying English grammar should be approached as trustful confirmation to what learners are discovering from actually using English everyday.

To me, the biggest mistake of many teachers in S. Korea is treating English grammar as REGULATIONS to be instructed BEFORE using English.

Without actually using English, learning CONVENTIONS or USAGES from other examples FIRST, just knowing REGULATIONS will not help you at all.

Let’s admit. We are spending TOO MUCH MONEY for English education, and yet there are still TOO MANY PEOPLE not doing well. It’s wrong.

Categories: Academic, Personal | Tags: English learning, Korea

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

[ReadWriteWeb] The Future of Search: Social Relevancy Rank by Alex Iskold

Posted on 2009/07/19 by petershine
No comments

ORIGINAL ARTICLE: http://www.readwriteweb.com/archives/future_of_search_social_relevancy_rank.php

The article talks about the importance of prioritizing search result, or stream of posts, not based on chronological order, but based on social relevancy, or social network of followers of oneself and people he or she is following.

What we are about to get is a Social Relevancy Rank. Whenever you search streams of activity, the results will be ordered not chronologically but by how relevant each is to you based on your social graph. That is, people who matter more to you will bubble up.

The author brought up improvement ideas for mainly Twitter, or also for any SNS. Main points are:

1. The result of search query, or the front loaded posts should come initially from the relations to myself. But it limits the result, because not everyone has opinion or information about the search query.

This sounds awesome, but there is a problem. “Wilco” works well as a query because the band has just released a new album, but many other queries would return no results. Simply put, your friends on Facebook and people you follow on Twitter can’t possibly have an opinion on every topic you may be interested in. This is a problem of sparse data: trusted opinions are scarce.

2. Since the trusted result from the level-one relations is limited, expanding the network to include the relations of the relations is necessary. This expansion can also be based on likeness of people even outside of the relations.

Another step could be to include people with similar tastes, so-called taste neighbors. This approach is common among vertical social networks such as Last.fm, Flixster, and Goodreads. These networks have ideas about which people, other than your friends, are like you. However, this is a costly calculation and takes time.

3. Using the number of followers as a measure, a few of the relations can be titled as opinion leaders or the influencers among the crowd. Give higher order to their opinions in the search results or the stream of posts.

In the absence of any other metric, someone who is followed by hundreds of thousands of users is likely more relevant to you than someone you don’t know at all. Using number of followers as a weight might be a good way to order the rest of the activity stream.

I think this relevancy rank can improve what Twitter, or stream based publishing systems have been good at. For their currently chronologically ordered search results of stream of posts to be more useful or more easily to be found and processed, the additional sorting mechanism based on this relevancy ranking is crucial. Depends on the level of openness of the service enabled by APIs, the application of this system may come much quicker and may be developed to become superior service than the original.

Categories: Academic, Bookmark
  • 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