Our DNA is written in Objective-C

May the 4S be With You

Apple CEO Tim Cook gathered a handful of select journalists into the so-called “Townhall” room at the Apple HQ in Cupertino. Interest in this event had reached a fever pitch with most of the world expecting a new iPhone to be launched, “iPhone 5”.

It so turns out that there WILL be a new iPhone, but as if to mock the pundits it is not called number 5, but 4s. But first – while everybody started getting nervous – Cook and team told us how well Apple is doing.

Let’s review the important announcements.

Read more

Getting Ready for the iOS 5 Launch

With the iOS 5 looming there are a couple of items that you will need to look at to have your apps ready for the public availability of iCloud and the OS. Let us review.

Read more

Avoiding Image Decompression Sickness

When starting to work on our iCatalog.framework I stumbled upon an annoying problem, the same that you will face if you ever need to work with large images. “Large” meaning of a resolution sufficient to cover the entire screen of an iPad or potentially double that (horizontally and vertically) when dealing with Retina Resolution on a future iPad.

Imagine you have a UIScrollView that displays UIImageViews for the individual pages of a catalog or magazine style app. As soon as even one pixel of the following page comes on screen you instantiate (or reuse) a UIImageView and pop it into the scroll view’s content area. That works quite well in Simulator, but when you test this on the device you find that every time you try to page to the next page, there is a noticeable delay. This delay results from the fact that images need to be decompressed from their file incarnation to be rendered on screen. Unfortunately UIImage does this decompression at the very latest possible moment, i.e. when it is to be displayed.

Since adding a new view to the view hierarchy has to occur on the main thread, so does the decompression and subsequent rendering of the image on screen. This is where this annoying stutter or pause is stemming from. You can see the same on app store apps where scrolling through something stutters whenever a new image appears on screen.

Read more

One more Speculation

Much will be clearer to us on October 4th, but let us pause a moment and wildly speculate about what’s happening behind the scenes.

Amazon revealed their new touch-enabled Kindles as well as an Android-based 7″ tabled, called the “Fire”. Steve Jobs personally always poo-poo’ed the notion of anything smaller than the iPad form factor, the new device is generally seen to be a frontend to the “Amazon Cloud”, that is the heaven Amazon.com will be in when users let themselves be locked into the Amazon ecosystem versus the iTunes one.

Read more

Perfect Diversion for iPilots: AR.Drone

When the online Apple Store started to carry the AR.Drone that was one of the quickest orders I ever made. Hey, it’s just $300 and as an iOS developer you can expense it touting that you plan to write your own remote control app for it given that is has an iOS API. Or so goes the reasoning. We need some bit of reasoning to offset the otherwise awesomely emotional purchase, right? (Also available on Amazon.com)

I did not dare to do an unboxing video as I usually do with iToys because I figured I needed to learn to fly this thing first or otherwise that might be quite embarrassing to watch. Several weeks have passed now and I never got around to documenting my experiences I made. Until now.

So let me summarize all you need to know if you are considering getting one of these flying pieces of amazing engineering as a creative diversion next to your programming workdays.

Read more

Learning from the Best: Calvin Carter

Mixergy.com had Calvin Carter, founder of Bottle Rocket Apps, for an interview that gives a great insight what made Bottle Rocket the force they are today. Carter candidly shares several amazing points that can help you improve your business as well.

Let me share my notes with you, in case you don’t have an hour to watch the interview in it’s entirety. A transcript is also available.

Read more

Code for Compliments

Chris asked:

Tried all week to get iAds & AdMod into same app. Your DTBannerManager be perfect. Im broke 🙁 do you have a lay away plan 🙂

You are in luck! At the moment I am trying to grow my audience (for both my blog and my products) and to do so I am also willing to enter into cooperations that involve exchanging advertisement for code.

Read more

The Season of Component Stores

My wife took my Air and so for a moment I thought I could not write this blog post without going to the office. But I turns out that a reader had donated an Apple Wireless Keyboard that was unused so far. So I only had link that to my iPad 2.

I’ve been selling component code for many months now and so it somewhat irritates me when Verious comes out of the closet claiming to be the “first market place for mobile app components”. I was about to ignore that until today – on Flipboard – I read another such announcement: Appcelerator unveils – yet another – “open marketplace to unlock mobile innovation”.

Both statements are misleading and – as somebody on Twitter put it – these companies are just trying to cash in with the iOS craze. And there are more. Let me share my thoughts.

Read more

Taming HTML Parsing with libxml (1)

For the NSAttributedString+HTML Open Source project I chose to implement parsing of HTML with a set of NSScanner category methods. The resulting code is relatively easy to understand but has a couple of annoying drawbacks. You have to duplicate the NSData and convert it into an NSString effectively doubling the amount of memory needed. Then while parsing I am building an adhoc tree of DTHTMLElement instances adding yet another copy of the document in RAM.

When parsing HTML – and by extension XML – you have two kinds of operating mode available: you can have the Sequential Access Method (SAX) where walking through the document triggers events on the individual pieces of it. The second method is to build a tree of nodes, a Document Object Model (DOM). NSScanner lends itself to SAX, but in this case it is less than ideal because for CSS inheritance some sort of hierarchy is necessary to walk up on.

In this post we will begin to explore the industry-standard libxml library and see how we can thinly wrap it in Objective-C that it plays nicely with our code.

Read more

Finally an Authorized Steve Jobs Biography

UPDATE: The release date has been bumped by one month! October 24th.

There have been many attempts at chronicling the life of Mr. Steve Jobs the person who once founded and once saved our favorite company. Now the wait is almost over for the book that tells it all … or so we hope. On November 21st the official biography will be “launched”, a must-buy for every true Apple fan.

The first and so far only true glimpse into Steve’s history you might have gotten from his famous Stanford Commencement Address. Being adopted under the condition that he attended college, only to drop out soon thereafter but sticking around to attend calligraphy classes. Of the two Steves he always was more the business minded, we are on tenterhooks to now learn how he really ticks.

One cannot but wonder if this Biography was not as carefully architected as Steve’s exit from the Apple limelight. Soon we will know.

Read more