We're hiring!

Openings at Monolith

Business Dev expert to take us to the next level

We’ve made apps for GM, Top Hat, and kik. We build stunning apps - from UX through to regulatory. We have a small team of brilliant individuals who consistently deliver excellence and delight our customers. These days, about 2/3rds of our work is in medical and healthcare.

You are people obsessed. You want to get inside markets, network, talk to prospective and existing clients, make people happy they work with us, and desire to if they don’t. You’re a fantastic communicator in person, on the whiteboard, presentations. You have a need to understand product-market fit. You want to work in a startup environment, and want to help us put awesome products into the hands of real people.

Our goal isn’t just to make awesome products, it’s to make awesome customers. And to achieve our dreams in the process. Are you in?

Software Developer

Our iOS development is expanding and we need more developers! We have almost 5 years experience developing on iOS, and a full decade with mobile apps—native, not web. We’ve created multiple apps for mobile health for companies like Unitron and UHC, real-time chat apps for Kik and Jingu, interfacing with automotive data buses for realtime dashboard displays for GM, music apps, audio apps, geolocation apps, visualization apps, pretty much anything you can imagine.

About Us:
  • Bootstrapped — we don’t take money from VCs so we’re not beholden to outside interests. We chart our own path.
  • Real — we don’t have a bouncy castle in our office, but we have a nice office, nice people and treat ourselves well.
  • Artisans — source code quality matters. Interfaces must be simple and beautiful. No compromises.

Go to our home page to view our 90 second app demo reel.

You Must:
  • Know C or C++, pointers, object and object-relational patterns already
  • Know how to ship code that works well
  • Be ready to learn the iOS SDK fast

We don’t rely on marks and résumés alone, you’ll need to prove you can code in the interview and in fact, we’re looking for some code along with your application.

Demonstrate your qualifications by answering 2 out of these 3 potentially tricky questions:

Question 1 (C Pointers)

Here is some slightly odd C code, but it will produce an (int) result, provided that you make some small changes in order to make it compile. What is the result going to be, and why?

int * a = 1990; 
int result = &5[a]; 
Question 2 (Graphics)

Give us pseudocode to animate a 3D image carousel into a 2D graphics view/layer. We’re looking mainly for the math and how you handle animation here. Don’t worry about the details of blitting an image to the screen. To get an idea of how it should look, see the image here: https://drupal.org/project/viewscarousel3d

You have the following variables provided to you:

Image[] images // there will be 3 images, and they will all be square
view // structure with view.width and view.height of the view you're drawing into
// top left is (0,0)

Implement a draw() method (in pseudocode) that will be called 30 times a second. You are required to draw a rotating carousel so that the images will complete a full rotation in 10 seconds.

Question 3 (C++ Objects)

The C++ program below has just 2 compile time errors, 1 runtime error, and there is 1 single line missing. Send us a fixed version that compiles and runs correctly. The errors will test your knowledge of object use and management in C++, and the missing line will test you on abstract/virtual inheritance.

That’s it. - Include your answers with your job application and/or send them to info@monolithinteractive.com. - Also include some source code that you have written, whether it’s open source, for assignments, for fun, or whatever.


//// File: futurama.cpp ////
#include <iostream>

class Drinker {
public: Drinker(); void drink( int potency ); int _numberOfDrinksSoFar;
private: virtual int cantDrinkAnyMoreThan() = 0;
}; Drinker::Drinker() { _numberOfDrinksSoFar = 0; }
class Robot : public Drinker { int cantDrinkAnyMoreThan() { return INT_MAX; } };
class Human : public Drinker {
void Drinker::drink( int potency ) {
  _numberOfDrinksSoFar += potency;
  if( _numberOfDrinksSoFar > cantDrinkAnyMoreThan() ) { std::cout << "I'm all done." << endl; }

int main (int argc, char * const argv[]) {
  int beer = 5, coffee = 3;
  Human fry;
  Robot * bender;
  for( int i=0; i<6283; i++ ) { bender.drink(beer); }
  for( int i=0; i<100; i++ ) { fry.drink(coffee); }
  std::cout << "Bender: " << bender->_numberOfDrinksSoFar << "  Fry: " << fry._numberOfDrinksSoFar << std::endl;
  return 0;