Our DNA is written in Objective-C

Dr. Touch's incredible POI Weight Loss Formula

I’ve been busily hacking away on this for the past week and now I have reached the level where I can formally announce this new addition to Dr. Touch’s Parts Store.

I was approached a week ago by somebody who suggest this to be sold as an inexpensive component and I immediately was intrigued by the problem. Imagine that you have an iPhone app which displays lots of PINs in a very restricted area. Naturally shops would be very close to each other causing the resulting annotation PINs to overlap. DTClusterMaker, the new component, aims to address this problem.

Without it your screen might look like this:

After a quick optimization with DTClusterMaker this mess turns into something much ligther, much nicer to look at:

I hope that you agree that the second view would be the preferred variant. This way you can still see the name of the city in question: München (= Munich).

DTClusterMaker employs a very efficient method to spatially sort and cluster closeby POIs. In the presented demonstration app you can explode any of the purple pins into it’s original POIs. You get two different algorithms to choose from: The perfect one, that tends to slow down if you feed it hundrets of POIs. And it’s ultra-fast cousin which works by “boxing” the POIs. It’s so fast in fact, that I am thinking of letting it run multiple times with a shifted grid and then choose the output that gives me the smallest number of POIs. If you have hundreds of POIs then you won’t see a difference.

DTClusterMaker is available now for you to purchase at an introductory price of 100 Euros. It still needs a bit of work in getting the interface to your code ironed out, but as with all components your access to the SVN repository where it is being developed insures that you get all those improvements for free. Also I am depending on your requirements to figure out the most elegant way to interact with the ultimate POI weight loss formula. 🙂

Array Self-Sorting

The current Dr. Touch Part that I am working on for my store is about quickly clustering POIs if they would be too close together on a MKMapView. For this purpose I need to calculate distances between all annotation pins and add to this the distances to all newly found clusters. Currently this involves resorting the whole list of distances multiple times. So I put my thinking hat on and built this category extension for NSMutableArray to add numbers of objects in the correct place according to the specified sort order.

To cut down on search time for the insertion point I am using a “divide an conquer” approach. Split the search range in half and check if the value at this index is bigger or smaller than the one I am trying to insert. Continue to divide until the length of my search range is 0. At that point I have found the appropriate place for the insertion.

This approach means that for 1000 values/objects in the array only 10 comparisons are necessary. This is most likely way less than if you are constantly creating sorted copies of the array with one of the three standard sorting methods.

Read more

Business as Unusual

If you follow my capers then you will remember that I changed to full-time on all my iPhone-releated activities at beginning of December. Now with the turn of the century I took on two chores that I was putting off for quite some time, even though I was fully aware that their completion would be benefitial to my immediate business development.

The first was to structure and formally open my Dr. Touch’s Parts Store where I am offering professional-grade software components to spruce up your own apps. The second I just finished, it’s a page which details all the contracted apps I made in the past so that you can see the whole spectrum of apps I made in the past year.

Yesterday I set up my Drobnik KG business stationary in Billings so that I don’t have to write my invoices with Microsoft Word any more. So as of today I am announcing the full availability of the entire spectrum of my professional offerings.

Professional Services

My mission is to be a grade A iPhone Development services provider. As such these are my offerings:

  • Wholly Owned Applications – providing a steady basis for my cashflow
  • Contract Applications – experience in serious app development
  • Partnerships – exchanging knowledge and resources for part of the earnings, depending on the degree of my involvement between 20% and 50% of royalties
  • Troubleshooting, Coaching and Development Training – either in person or via screen sharing
  • Pre-Submission Inspection of your code – eliminate reasons why Apple might reject your app
  • Dr. Touch Podcast – Concise News and Commentary relevant for iPhone Developers
  • Dr. Touch’s Parts Store – Professional grade software components to spruce up your own apps
  • Project Management and Staffing of outsourced projects – if I don’t have the capacity then I know where to get it.

“Nuts and Bolts”

Personally I am especially interested in developing solutions for tricky logical scenarios. If you need something done, that falls into this “interesting” category, then you have two options with me:

  1. I can develop it exclusively for you, with you bearing the fullest extent of my development costs. Then you are the only one who can use my code in your apps.
  2. If it is a component of broader interest then you can suggest development of a Dr. Touch Part. When I am selling this component you will be able to get the resulting Part at a fraction of the total cost because development is paid for by multiple customers.


About partnering … I have 3 apps in the app store where I am sharing profits with a partner, depending on my involvement:

Having just opened for business I still have to look primarily to get a positive bottom line for each month. Therefore I cannot afford to enter into any partnerships where I am asked to develop an app for multiple weeks to maybe get a payoff after the app might (or might not) become a big hit.

The partnership model that I am most likely to be considering is that my partner fronts the development costs and gets full (or a major portion of) royalties until he has recovered his costs. From that time onward we are sharing 50:50.

Connecting People

My blog has about 500 unique visitors per day, I have over 1100 iPhone-targeted followers on twitter, my podcast so far has about 100 subscribers on iTunes. Over 600 people have donated in support for my causes to keep iPhone piracy at bay and provide a mobile way to aggregrate your sales reports.

I like to communicate and help out where possible to help the iPhone community as a whole. So if you need to get the word out about something that might interest the whole iPhone world then don’t hesitate to contact me.

iSlate Videos

It’s just 10 days before an (unconfirmed) Apple event where most of the IT world expects for Apple to announce a new form factor. I have to admit, the fascination has also gripped me and so I’ve compiled the best YouTube videos for your viewing pleasure. All interspersed with a couple of the best links where I found these things.

From still images to videos, Dean Johnson has a post Breathing Life into Apple’s Tablet

Let’s begin with a funny spoof: The iSlate if it would have been invented 2010 BC.

Read more

Featured by Apple

It is with a certain pride that I am announcing that truly was involved with the creation of an app that made it to the top. Well, at least in Austria and Germany, and at least in a category.

I’m referring to Infrared Photography which is an app that was contracted out to us by none less than Michael Görmann, professional photographer and in need of a signature app that he could hand out as a sort of business card. Via a short detour he arrived at our virtual doorstep and was promptly served a cute little app.

To put the credit where it is due and put it more precisely the programming itself was carried out by my brother-in-law whom I had the pleasure to help out here and there and generally have a mentoring eye over, when it comes to iPhone programming. He was and still is to this date an export for server-side Java, Android and Symbian. But about iPhone development I can proudly say: “He got that from me.” His name is Rene Pirringer and his company is ciqua. We are closely working together on iPhone projects.

Infrared Photography is unique in a way because it gives you an endless supply of beautiful black&white photos which where made with expensive Infrared Euqipment and by the unmatched eye of Mr. Görmann. So unique in fact that Apple approached him and asked him to put a couple more screenshots online, because they were planning to feature it. And so they did.

You could see an immediate jump in downloads, but for the most part in Germany and Austria where it was featured. It seems that those countries are served by the same iTunes team at Apple. Being featured like this glued the app to the first place like you can see here:

We are thankful for having had this chance find us and all you out there who keep downloading the app. It’s an amazing reference for us.

Dr. Touch #010 – "A New Decade"

I hope you had a good transition into this new decade. 2010 always was the future to me. Close enough to live to see it and enjoy it. Far away enough so that amazing technologies could develop. Also can you believe that it’s been already a decade since Y2K caused lots of IT projects looking for places where the dates could not handle the jump to 00. Well in any case, it’s been an amazing ride so far and we are on tenterhooks to see what Apple has in store for us in this decade or even this year.


The show notes aka my script you find after the break.
Read more

Easier Version Checking

Sometimes you may need to modify your app’s behavior depending on which OS version it’s running on. As of XCode 3.2 you can choose a different SDK to compile against than you choose for the deployment target. This allows to make an app that runs as low as 2.0, but uses all the bug fixes in the SDKs. And it forces the compiler to make dynamic links to 3.x frameworks. So you can check at run time if such a framework is available and if not present the feature that depends on it.

When working on DTAugmentedRealityController I needed to limit it’s use on devices with a magnetometer and also which run a version of iPhoneOS that’s greater than or equal to 3.1 because this is the version when Apple introduced the capability of overlaying your own view on top of an UIImagePickerController. So I needed an elegant method, I would not settle for comparing strings. That’s why I came up with this extension to UIDevice.

Read more

Augmenting Reality

Opinions differ on what constitutes “Augmented Reality”. This can generally range from sophisticated 3D graphics overlayed on a stereoscopic view of the word to simply overlaying floating icons related to a location over a live camera view. In between some also count as AR when you have a special marker in your hand which you webcam can track and inserts a small 3D model on top of it.

On the iPhone it is currently not possible to do any sophisticated motion tracking or shape recognition was you can only get live images via a backdoor which Apple recently kind of opened just a bit so that useful applications like RedLaser or uStream can make use of it. Still it seems that the consensus is that you can only use images that have no UI elements over them as the workaround does captures of the whole screen.

I figured it would be an interesting addition to my Dr. Touch’s Parts Store and so I set up to create DTAugmentedRealityController. The goal for V1.0 is to provide a view controller which you can feed icons and geo locations and the view controller would overlay said icons over live video from the iPhone’s camera.

Read more

Dr. Touch's Parts Store

UPDATE: This article was split into the announcement and the information about individual parts. The annoucement stayed in this article, but the individual parts’ description was moved to the Parts Store page.

I like to reverse-engineer stuff because I learn much from how somebody else (like Apple) solved a UI problem. Most of the solutions I am coming up with are too big for a blog article, instead they found a home on my SVN. Generally when I demo my demos the reactions are entirely positive and I get flooded with requests to license those technologies.

I am not yet entirely certain on how to best organize such an endeavor, but spontaneously I had a title for it spring up from the back of my head:  Dr. Touch’s Parts Store.

Dr. Touch being my online brand, Parts referring to the components that I build to easy integration into a multitude of projects and Store as in “show me the money”. iPhone Development is my livelyhood and passion. So as much I would like to give away all, that’s not the reality I live in. My bank does not yet accept pro bono as legal payment.

So, if you see something on this site or in my YouTube videos that you like to be able to use in your own apps, you can!

By purchasing a source-level license to any of Dr. Touch’s Parts you gain access to my Subversion Repository where I am continuing development on parts as I am fixing bugs or implementing requested features.

Here’s what I have to offer right off the bat. All these components are readily available to license. To order your access please contact me via e-mail. You will receive access and free implementation support.

Go To Parts Store page.

New Year, in Context

What’s the appropriate New Year Greeting for a Cocoa Geek? He reverse-engineers something that Apple made into saying the wishes for him:

This is what my DTMenuViewController will look like or rather already does look like. Just like the one Apple includes since iPhone OS 3.0, but with any kind of labels you like to have. And any kind of colors you like. To prove that point, I made the NEW red. NEW Year. NEW Luck.

2010 will be great, I just know it. I remember that 2010 always was “the future” for me. Cool stuff, near enough to live to see it, yet far away enough so that some technical breakthroughs could happen. Stanley Kubrik’s 2001 was “in the future” and 2010 was even further futuristic. So that’s partially what imprinted this year in the back of my head as a goal to live to see it healthy and hopefully a bit wealth and a bit wise.

2010 will also be great because I am counting on the iSlate to double my market for Cocoa-written apps practically over night, one fateful Summer 2010 day.

Now that 2010 is almost upon us, the future has arrived and in a weird sense it just feels like the present. Duh. What’s the next year we should aim to see without any local or global health disasters?

Stay tuned for what’s coming on this blog in 2010. You ain’t seen nothing yet!

Update Jan 1st: YouTube Demonstration.

Update Jan 2nd: I made a demo showing of DTCalendarController in a Tap&Hold Tableview.

Source Code for this component is available for 100 Euros. A professional invoice is available if you need it for your professional app.