portfolio

I designed, wrote and maintained this app as an independent developer. In addition to being responsible for its entire development and release cycle, I architected and maintained the server, assured the application stability before every release and provided user support.

Coder In App Store between 2013-2015 Total of 19,0k downloads

Coder is a C and C++ editor, compiler and interactive terminal for the iPad starting at iOS 5. Compilation and execution of code is performed on a virtual private server (first a local machine in my room, then a rented server) as Apple doesn't allow unsigned code to be run on iOS. The app makes the iPad - a device most suitable for consuming content - suitable for basic programming. It turns out to be a long-running project with many changes over the years: a design change from the skeuomorphic pre-IOS 7 days to the new iOS design, support for more and more features and changes between various business models.

< The code editor. The editor featured syntax colouring, automatic tab indentation and a custom keyboard. Furthermore, a web-browser can be opened in side-by-side view, a feature that is here not yet supported by iOS natively.

Because of the lack of features in iOS 5, syntax coloring was first implemented as the overlay of a web view over a text view. In the last version, it used a framework to recognize and color the syntax instead.

< Error messages. On tapping the 'build'-button, the project code is uploaded to the server where the code is compiled using the latest gcc binaries. Importing of any standard header file is supported. Any possible errors are sent back, which Coder shows at the exact line, with an appropriate error message.

Allowing the compilation and execution of code on a server poses large safety challenges. A combination of multiple sand-boxing and permission-reducing unix utilities are used to maximize security. Every session is run in its own container. The user is even allowed to edit files. After the session is closed, the container is stopped and its associated files deleted.

< Interactive terminal. On a successful compilation, a stream is opened from the app to the compilation and execution server. Input can be sent from the iPad to the server, output is sent back to the user. Users are presented an interactive terminal with input support (meaning C and C++ methods such as "scanf" and "std::cout" work), which especially sets this app apart from its competition.

Because of its stream-based nature, the terminal also doesn't wait to show the result until it is done running. In shows the output right as the program runs, useful for computationally expensive programs.

< In-app subscription purchase. Users could compile and run their code 5 times per hour for free, after registering with their email address. I have had several versions of this app online. In the first version, users could buy a one-time upgrade, in the second version unlimited compilations could be bought in the form of an automatically ending monthly subscription.

< Projects overview. Users could manage their projects in this overview screen. Opening a project happened with an animation in which the tile grew to full screen, editing the projects made the project tiles jiggle like apps do on iOS's home screen. Even when developing for developers, nice design is addictive.