Home    |    Articles    |    Talks

Array Rotation - Programming Interview Problem (II.)

Today, we’re going to focus on another famous programming interview problem - Array rotation. We start with a simple “obvious” solution and move to more optimized and interesting one afterwards.

Why did programmer quit his job?

The problem: Rotate an array of n elements to the right by k steps. For example, with n = 6 and k = 3, the array [1,2,3,4,5,6] is rotated to [4,5,6,1,2,3].

Continue reading ...>

Hamming Distance - Programming Interview Problem (I.)

This is the first post of a small series focused on common technical interview challenges. You can find a lot of articles and StackOverflow answers on the similar topic. However, I would like to focus on a Swift-first approach and detailed explanation. Fore the sake of curiosity, I will also show an Objective-C version of the final algorithm. I’m going to use problems from the awesome website LeetCode. So let’s start!

Hamming distance - 3 bits (Image source: Wikipedia)

The problem: Given two integers x and y, calculate the Hamming distance. The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Continue reading ...>

Testing Gesture Recognizers

Testing code that interacts with UIKit is a pain. UIKit is full of hidden states and dependencies, so you soon end up fighting the framework and trying to bend it the least hackiest way possible. Because it’s always easier to blame someone else, the test-unfriendly environment that Apple has built for us could be one of the reasons why iOS developers are still not yet such passionate unit testers.

I find your lack of unit tests disturbing

I was recently searching for a way of how to easily test the interaction between UIViewController and UIPanGestureRecognizer. It was easier than I thought! In fact, I ended up very surprised by the readability and brevity of the final code.

Continue reading ...>

Simple Custom Array Implementation -- vol.2

Two weeks ago, I wrote about my attempt to implement a very simple Array-like structure during a two hours flight without an Internet connection. I had to use NSData as the underlying storage, because I had no experience working with UnsafeMutablePointers in Swift, and I wasn’t able to figure it out without Google.

I will not accept that

Of course, I wasn’t happy with the result! So I tried to implement it again. This time with an Internet connection and proper manual memory management.

Continue reading ...>

Offline coding challenge - Array-like struct

I visited Moscow last weekend with my girlfriend. This was my first trip to Russia, and it was a really interesting experience. Especially our visit to the Museum of Cosmonautics, which I’m a big fan of. Anyway, I decided to spend the time on the plane back to Prague by learning and relearning some basics in computer science – data structures and algorithms.

While reading about arrays, I remembered one article I read a while back about Swift Array implementation (this one). I was offline on the plane, and I couldn’t read the article. I had two hours left of the flight and no Internet connection, so I decided to try to implement it by myself.

Challenge accepted!

Continue reading ...>

Another world of Notifications - Darwin Notifications

As an iOS developer, you are probably familiar with the concept of notifications and the way it’s represented by NSNotification and NSNotificationCenter in CocoaTouch. These objects are part of the Foundation framework. Because Foundation is built on top of the CoreFoundation framework, it’s not surprising that there is a CF “version” of NSNotificationCenter called CFNotificationCenter. It can be super fun to use it, because it offers you some cool additional functionality.

Darvin approved!

Continue reading ...>

Playing with properties - 3 facts I didn't know

I experienced a very interesting bug in our code last week. Our unit tests from time to time froze. It only happened when we ran some of our test groups separately. When we ran the full test set, everything was OK. We have a lot of untestable legacy code in the project – singletons, missing dependency injections, weird code coupling.

Help me StackOverflow ...

Continue reading ...>

Flaky iOS System Location - There and Back again

A very strange thing started happening in our office over the last few weeks. Several iPhones during the day randomly traveled to London and back to Prague. At least, that’s what the system location info was saying.

London or Prague? London or Prague?

Continue reading ...>