[Security Now] iOS Security by Steve Gibson

Whenever I listen to @SGgrc‘s GREAT lecture, it’s hard to stay unimpressed.

Advertisement

[Hollywood Ending] LIFE AFTER PI (Official)

Harsh reality. If we can’t start being paid for how we worked, we’ll only be able to work for how it’ll be paid. How much creativity can we get from this? Having almost identical problem in software development, I cried watching this video.

“Life After Pi” is a short documentary about Rhythm & Hues Studios, the L.A. based Visual Effects company that won an Academy Award for its groundbreaking work on “Life of Pi”– just two weeks after declaring bankruptcy. The film explores rapidly changing forces impacting the global VFX community, and the Film Industry as a whole.

This is only the first chapter of an upcoming feature-length documentary “Hollywood Ending,” that delves into the larger, complex challenges facing the US Film Industry and the many professionals working within it, whose fates and livelihood are intertwined.

http://www.hollywoodendingmovie.com/

My father joined 30 year old Mac family

It has been about a month for my father switched his computer from Windows environment to Mac’s. Knowing he would never be encouraged to do it by himself, somehow it’s been forced by me, disguised as presenting him a gift of Macbook Air 13″. Many of us were growing up with computers as joyfully given gifts from our parents, and reciprocating their love with same joy was one of my recent happy memory.

Macbook Air for my father

Like so many of his age group in Korea, my father couldn’t have a right opportunity to get acquainted with modern digital technologies. Also for being a white-collar government official who had to deal more with political or human issues, he couldn’t have enough time to train his hand to type effectively on a keyboard, to learn about how to exercise his ownership over his machine.

After his retirement, occasionally he had to learn more about how to control his computer in a different level. He had to learn how to type a document, save it as a file, send it via email, sync his iPhone, etc. What mostly had been helped by his secretary whom he had when he held his office in the government, should be handled by himself nowadays. It has not been too bad to do normal activities under normal circumstances.

But what could he do when bad things happen? Should he keep purchasing virus cleaners? How could he fix the situations like losing his important files? And unfortunately, it did happen to him. Being forced to take an effort to free his Windows from malware grasp, he had to erase the system, losing his files.

Anyone may encounter bad situation like this from any types of computers. But I can’t still accept that such defeat had to happen like this easily. And why is it always Windows? Being a professional with conviction, being his son, I had to rescue my father from Windows hell.

So far his conversion experienced almost no difficulty. Once realized his web-based activities are not changed at all, he felt enough confidence in using Mac. As expected, system-based activities like finding a file or deleting an application were much easier to learn than Windows. There is one challenge caused by being a user of Korean banking systems, which requires Windows’ Internet Explorer with ActiveX. By helping him to acquainted with virtualization application like Parallels, my father were able to use Windows inside Mac only for a limited time.

Though my goal to free him from Windows had to be compromised, minimizing his exposure to dangerous world could be suffice at least for a while. After all, my father were never more happier to have truly his own computer which makes him proud. My father began to understand why it means to be like owning a BMW, when you own a Mac.

Being a Mac user for five years myself, I couldn’t help but to believe that if anyone has to choose a system for his or her digital livelihood, it should be Mac for safer and less irritating experiences. Maybe I’m a little biased, but I think it’s quite difficult to judge millions of happy users for 30 years to be wrong.

Don’t punish Yourself

It’s given as a PUNISHMENT to a student to write sentences REPEATEDLY on a blackboard.

If you are not careful, it’s quite easy to REPEATEDLY paste copies of identical code snippets. Not using iterative methodologies and not trying to find algorithmic solutions, is like let yourself to be in the state of uncomfortable incompetency, which is a PUNISHMENT.

Sensitive Programmer

As a learner of programming, you may feel stressed and uncomfortable, trying your best to maintain control over the machine, not to be controlled by it.

There are too little time to complete the assignment. Your mind is not clear enough to come up with the best structure of different classes. Inheritance, polymorphism, DRY, MVC and all other essential concepts about quality programming are just ideas without visible lines of codes.

Even if you could finish your work on time, it’s quite painful to see resultant chaos in your own codes. You don’t like your own work, knowing every line in it. And this is a good thing.

Being sensitive enough to realize inefficiency and incompetency in your own work, even if no one criticize it, is a great attitude, especially if you are a beginner. Congratulation! Make sure to keep it as sensitive and sincere like that.

Until you become a true master of programming, who can bring undeniable great architectural solution without taking too much time and resources, please don’t try to avoid or ease the pain for producing quality result.

It’s necessary to feel the inefficiency of scattered snippets within your codes. You need to experience the frustration of attempting to change a small thing, repeatedly about thousand times. After experiencing this, you will never forget the critical importance of DRY principles and will force yourself to learn how to use global variables and methods, apply proper hierarchical relationship among classes. Soon, it will become natural to you as you become a better programmer.

However, it you let yourself to be insensitive to pain while programming; e.g. listening to music or copying & pasting mindlessly; you will lose the opportunity to see the need to improve. Simply for the sake of finishing the work as soon as possible, you will just pass by the situation which may teach you very important principles.

Such insensitivity will bite you back, as you maintain the chaotic structure, slavishly patching the effects without fixing the causes. And finally, you will give up, unless you can start all over again.

Avoiding Difficult Errors

The errors do happen. It’s impossible to write error-free lines of code at first.

If it has to happen, then I would like it to be easily searchable, and have been happened to others, and publicly documented, preferably with right solutions.

Often errors are caused by attempting to do something new after learning about changes in methods, or when adopting external source codes.

However, the difficulty in fixing the errors may be eased, if your new attempts are based on rigorously reviewed official documents, or widely used & time-tested open sources. Unless, you were doing extremely strange stuff, most of the errors you will encounter usually already had happened to others, and fortunately solved and documented for you.

Or, if your error is absolutely new one, you have the right (or responsibility) to expose it and ask for attention from others. Because the error is caused by your attempts based on the official documents, there is no way fellow developers who read the same documents to ignore the situation. It does matter to them. And they will join you to fix the problem, making the process relatively easier than doing it alone.

If what makes fixing the errors difficult is because they are strange to you, and you have to do it by yourself, improving the condition of the root causes can help you avoid the difficult errors.

Can App PREview Process be helpful?

Recently, our team has submitted an iOS app to the App Store to be reviewed.

Unfortunately, due to Apple’s own policy, this app was rejected and we couldn’t release it.

Personally, I have known this would happen. What this app tried to do was something questionable, at least in its intention, even if there is no technical violation.

Our team’s strategy was very simple. If Apple didn’t publish anything against about what this app tried to do, we could challenge Apple to accept the end product. If Apple didn’t say NO publicly, we should try it. That was the argument of the team leader.

However, Apple’s decision after reviewing was solid and there is no way we can reclaim time we spent to develop this app. The only comfort we could get was that Apple’s reviewer himself also felt sorry for us, recognizing it’s not a technical violation but just a political issue.

I just wish we could have known about Apple’s policy on this long before designing and developing the app. At least for me, if I could present public documentation about this matter, maybe I could persuade the team leader not to waste our time.

Or, it could be so much better if there are people in Apple’s side, who may answer our questions, BEFORE we start designing & developing something. I wonder if it’s helpful to have PREview team, like REview team.

Of course, there are a lot of instructive materials, teaching us what should we consider when developing an iOS app. But I just wish there is an actual Apple Genius whom we can talk to about very special and rare idea of ours, we just can’t help but to try out.

It’s just wishful thinking of mine.

Learning to Adopt Concurrency with Confidence

Recently, I have been enjoying the opportunity to practice implementing concurrency in my software engineering.

Following iOS’s own concurrency programming guidelines, I could develop some confidence in designing the workflow from the initial stage to achieve optimal performance.

By separating works into two types; for UI & not for UI; I have been able to keep queues of operations to be as simple as possible. Also, due to obvious convenience of using Block programming with iOS SDK, I could be able to actually see where asynchronous queues branched out, and merged back, right within the scopes of codes.

Being able to keep tracks of these operations was quite exciting for me, since I used to have great fear in adopting concurrency. But the real issue I have to fear should have been lack of real performance and difficulty in seeing the workflows among the objects.

Fortunately, learning more about the convenience of using NSOperationQueue and the basic criteria for deciding when to branch out and when to merge back, which is; “Are these operations for UI or not?”, I could see what’s actually going on much clearer than ever.

It has been a good case for me to realize it’s not enough to memorize the list of methods, but often it’s more important to know when and where to use them appropriately.

Celebrating PopToo’s First Year

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!

%d bloggers like this: