Ad

Our DNA is written in Swift
Jump

ELO Digital Office GmbH releases iPad Version

For the past several months we were busily working on no small undertaking. Our client ELO Digital Office GmbH in Stuttgart, Germany (maker of the ELO digital document management system) wanted to present a super-charged iPad client just in time for Cebit. And that’s “ELO” as in “Electronic Leitz Office”, not “Electronic Light Orchestra” the band.

So today they announce immediate availability of the dedicated iPad version of ELO. It is a free download because to really use it you need to have their ELO server software. But you can still test drive the client because there is a test server available and pre-set when you download the app so that you can try it out for yourself.

The new ELO iClient for iPad is a ground-up rewrite of the client, designed to give users of the ELO server software the best of both worlds. Digital document storage, indexing and search via their powerful server. Touch-based interaction with a beautiful user interface on the iPad as users have to come expect it from Apple devices.

Read more

Quick Batch Version Bump

On my iCatalog project I have more than 40 targets (FOURTY!), all with individual info.plist. Let me share a quick command line script that lets me simultaneously bump the software version to a different value for all targets at the same time. This has proven extremely helpful.

Read more

Podcast #27 – “Copyright Bullish”

Instapaper will soon go iOS 5-only, we learn why the Clang project was started, and Tapbots being bully-ish about Copyright.

Read more

Block Retain Loop

I was getting reports about DTCoreText having leaks. Not something I like to wake up to, to be honest. So I dived right in with Instruments and the Leaks tool. I am going to share with you something that I learned about Leaks and Blocks that might save you much trouble if you check for that first the next time you profile any app.

Read more

Threadsafe Lazy Property Initialization

I was looking for a safe way to initialize a property on individual instances of an object. “Safe” as in “thread-safe”, because nowadays you never know… with GCD it could just happen that an object is used from multiple threads concurrently.

I felt the need to chronicle the findings here one the different approaches I tried.

Read more

Podcast #26 – “iOS Dev Weekly”

Episode 26 for Saturday, February 25. “iOS Dev Weekly”

Daver Verwer lets us peek behind the scenes of the iOS Dev Weekly newsletter, Apple sold more iOS devices in 2011 than Macs every be fore. And we learn what an NSInception is.

Read more

Parsing ASN.1 for Certificates and Pleasure

When figuring out how to work with self-signed certificates and helping somebody debug an SSL problem I did a bit of research regarding the certificates being used on iOS and what functions are available to inspect these.

There are two functions provided to get more information from a SCCertificateRef , one to get a meager description, the other to get the entire certificate, encoded in ASN.1. But there you’re stuck, unless you want to mess with compiling and installing OpenSSL.

Read more

Linguan 1.0.4

This is a hot fix release addressing several issues that users found. You now have a new option to decode unicode sequences with two backslashes on loading strings files or scanning source code. Decoding and Encoding of slash escapes now uses the functions provided by genstrings2.

Read more

Podcast #25 – “Mountain Goat”

Apple releases Xcode 4.3 and previews OS X 10.8 “Mountain Lion”. And how an Open Source initiative got “sherlocked” by Apple.

Read more

Caching Caches

While doing some performance tuning on the iCatalog.framework I stumbled upon a method of about 7 statements where a single line was responsible for more than a third of all CPU time.

This basically was only getting the path to the app’s Library/Caches folder. By itself this statement looks very innocent and I had it in about a dozen places all around the app. But it turns out that if you calling it hundreds or thousands of times then the time it takes to search for the Caches (and Documents) path sums up enormously.

Interestingly it does not seem like Apple implemented any caching for them so they seem to use around the same time all the time. But these values are prime candidates for caching because they won’t change while your app is running. Also the objc function call to get a cached version of the paths is several orders of magnitude faster than determining it in the first place.

Read more