2017 - *
Cheese is multiplayer iOS game that uses the TrueDepth API of the iPhone X.
I'm the lead iOS developer responsible for all data models, networking, core game UI/logic
as well as custom view controller transitions and presentations.
Cheese is almost 100% Swift, only for Receipt Validation I decided to use C and Objective-C.
I also implemented the Python backend using AWS Lambda and other AWS services.
2012 - *
Short Menu consists of an iOS and macOS app. I worked on both apps by myself from 2012
to 2017, then Din Bisevac joined as lead designer and we redesigned both apps over the course
of serveral months. An interesting challenge when developing the iOS app was
implementing a custom UICollectionView that replicates the feeling & behavior of UITableView,
while allowing us to be flexible with the design and maintaining excellent Accessibility support.
The core of both apps is a shared universal framework.
2015 - *
Box Attack is a 2D iOS game. I collaborated with Michael Grizenko, who is responsible for the design.
The core of the app is implemented using SpriteKit, though we also used SceneKit to enhance the main menu.
This was the first time I worked on a game, the biggest challenge that came with this was
achieving a good performance as well as writing code that deals with an environment that is random
and changes with every game.
2013 - 2017
Share Tunes is a macOS app which provides an easy way to share your current song
from different music apps (iTunes, Spotify) on social networks. On the implementation side,
it was interesting to communicate with other apps in a sandboxed environment using the Scripting Bridge,
create a custom NSSharingService along with its UI for the app's Tumblr integration
and implement custom NSWindows.
I also experimented a lot with custom CoreImage filters when working on the main UI.
2015 - 2016
Ceceree is a macOS app that allows you to create and share app wish lists.
Its core idea is based on an iOS app I created in 2012 but never published.
Ceceree was the first project I started in Swift using Version 1.2.
It uses CoreData as persistent storage and also has a small backend that I wrote in PHP.
2014 + 2015
I was awarded WWDC Scholarhips by Apple in 2014 & 2015. Both times I created resume-like iOS apps
that showcased my projects, interests and the usage of new APIs. While the 2014 app contained lots of
custom networking wrapped in NSOperations, the 2015 app built on top of this foundation and enhanced the
UI with container view controllers for custom navigation-schemes, interactive view controller transitions
and custom presentations.
FLOPageViewController is an easy to use page view controller for macOS, similar to UIPageViewController for iOS.
It uses NSPageController under the hood, but is much simpler to use and provides customizable UI elements for navigation.
It also supports Right-to-Left languages out of the box.
FLORouter is an URL routing library for macOS.
It provides a simple and unified way to handle URL schemes in your Mac app by using a powerful block-based API.
I published an in-depth blog post
about my thought process during the development.
OperationKit is an abstract generic wrapper around Foundation’s Operation class.
This is not a finished library, but it is supposed to set a common ground for all my custom operations.
It is based on some code I wrote in 2015 which I reused over the years.
I was frustrated with the iTunes Connect app for iOS, especially because it wasn't updated for
iOS 7 for almost a year, so I took it upon myself to create an app that would allow you to
check your daily sales figures from iTunes Connect. Cheera was rejected by App Review as
an Apple ID-login was necessary to use the app. This taught me to read the App Review Guidelines
before starting with a new project.
Bolento was the third iOS app I ever worked on and also marks the first time I used CoreData.
During development I ran into some issues with the Dropbox & iCloud sync options, which caused a massive delay,
while at the same time iOS 7 was announced by Apple, which in return caused another delay as
the whole app needed to be redesigned.
In the end we never launched Bolento, though we still own the @BolentoApp Twitter handle.