Ad

Our DNA is written in Swift
Jump

Category Archive for ‘Administrative’ rss

Fast Hashing

In DTCoreText there is the DTCoreTextParagraphStyle class which represents an Objective-C wrapper around CTParagraphStyle. This has a method createCTParagraphStyle which creates the actual Core Text object to put in attributes of an NSAttributedString. It also knows how to create an NSParagraphStyle, but since this only exists from iOS 6 upwards and lacks a few features we’re still using the Core Text variant everywhere.

Due to the way how DTCoreText works I need to createCTParagraphStyle whenever I am constructing a sub string of the generated attributed string. This led to an unnecessarily large amount of CTParagraphStyle instances being created. So I had implemented a method long time ago to cache thusly created CoreText objects based on the ivars.

Though this was causing some problems in DTRichTextEditor and so I yanked the caching back out. Now the project has developed much further and so I felt I would want to give the caching another go. Here’s something interesting I learned.

Read more

iPhone 5 Image Decompression Benchmarked

One of the first lucky owners of the iPhone 5, David Smith, kindly ran my Image Decompression Benchmark on the latest 3 generations of iPhone. These benchmarks measure the time it takes for an image to get from disk to screen and encompass 5 resolutions, PNG crushed and uncrushed, as well as 10 compression levels of JPEG. Christian Pfandler prepared the charts for us.

We like to repeat the same benchmarks on every new CPU that Apple likes to solder into their devices, you can read past analyses iPhone 3G through iPad 2,  iPad 3. One note of caution if you want to compare these to the results in this article, we changed the methodology of logging the times from NSLog to CFAbsoluteTime. NSLog itself takes up to 50 ms per logged statement. The new method is more exact and does not have this drawback of including the logging time in the measurements.

Executive Summary: the iPhone 5 can indeed be claimed to be twice as the predecessor.

Read more

Component Shuffling

I made some updates recently that I wanted to mention so as to minimize some surprises. Also there are some  changes that were prompted by iOS 6 being released.

Read more

Out of Office

We’re offline for “maintenance” until August 2nd with no way to receive emails or respond to your requests and orders. We mention this so that you know why you won’t hear from us until then. We haven’t forgotten about you, we’ve just remembered about ourselves.

So please be patient while we’re recharging.

The Going Ons

Let me briefly summarize what’s going on in my iOS life at the moment and where you come in (if you like).

My business revolves around several pillars which I established over the course of the past 2 years. My main income comes from 2 big contracts, one for developing for ELO Digital Office in Germany, one from a development partnership with International Color Services in Arizona. The former is about developing iPhone and iPad clients for their digital document archive. The latter is iCatalog.

Now I am quite lucky to have won over my brother-in-law who happens to be an excellent developer with a background in Java and Android to work exclusively on these contracts. Right now he focusses on the iPad version of ELO.

Read more

Back … and Many News

I spent last week at several beaches in Corsica and when I came back I figured I would want to prolong the silence of not reading e-mails for one more day. And how peaceful that felt, I can only recommend that. Instead I spent Monday in my hammock an continued reading a Clive Cussler novel.

When I returned to my office on Tuesday I found more than 270 unread e-mails in my inbox. It took me around 4 hours to comb through these with a jackhammer and to trim it down to like a dozen or so that I will have to act upon.

Read more

We’ll be back soon

Seems like everybody is taking some time off in August. So we booked a last-minute vacation as well. There will be no e-mail checking until we get back, so please be patient with your requests and wishes.

We’ll be back at your service on August 23rd.

Cocoanetics now with Proper SSL Certificate

Last week I finally gave in and shelled out for a wildcard SSL certificate for *.cocoanetics.com. This means that any address you have been using on this domain via HTTPS has been changed.

Previously you where using a self-signed certificate  which cause several problems, amongst those that you could not directly set up my Subversion repos you have access to in Xcode because you needed to first permanently accept the certificate even though it could not be verified. So you had to do the first checkout in terminal. Once accepted it would work in Xcode too.

Read more

We’ll be back soon.

After working full throttle on the scribd app and struggling to keep two more deadlines the past few weeks where really taking their toll. So today begins a week of downtime for me. We – that’s me, my wife and our dog – have rented an apartment and I had to promise not to bring any devices…. except the iPhone.

“Honey, what if we get lost? I need the maps app to steer us back to civilization!”

You get the picture. 🙂 See you on the other side.

CoreText Loading Performance

Somebody people told me that some function in my NSAttributedStrings+HTML would take forever but whenever I tested it, I could not see anything wrong. Then Stuart Carnie was able to send a snippet of code that, when pasted into appDidFinishLaunching, would exhibit the same problem, duplicatable.

I was stumped at first. How could I have missed it? But at second glance Stuart did not reference any of my classes, but was only using standard SDK calls. Yet, those are almost identical to what I had wrapped into DTCoreTextFontDescriptor, my Objective-C wrapper.

Then it dawned on me: this might be a lazy loading problem. Or maybe even a bug in CoreText.framework.

Read more