While It’s Compiling is a series of interviews with experts across a range of bleeding-edge technologies and practices, exclusive to Skills Matter. Be sure to subscribe to this blog for future interviews, or follow us on Twitter.
Find out who we’ll be interviewing next, and get a chance to put your questions forward with the hashtag #whileitscompiling.
This week we spoke to Matias Piipari, CTO of Papers and co-developer of the Papers app for Mac and iOS. Matias began work at Mekentosj, an Apple Design Award and Ars Design Award winning scientific software company which became the Papers unit at Springer in an acquisition in 2012. After 6 months he also took on co-directorship of Livfe Ltd where he has taken part in developing reference management and PDF reading application Papers2 for Mac, as well as Papers for iPad.
Matias will also be talking about advanced grand central dispatch tricks at iOScon – check SkillsMatter.com for updates and tickets!
1. What drew you towards mobile platforms?
It was a combination of procrastinating very hard whilst trying to look like I was working very hard as a research scientist, and being able to program Cocoa applications in Objective-C for Mac around the time an iPhone SDK suddenly became available.
I was midway through a computational biology PhD, working on some machine learning techniques in Cambridge at the time the Android SDK and then the iPhone SDK appeared. The publicly available iPhone SDK, once it was released, drew me and a colleague (Ben Schuster-Bockler) from the research institute in pretty much right away. It really felt something big was going on in mobile computing, and it was suddenly easy to get started playing with your ideas for devices with sensors, GPS, etc.; cool things that a computer wouldn’t have. We started working on apps months after the SDK became available, first as contract work for others and then our own. Certainly by the time the iPad was introduced, it was obvious this was not a transient trend, but something you would really want to build a career in.
Meanwhile, towards the end of my PhD I had become addicted to this insanely cool Mac app called Papers for reading and citing research papers, and had met its developer Alexander Griekspoor. The ability to start using this app on my iPad was really the reason I initially bought one as soon as I could, and somehow not long after I ended up sending a feeler to work for Papers. I couldn’t believe it when I got this dream job I’m still in – that’s where mobile development fun really started for me!
2. Is there anything in particular about iOS that appeals to you?
Cocoa and associated APIs, closeness to C/C++, and great hardware to distribute your software on. Cocoa is an incredibly powerful and intuitive framework to program with. It’s just fun, in a way that I’ve not found many other languages or frameworks to be after a while of practicing it. It is not a coincidence it has stood its ground for some 25+ years since its NeXT beginnings. The topic of replacing Objective-C with a more modern language comes up with predictable frequency, but since Apple shifted over to the LLVM compiler and the new 64-bit Objective-C runtime, they have continued to show that it still has punch and that they can keep up with the times.
By closeness to C/C++, I mean that you have both easy to understand abstractions available in the Smalltalk derived Objective-C object/class and message passing style. You can also “think” in ways that are close to the machine you are targeting, and make use of the masses of open source code available in C and C++ without the kind of hassle and performance hit that can be associated with that in managed environments (try debugging manually memory managed code running inside a Java or .NET application!).
And finally, Apple of course just makes really nice to use devices that our target market – scientific researchers and students, especially in higher education – use and love. I feel really privileged to work on software which people use during their daily work, and who feel strongly enough about it to post lots of great feedback that helps us improve the product.
3. What new projects are you working on right now?
There’s a few general themes:
1) Bringing previously Mac-only features onto the iPad and iPhone versions of the app.
2) Data synchronisation and allowing our users to share their research paper libraries easily with others. We’ve built our own cross-platform SQLite3 based data synchronisation framework at Papers, which allows our users to synchronise their data between iOS devices, Macs and PC. We are seeing a lot of demand for this feature and there’s a lot of scope for extending this functionality.
3) Something which I can only describe as “Using crazy machine learning techniques inside an iOS app to make seemingly magical things.” Stay tuned!
4. Where do you see iOS in the next five years?
For us at Papers the most interesting thing about iOS as a platform is how, in terms of hardware capacity and Cocoa + the Objective-C runtime, a mobile device is getting closer and closer to what a Mac is capable of. For anyone writing software that targets both desktop and mobile devices, this means that we make less compromises when we ship the application for iOS devices than we used to when the initial iPhone and then iPad versions were made available. To make this concrete, for Papers we share almost all non-UI related code between the two platforms, and between 70-80% of the source code. This fraction we see only going up as more and more media-related CPU and memory hungry tasks become available on iOS.
I see this kind of change only going further in the next few years. Obviously touch, keyboard & mouse driven UIs dictate key differences between platforms, and both UI paradigms will stay, but for sure we’ll be seeing more and more powerful mobile devices running iOS and the convergence of iOS and OSX based frameworks from Apple, in large part being driven by the mobile end. So iOS as a platform is definitely something to stay current on!
One thing I’m quite hoping to see within five years in Apple’s development environment for iOS, or third party tools for iOS development, is support for alternative LLVM based languages. Objective-C is a pleasure to work with and definitely here to stay for that time, but there are all these interesting things going on with more functional influenced languages with LLVM compiler infrastructure and well thought out concurrency models. Things like Rust, Nimrod, and Julia definitely would have a place in many kinds of programming tasks in mobile apps too.
5. What do you wish you’d known when you’d first started out?
That there are so many obvious app ideas which have not been implemented because no-one has bothered trying seriously. Just go for it and don’t stop before it’s in the App Store.
6. If you could ask the iOS community anything, what would it be?
What means of automated testing do you use to test your iOS apps?
Matias will be talking about advanced grand central dispatch tricks at iOScon – check Skills Matter for updates and tickets!