Ad

Our DNA is written in Swift
Jump

DTLoupe – Reverse-engineering Apple’s Loupes

I am working on a CoreText-based rich text editor at the moment. That means employing two primary technologies: the UITextInput protocol as well as rendering the formatted text with CoreText. Unfortunately Apple has forgotten to add selection and loupe mechanics to UITextInput, so we have to build these ourselves if we want to get the same look&feel as the built-in stuff.

So to get the selection handling and loupe we see developers go two paths: either they distort UIWebView with fancy JavaScript or they struggle with implementing their own code. These approaches lead to a wide variety of differently looking and behaving loupes and selection mechanics. I have contacted Apple by all means available to me and I’m hoping that there will be an official method to get the selection mechanics and loupe down the road.

But until there is, I let me present an interim solution for this problem. This will be a component I call DTLoupe and it have many potential applications besides being used in an editor to select text. Like providing a magnifier in a context when pinch-to-zoom does not make sense.

Read more

Releasing release

One of the new developer APIs presented at WWDC was something called Automatic Reference Counting. This term also was on this slide visible during the Keynote, so it’s no longer a secret.

ARC might just be the single piece of technology which excited WWDC attendees the most. We cannot discuss the details of what was presented during the conference, but there is already quite a bit of public information available. Enough to get every iOS developer excited.

Read more

Gamification of Bug Reporting

I’ve been recently submitting a great deal of bug reports for iOS and OSX. I asked myself: “why does submitting these reports have to be so tedious?”

So I submitted the following as feature request for Apple’s bug reporter as Radar #9622340.

Problem: currently submitting bugs is a tedious process, browser based, non-social and you rarely feel that a bug report or feature request has made any difference.

Solution: A suggestion with the goal to make submitting bugs and feature requests more fun. More fun = better quality and more buy in from developers and users.

Read more

How to Simulate Cellular Connections on Your Mac

If you are making your application real-life-proof you will also have to deal with diminished or dropped connectivity. I already discussed how to detect the kind of connectivity your app is having at present.

But another real-life restriction stems from slower bandwidths available over cellular connections, especially if you have no 3G reception. Even Long of Scribd showed me this trick I am about to explain here. This enables you to artificially create a bottleneck on your connection so that you can test how the app behaves when only cellular bandwidth is available.

This helps you to see if your custom progress bar is showing nicely or possibly if your progressive image is indeed progressive. Also this might reveal synchronous URL loading operations that you should never ever do in production apps.

Read more

WWDC Plague

There’s an addendum to my previous WWDC Wrap Up article that might come to you as a surprise, being a first-time attendant. Sudden debilitating sickness…

If you search twitter for “WWDC Plague”, you find a great number of people who have apparently caught it. Here’s a summary of the symptoms to help you diagnose it as well as some tips to avoid it next year.

Read more

Is it safe to install iOS 5 on your everyday iPhone?

On the heels of the iOS 5 announcement I started getting a multitude of e-mails asking more or less the same thing:

I have only my everyday iPhone for developing, so usually I am careful with updating. Do you think that iOS 5 is sufficiently developed and error free to install it on your main phone?

Sorry, but actually my first reaction to this question is to laugh out loud. But – once I have regained my composure – let me give you a serious answer to this question which is probably really not meant as a joke.

Read more

WWDC 2011 Wrap-Up

The 2011 Apple’s Worldwide Developers Conferences has come to a conclusion, with the final day passing by in light speed. My eyes are burning from being tired, my legs hurt from sitting and standing in line and my brain has turned into a mushy substance. Yet I feel like I have to sum up a couple of things I learned just so that I might anchor this experience just a little bit more  deeply in my memory.

Hey you, Apple PR guy, don’t you worry about me revealing any details, this post is mostly about the emotional side of attending one of the most useful and exhilerating … pardon THE most useful and exhilarating experience that’s available to a Mac/iOS developer. This being my first such conference I think I have found a couple of strategies that might severs as a reference in future years.

Read more

On “Getting Sherlocked”

I learned a new term today, “being sherlocked”. At first I found myself slightly giggling, because we named the dog “Sherlock Holmes”. How can that be a verb?

This verb was widely used together with various app names. Instapaper? Sherlocked! Dropbox? Sherlocked! And even Apple’s competitors. Amazon/Google? Sherlocked. Doubly so.

Now I cannot stand if somebody tweets smart things without explaining them, so I looked it up. I could only find one suitable explanation. UPDATE: Actually there’s another one which implies malvolence by Apple. See bottom of article.

Read more

WWDC 2011 Keynote

When I queued in the morning at about 4 I was around number 270 in line. That landed me a seat in the back third of the largest of the conference rooms of the Moscone Center, called Presidio. Which is weird, because Steve told us that 1500 people made it into the room. But hey, I was there, great success for my first WWDC.

Let me give you a quick summary of what we saw, as all of this is public knowledge and not under NDA. For the remaining sessions I am unfortunately bound by the NDA. Also – while I was on fire tweeting like crazy – I got stopped dead by Twitter which suddenly started to tell me that I cannot tweet any more as @Cocoanetics, I should wait for a couple of hours. So I had to switch to my personal account @OliverDrobnik to finish reporting.

The big three items to be discussed had been already pre-announced: OSX Lion, iOS 5 and iCloud.

Read more

Free Range

You will often find yourself working with NSRange parameters and variables, especially when dealing with strings. I stumbled into a problem that I think is an SDK bug, that prompted me to look at the header and find out what kind of functions are provided to us for comfortably dealing with NSRange.

Read more