Hi! I'm Arek Holko. I build iOS apps for others and as an indie developer. I write mostly about iOS development. More about me.

Recent Articles

Speeding up Development Build Times With Conditional dSYM Generation

Are you a user of a 3rd party crash reporting service, like Crashlytics or HockeyApp, who wants to speed up simulator builds? I've got just the right not-so-weird trick for you today.

Read more →

Introducing EmojiTextView

I'm happy to announce the release of my newest open source project: EmojiTextView. iOS 10 came up with a bag of great features. One that I really liked was an easy way to replace text with emojis in Messages.app. That's what I tried to recreate with EmojiTextView.

Read more →

Popping into UIViewPropertyAnimator

I spent some time today tinkering with UIViewPropertyAnimator. It's a new class for performing animations in UIKit, just introduced in iOS 10. I've noticed a few things not covered in the WWDC session that I think are quite interesting.

Read more →

Concurrent Core Data, Now Easier Than Ever

Core Data has a popular opinion of being hard to use, especially in concurrent environments. Why is that the case? First, it truly is complex because it solves a hard problem. Second, until WWDC16 Apple haven't really said how to best set up the Core Data stack. There were many options, each with its own issues, that we had to choose from.

That's why I'm super happy that things get clearer in iOS 10 with the introduction of NSPersistentContainer.

Read more →

Remote Data State as an Enum

Last night I came across How Elm Slays a UI Antipattern article written by Kris Jenkins. In it the author notices that a common list-based UI can be in one of four separate states: NotAsked, Loading, Failure and Success and proceeds to model those states explicitly as a sum type.

According to Kris, this approach works well in Elm giving compile-type safety to this common source of UI confusion. Let's see if this approach will fit the stateful world of UIKit by using it for a view based on UITableView.

Read more →