Our DNA is written in Objective-C

Let’s Bounce!

You probably have seen it hundreds of times, it’s become so natural to you that you probably don’t consciously notice it any more. I’m speaking of the bouncing of icons on the dock in OS X. The method how those pesky little critters (aka “Icons”) try to win your attention. Me! Me! ME!

This animation is probably the one you see the most in your day-to-day business working on code on a Mac. Yet I have never seen anybody using it in an iOS app. Why? It’s not that this animation is the sort of Clippy that everybody hopes to forget about some day. It’s something that well established and we know what it means.

When I asked around (on Twitter) and looked around (on Google) was only found a couple of “spring loaded” formulas, but nothing concrete that would enable me to get this animation added to my app. So I researched it and now I’m happy to present to you … 3 Methods of bouncing.

Read more

Twitter Curator Demo

I get so fed up with how YouTube mangles the screen recordings of QuickTime that I purchased Screenflow. I wanted to show off my specialized Twitter search tool that I’m working on besides of my regular projects. A “Hobby” if you will.

I would very much appreciate if you would take a few minutes to watch it and then let me hear your thoughts. If you have some ideas for improvements then don’t hesitate to let me know.

Read more

Linguan 1.1

Linguan 1.1 brings the long-awaited support for localizing XIB files. While it has proven a boon for iOS developers where you generally can easily set the UI strings from code, Mac developers where left in the rain because there you typically have way more strings in the XIB files making it impractical to localize everything in code.

For the immediate first version we are remote-controlling ibtool which needs to be installed with the Xcode Commanline Tools and the path properly set up.

sudo /usr/bin/xcode-select /Applications/Xcode.app/Contents/Developer

… or wherever your Xcode.app is installed.

Read more

DTCoreText: Custom List Prefixes

A while ago Austrian development company Antiloop approached me. They needed to have custom list prefixes in DTCoreText as the default bullets didn’t cut it for their purpose. They had sponsored new features for DTCoreText in the past, a shining example of a company that is willing to invest in the Open Source technologies they use.

There is no provision in CSS to achieve this directly, but a well known workaround exists using the li:before pseudo-selector together with a content attribute and list-style:none. This omits the list prefix, but substitutes the contents of content.

To get the unicode double chevrons right (U+00BB) you would specify this style:

ul {list-style-type:none;}
li:before {content:"\00bb ";}

Note the use of the non-standard -webkit-padding-start which specifies the left padding for lists in Safari. The content attribute apparently is containing unicode sequences with a single back slash.

Read more

Radar: NSFetchedResultsController does not get refreshed for added relationship

This was quite a head-scratcher for me today. So I documented it as a Radar (rdar://11541277) because it just feels wrong to me. If there are reasons for this behavior I was unable to find them documented.

Please let me know via Twitter or in the comments if you have a good reason for this or know of any documentation related to this.

Read more

iWoman 2.0.7

This is yet another maintenance release aiming to fix some time zone problems users were having.


  • Fixed a bug that could lead to an incorrect cycle date showing on the wheel view
  • Changed: No both the Wheel View and the Calendar View go to Today when resuming from background

The first hopefully is the last bug fix related to the time zones. Internally all dates are now absolute. That means they won’t change if you travel to somewhere that has a different time zone than where you are usual at.

The second item was much requested because it would save the user from having to tap the Today button upon returning to the app from background.

Update June 1st: the update was approved and is now on the app store.

Twitter.framework Tutorial

I have this idea for an app that I would totally use myself. You know I started XcodeJobs.com and the @XcodeJobs twitter feed to go with it to have a channel to retweet all the iOS-related job offerings that flow before my very eyes. For the site I’ve been talking to people to create a login for themselves and post their jobs self-servingly. For the twitter feed I’ve been using the Twitter search features with a variety of search terms to find tweets where company owners of the developers themselves are tweeting about job postings.

Now the reality of the matter is that most of all Tweets are from recruiters, agencies, job sites and other kinds of services that a self-respecting iOS developer does not want anything to do with. So right now I’m manually filtering tweets. There are a variety of criteria that I want to be able to combine to end up at the real good retweet-worthy tweets.

Read more

Weird ARC error And The Invisible Header

There’s a bug – it seems – in Xcode 4.3.2 that was causing an issue with my DTBannerManager component. I’m documenting the workaround here and how to recognize that you are experiencing the bug.

Read more

Podcast #36 – “Google Currents”

Episode 36, recorded Sunday May 6th, 2012

In this episode my special guest is Will Kiefer. He is the Senior iOS Engineer in charge of Google Currents. Will tells us why UIWebView isn’t all that bad and has some amazing performance tips for us with which to tame it. You should make lots of notes and you will feel like you visited a lab at WWDC and had your brain supercharged.


Read more

GCD, ARC, Blocks – Oh How Simple!

I’m “totally” migrating my iCatalog framework project to ARC, GCD and blocks and I’d like to share with you some of the revelations that the use of these modern technologies brings with them.

Here are two examples of the kind of simplifications you will see if you do the same. This approach is compatible with iOS 4.0 and above.

Read more