Milen’s Software

History

I love creating software and I’ve been programming since the age of 14 — that’s when I got my first computer, a Pentium II 300MHz with a 15’’ CRT display. At the time, my cousin introduced me to Delphi and the first program I wrote was a password-protected clone of Notepad.

After switching to macOS in 2006, I created several macOS and iOS apps, including Monodraw, Clear for iPhone, Cloud Calendar, EventBox and CalendarBar.

I’m a proponent of interoperability through standards-based data formats and protocols.

Spark AR Studio v2 for macOS & Windows

Spark AR Studio v2, publicly announced at F8 2019, is a cross-platform rewrite of the original macOS app. The new software is written entirely in C++ and uses Qt for the UI. The software is used to create all AR effects across the suite of mobile applications created by Facebook, including Instagram, Facebook and Messenger.

As the tech lead for the Spark AR Tooling team, I was responsible for the technical execution of the rewrite.

Spark AR Studio v2 Walkthrough →

 Spark AR Studio running on macOS 10.14 Mojave

Spark AR Studio running on macOS 10.14 Mojave

Spark AR Studio for macOS

AR Studio is an AR (Augmented Reality) authoring tool announced at F8 2017. The app is used to create effects which can be submitted to the Camera Effects Platform, so they appear in the camera in Facebook for iOS and Android.

I was a founding engineer on the project and later on served as a tech lead. The app itself is written in Swift while the 3D rendering is performed by a custom, cross-platform C++ engine.

Spark AR Studio Walkthrough →

 AR Studio running on macOS 10.12 Sierra. In the screenshot, you can see an example of a Plane Tracker with a mug.

AR Studio running on macOS 10.12 Sierra. In the screenshot, you can see an example of a Plane Tracker with a mug.

Monodraw

I decided to create Monodraw after stumbling upon some very nice ASCII diagrams on StackOverflow while researching data structures for a text editor. I realised that there were no Mac apps that would allow me to easily visualise algorithms and data structures, so I decided to make one.

As part of the development process, I created my own custom text engine based on CoreText. This provided full control over the layout process (utilised by the text tool). The line sweep direction and movement can be independently adjusted, as can the text position and alignment within the enclosing container.

Monodraw also marks the first document-based app that I made, which is something I had on my todo list for a while. The canvas itself is Core Animation-based (via layer-backed views) which significantly improves performance and makes certain geometry-related operations trivial.

The shape inspector is implemented using a custom list view which I created for two reasons: firstly, I wanted each list element to be visualised by a NSViewController, rather than follow NSTableView’s approach of using plain NSViews. This design decision allowed me to decouple a lot of controller logic, so that it sits at the controller level of each element assistant, rather than having to reside in the views. Secondly, I wanted to have full control over the animations (which are display link-based).

I wrote the first line of code in December 2013 when I started to prototype the custom text view used in the app.

 Monodraw running on OS X Yosemite.

Monodraw running on OS X Yosemite.

Clear+

After Clear for iPhone and Clear for Mac were released, it was time to bring Clear to the iPad. While in development, we spent a significant amount of time experimenting with various interaction ideas while finally settling on the design that shipped.

One particular aspect that slightly delayed the public release was the refactoring required to be able to share more than 95% of the code between the iPhone and iPad apps. While it required some upfront time investment, it is the better option in the long term.

I was the sole engineer of the app from its inception up until July 2014, produced in collaboration with Realmac Software.

Clear+ Walkthrough →

 Clear+ running on the iPad Simulator. The tablet form factor allows us to display lists in a sidebar, together with a preview of the top three tasks underneath.

Clear+ running on the iPad Simulator. The tablet form factor allows us to display lists in a sidebar, together with a preview of the top three tasks underneath.

Clear for Mac

After the initial of success of Clear for iPhone, we embarked on the journey of creating Clear for Mac. Chris Emery joined me on the technical side.

The development cycle was unusually prolonged due to several setbacks — the need to create a custom sync-framework on top of iCloud (iCloud CoreData was severely broken at the time of development, so it was not an option) and the creation of an advanced animation system on OS X to provide the fluidity that we required (while running at 60fps at all times).

The app was solely engineered by Chris Emery and me (under the Helftone brand) and produced in collaboration with Realmac Software and Impending Inc. I was mainly responsible for the backend portion of the app where I worked on creating a custom OT-based sync framework on top of iCloud. Our active involvement with the development of the app ended in July 2014.

Clear for Mac Walkthrough →

 Clear for Mac brings the clean interface of the iPhone app to OS X. While it looks the same on the surface, the Mac app uses TwUI and is powered by completely custom animation system.

Clear for Mac brings the clean interface of the iPhone app to OS X. While it looks the same on the surface, the Mac app uses TwUI and is powered by completely custom animation system.

Clear for iPhone

Clear for iPhone started off as joint project with Realmac Software, with Impending Inc joining shortly afterwards. From the very beginning, our focus was to provide a clean and gesture-driven interface. Initially, the idea was to design an app to help you manage repeating duties but was changed later to a task manager. Before settling on the name, it was internally known as “Goals” and later on as “Frictionless”.

I’m the app’s co-creator and was the sole engineer from its inception up until July 2014.

Clear for iPhone Walkthrough →

 Clear’s signature interface with the default Heatmap theme. The minimalistic interface allows you to focus on your tasks and nothing else.

Clear’s signature interface with the default Heatmap theme. The minimalistic interface allows you to focus on your tasks and nothing else.

CalendarBar

At the time of conception, no apps existed which allowed you to quickly access your upcoming calendar events using a single mouse-click or keyboard press. Chris and I decided to utilise my Objective-C Google Calendar SDK which I wrote for Cloud Calendar, in addition to including support for Facebook and pulling events & tasks from iCal.

The app was co-developed with Chris Emery and graphics were designed by Christopher Downer.

CalendarBar Walkthrough →

 CalendarBar sits quietly in the menubar, allowing you to quickly access your upcoming events and tasks. You can also set a global hotkey so that you don’t have to take your hands off your keyboard.

CalendarBar sits quietly in the menubar, allowing you to quickly access your upcoming events and tasks. You can also set a global hotkey so that you don’t have to take your hands off your keyboard.

Cloud Calendar

In the summer of 2010, I started using Google Calendar but there were no good iPad clients. So I went ahead and created Cloud Calendar. One of the more time-consuming aspects was the creation of my own Google Calendar Objective-C SDK.

In addition, working on a calendar exposed me to the complexities of handling time correctly. Programmers that have never dealt with time in some depth tend to make several invalid assumptions (including myself until I stumbled upon some edge cases). For example, a calendar day is not always 24hrs — it can also be 23 or 25 hrs (on DST switchover days).

I am the sole developer of the app and the graphics were designed by Christopher Downer.

 The interface is fairly standard, with a mode selector at the top and a day picker at the bottom.

The interface is fairly standard, with a mode selector at the top and a day picker at the bottom.

Cloud Calendar Walkthrough →

EventBox

EventBox was the first social network aggregator for the Mac. The idea came about after talking to Chris about how much of a chore it was to keep refreshing so many Safari tabs and if there was a way to automate it.

As we kept refining the idea, we decided to create a standalone app to aggregate information that we could pull from various Web APIs and present it in a nice interface. As we had just finished our first year at university, we started working on it in May 2008 with the first public beta available in November 2008.

The app was co-developed with Chris Emery and graphics were designed by Na Wong. In October 2009, it was acquired by Realmac Software. I also wrote about the lessons we learned from the experience.

EventBox Walkthrough →

 The interface of EventBox consisted of a classic macOS sidebar, coupled with a NSTableView-like main interface. EventBox was one of the first apps to utilise the brand-new Core Animation technology which debuted as part of macOS 10.5 Leopard. When new content arrived from the social networks, it would animate nicely instead of just popping in like other apps behaved at the time.

The interface of EventBox consisted of a classic macOS sidebar, coupled with a NSTableView-like main interface. EventBox was one of the first apps to utilise the brand-new Core Animation technology which debuted as part of macOS 10.5 Leopard. When new content arrived from the social networks, it would animate nicely instead of just popping in like other apps behaved at the time.