The end if 2014 is literally around the corner, so I thought it would be a good idea to make a review of it from my perspective, and to consider what went right, what went wrong and what lessons can I take from it to make 2015 even better. I decided to divide it into 3 categories: successes, failures and other memorable events. Let’s start with successes:

Read more

Quadratic Master iconI am thrilled to announce that today, Quadratic Master 3.0 is launching in the App Store. It’s been a dreadful yet very fulfilling two months, and it’s great to finally launch it to the public. If you are in high school or if you do any algebraic math, this app is for you! Before I get to telling you all about the features, lets take a look at a short (46 seconds) video of the app in action. Alternatively, if you are on mobile, you might prefer viewing the App Preview right on the App Store page (here).

Quadratic Master in action. For best experience, view it in full-screen and in HD 1080p.

iTunes App Store badge

Here is a quick run down of how it can help you, accompanied by screenshots:

Read more

Yesterday, Quadratic Master 3.0 went live, for a little while. This update is completely written from scratch, and I’ve put lot of effort and energy into it to make it a seamless and delightful experience for you, the users. That’s why I am really sad about this inconvenience. If you downloaded the update yesterday, here is what you need to know. If you didn’t, you don’t have to worry. It is currently pulled from the App Store and it will come back as soon as Apple approves the update that fixes this bug.

In a nutshell

To put it bluntly: Users who owned previous version of Quadratic Master didn’t get the full version. And users who downloaded the new version and bought the full version will have to restore the purchase upon every launch.

So what should I do?

If you are a new user, you can use the free version without any problem. If you do buy the full version, it will be gone upon next launch of the app. But you should be able to retrieve it buy opening the ‘Unlock everything’ sheet and clicking on ‘Restore purchases’. Unfortunately I can’t confirm this because I don’t have the App Store version on my phone anymore. But I’m 99% sure this should work.
If you owned Quadratic Master 2.0.1 or earlier (thanks for sticking with it for so long!), don’t buy the full version. Because you should’ve got it for free, and as soon as the update with the fix is approved, you will get it for free.

Yesterday, I was able to locate the bug and fix it. I immediately submitted the fixed version to Apple, and requested an expedited review because this clearly is critical bug. Now all I can do is wait till they approve it.

About the bug

Quadratic Master 3.0 is a freemium app. I’ve put in validation of receipts to be better protected from piracy. I’ve tested it for several days, to really make sure that it works properly, and that users that owned previous (paid) version of the app will get this premium version for free. Unfortunately, there was a small bug in validation code that only propagated itself in the production version, which had a slightly altered build id due to the way iTunes Connect works. That’s why I didn’t found it during testing.

I am really sorry about this. I’ve put over 2 months into making this version great, and it brings me great sadness that the users who downloaded it yesterday didn’t get the quality that I strived for. Please be patient, as I said, the update that fixes this is waiting for Apple’s approval. If they grant me the expedited review that I asked for, it will be out probably next Monday, 12 December. If not, it might not be out before new year, because the approval times are now ridiculously long (this 3.0 version took exactly 14 days for Apple to approve).

Routie app on iPhone 6

I am excited to announce that Routie update 2.7 is now available on the App Store! It brings full compatibility with iOS 8, as well as support for the new iPhone 6 and iPhone 6 Plus. You can get it here.

The update also brings Notification Center widget that lets you:

  • view current distance and duration
  • start and stop tracking
  • quickly open Routie app

As always, if you like the update, please leave a review on the App Store. I’d also like to thank all of you who already took the time and reviewed it. The overwhelming positivity of most comments gives me great amount of motivation to keep working on Routie in the future, as well as a great joy that you, the users, appreciate the work I put into it, and the quality and polish that I’ve always strived for. THANK YOU!

Since I wasn’t awarded with WWDC scholarship this year, and because I really wanted to attend at least one iOS dev conferrence, I looked for an alternative. From what I’ve read and heard about NSSpain, it looked like a good choice. The vibe seems to be very welcoming, and the affordable tickets and closer proximity to my home city (Prague) were all things that finally made me go for it.
Read more

Routie heart rate graph and Pebble and Bluetooth monitor

Routie now has built-in heart rate monitoring support! I was reluctant at first, because I wasn’t sure if it fits into the overall vision where I want to go with Routie, but after giving it more thought and after numerous people requesting HR monitoring over time, I decided it really makes sense for Routie to fill in this gap. And I am really glad I did, because it works great and after all the testing I did, even I now take the HR monitor with me every time when I go cycling.

In plain points, heart rate monitoring in Routie 2.6 has the following features:

  • Pair with your favourite Bluetooth 4.0 heart rate monitor.
  • See current heart rate during your workout.
  • Explore interactive graph of your heart rate after workout.
  • See average and max heart rate in route details.
  • ★ Works with Pebble! See your current heart rate on your Pebble watch.

You can get the update on the App Store here. I’ve really put in a lot of effort and testing to make the whole pairing and monitoring experience a seamless one, but if you find something that’s not working as it should, please send me an email at support [at] If you like the update, please take a moment and give it a comment on the App Store, it really helps a lot!

Now, I would like to thank all the people who have been requesting the heart rate monitoring feature and those who helped me along the way. Specifically, I would like to thank Karel Brudný and Radek Šustek – your valuable suggestions, perspective and testing made it much better than it would have been otherwise!

App Previews were introduced at WWDC’14 as a new App Store feature on iOS 8 that will allow developers to include 30 seconds video showcasing their app in action, right on the App Store. I believe it’s a great way to really show off your app to your potential customers right in the moment when they are considering the purchase or download. In this tutorial, I will show you how to make those previews even better.
Read more

WWDC'13 PhotoApp extensions were introduced a couple of weeks ago during WWDC 2014 Keynote as a way to extend the reach of your app to some parts of iOS (8), for example by creating a widget that will show up in Notification Center, or a custom sharing action. It’s no doubt a huge opportunity for iOS/Mac developers, so if you have an idea for a widget/extension, I suggest you start working on it as soon as you can.

If you are a registered iOS/Mac developer, definitely watch the WWDC Sessions Creating Extensions for iOS and OS X, Part 1 and 2 here. You will have a pretty good idea of what extensions are, how do they work and what you can do with them. The first part briefly explains how you can share data between your extension and containing app using NSUserDefaults, but neglects to point out some ‘pitfalls’ that you need to avoid in order to get it working. That’s where this tutorial comes in.

Warning: as of writing this (end of June’14), the Xcode 6 beta 2 (that you need to use to build your extension) has some bugs that might cause you some annoyance, but you can generally track down and then avoid the certain actions/scenarios that make problems.

What are you going to build

We are going to build a simple Today extension (that’s the name for iOS 8 widgets in Notification Center) that shows a number that can be set from the containing app (and changes made in the app will be reflected in the widget in real time). We’ll use shared NSUserDefaults to accomplish this.

iOS 8 Today extensioniOS 8 Today extension containing app

Read more

WWDC Moscone Center

Since there is just little over a month left till this year’s Worldwide Developers Conference, I thought it would be a good idea to sit down and write a simple guide for people who are attending the conference for the first time.

You’ve wished to get there for years, you might have missed the ticket sales last year (or the years before that), but now you’ve won the ticket lottery (or student scholarship) and you just can’t wait for the whole experience. You feel like a kid before Christmas! Am I right? You also probably want to get the most out of it, and that’s where this blog post comes in.

I was lucky enough to attend the WWDC last year (more about that here), so I have some experience with it. I am aiming to include here all the tips and tricks I wish I’d known before my first “DubDub”, and I hope it will be helpful for you.

So, sit back, get a cup of coffee, make yourself comfortable and then get back over here. I’ll be waiting.

Read more

If you are in the Twitter circles of young iOS developers, you’ve probably seen at least a few videos of scholarship apps created by students that are applying for this year’s WWDC scholarship. So I thought it would be a good idea to show off my app too. I’ve tried to make it short and sweet, instead of big app with a lot of effects and tons of texts, as I don’t expect Apple reviewers to spend too much time with each individual app. But when I saw some of the others, maybe I made it too simple. Anyways, here it is:

(I am sorry for the shaking, I should probably get a tripod for the next time :P )

As you can see, there is a simple intro implemented using UIKit Dynamics with different elasticity for each letter, and then a parallax timeline with my history. What you probably didn’t notice – there is also a little effect that distorts the texts during scrolling and make the texts sharp when it stops. That’s done using an attachment behaviour, changing the anchor point in viewDidScroll, and observing center point of the attached view, where I calculate distance between the centre point and the scrollView offset, and set the textView’s shadowOffset and shadowRadius based on the difference.

If you are interested in what others did, you can take a look at this GitHub page. And if you applied for the scholarship yourself, make sure to submit yours there.

All applicants will be notified of their status by April 28, that means 10 days from now. I was lucky enough to get in last year, so fingers crossed for all the hard-working newcomers!