Björk was told that porting her app Biophilia to Android would take eight programmers, five months, and £375,000. After a canceled Kickstarter attempt, she discovered the company I co-founded, Apportable, and used our platform to launch Biophilia on Android today for a fraction of the time and cost. Our software automatically converts iOS apps to Android by cross-compiling Objective-C to Android native code.

The Wall Street Journal has the full story.

"The Apportable team assured me they're not using black magic. I still don't believe them," said investor Alexis Ohanian, co-founder of reddit.

But it's real! Ask me anything about Apportable’s technology! You can find the basics in our latest blog post.

I’ll be answering questions until 8:30pm PST.

Proof: https://twitter.com/apportable/statuses/357665794244620288

Comments: 298 • Responses: 50  • Date: 

kn0thing96 karma

Seriously, how the hell do you do it?

collinjackson75 karma

Fine, you win. Black magic.

kn0thing53 karma

Just how long have you been building the tech, err, collecting the components and learning the incantations?

collinjackson42 karma

I could tell you, but then I'd have to hex you.

sugaaloop18 karma

pretty gutsy, two sarcastic answers in a row to a genuinely interested co-founder

CameronNemo25 karma

Alexis Ohanian is an investor in Apportable.

collinjackson24 karma

It's true. Here's a more serious answer (from the blog post).

Instead of translating the app to Java, Apportable cross-compiles the Objective-C code to machine code that runs directly on the Android device’s processor (no VMs were harmed in the execution of our code). A platform library bundled with the app implements popular iOS APIs, so the app thinks its running in iOS.

I've been working on it for about 2 years since the company was founded, but some of our team members have been working on this problem for much longer. We found them through their open source projects.

tootie6 karma

So wait a sec, are you saying you can essentially run Obj-C on a JVM? Would it work on HotSpot?

collinjackson10 karma

From the blog post:

Does Apportable convert source code to Java? Does Apportable emit Dalvik bytecode?

Absolutely not. All source is compiled to run on bare metal. We compile source to ARM shared libraries, which is the same way iOS apps are compiled.

qubitsu50 karma

Would you rather fight one Björk-sized swan or one-hundred swan-sized Björks?

Edit I promise to make thou proud, granter of shiny Internet gifts!

collinjackson48 karma

The latter. First of all, although Bjork is tiny for a human, a Bjork sized swan does not seem like it would be as cool as Bjork herself. Furthermore, 100 swan-sized Bjorks would be delightful!

maxbaroi40 karma

I feel a hundred swan-sized bjorks would just giggle and form some bjork-sized mini-human-pyramid.

collinjackson16 karma

Exactly!

GeeYouEye39 karma

So if it was going to take 8 programmers 5 months to port Biophilia, how long did it actually take how many programmers?

collinjackson61 karma

It took one programmer less than 1 hour to get the first sub-app running, and most of the other sub-apps were similarly easy. To support the last sub-app (Hollow), we had to improve our support for iOS video APIs, which took a month or so to incorporate into our platform. Now the next app using these APIs will port over instantly.

zbowling37 karma

So I play zerg and I'm constantly getting taken out by mass marines and Protoss death balls. What's your strategy for countering this?

collinjackson50 karma

Banelings are my response to pretty much any strategy.

47thproblem22 karma

If I wanted to create an app based on my website, starting with nothing, where would you recommend to start?

Thank you for taking the time to do this.

collinjackson93 karma

If you prefer C#, try Xamarin.

If you prefer JavaScript, try Appcelerator or PhoneGap.

If you prefer Objective-C, try native iOS and use Apportable for Android.

If you prefer Java, I question your sanity.

pjmlp2 karma

What about C++? That is, after all, what many game studios use across mobile devices.

collinjackson7 karma

Many of the games using our platform are written mostly in C++, and that's a great choice for the core game engine. However, to get to the operating system APIs (screen, touch, accelerometer, audio, etc.), you'll still need to somehow call into Objective-C land on iOS, and Java-land on Android.

shl41519 karma

it was gonna cost Bjork £375,000.

how much did it wind up costing her?

collinjackson29 karma

It depends if you buy it! She offered us a share of the Android sales. But normally we sell fixed price licenses.

Fabien417 karma

I assume that you have access to the highest version of your own software, "Enterprise", and that's what you used.

If you had to buy a licence of Apportable Enterprise for each programmer on the Biophilia project, plus the programmers' salaries, would it have cost less than the £375,000?

(Really, when I see "Contact Us" instead of a clear price, I read it as "Don't bother contacting us, you can't afford it anyway.")

collinjackson7 karma

Our enterprise plans are for companies that require extra support for our team. In many cases, we do rev share deals. Just ask.

CaptainRealObvious13 karma

Did you get to meet Bjork?

Is she as wonderful as I imagine??

collinjackson24 karma

Yep! Just don't ask to take a picture with her.

sdenyz10 karma

What do you guys use for your Foundation? is it open source?

collinjackson15 karma

saurik3 karma

As all this seems to do is stub over Activity into native code, why not use the existing NativeActivity?

collinjackson7 karma

Some of our customers still want to support Android 2.2 (Froyo), which doesn't have NativeActivity.

decibell10 karma

Do apps feel like iOS apps? Or do you do something to make them feel like native android apps? (i.e. scrolling)

collinjackson7 karma

We use native controls where it makes sense to, for example if you select a text field you'll get a native Android keyboard. Right now we're using Android's native scroll views but there are some performance reasons why you might not want to. We're working on some new UIKit options to give developers more control whether the converted app is pixel perfect like iOS or more like a native Android app.

ubernostrum9 karma

Do you still recommend pushing in chairs?

collinjackson16 karma

Yes. The aesthetic and logistical benefits of pushing in chairs are completely assured, whereas the rest of my AMA has no basis more reliable than my own meandering mobile development experience.

NoShirtNoShoesNoDice9 karma

Can Apportable do the reverse (go from Android to iOS)? If not, are there plans to do so?

Will there be support for Windows Phone? Unfortunately I don't know how difficult it would be as I've never looked into, or even touched, a Windows Phone.

I do some Android development at times and would love to know that I can port my apps to iOS quickly.

Great project!

collinjackson10 karma

We are currently focused on providing really great support for Objective-C on Android. We might support Objective-C for Windows Phone in the future, but we have no plans to do Java for iOS.

jaegerpicker3 karma

I'd think windows phone would actually be quite a bit easier to support given the much better support of C++ on the windows platform. ndk for Android is a nightmare to work with IMO.

collinjackson5 karma

We want to make sure our SDK can be used on a Mac with Xcode, because that's what iOS developers are used to. It's true that the Android platform can be hard to develop for, but we see that as an opportunity, and at least it supports debugging on Mac. Microsoft's Windows Phone debugging tools currently require Windows and Visual Studio. If anyone has found a way to attach the Mac version of gdb to a Windows Phone app, I'd love to hear about it!

redditthereddit8 karma

Hey, didn't I hear about you guys from Osmos, and something about them eating their own hats?

Anyways, I'm glad to hear that you guys are doing well and kicking! Even though I own an iOS device, from what I understand, you guys have been pretty instrumental to the Humble Android Bundles.

A question: How did you guys get started? What was your (and your founder's) desire to make an iOS to Android porting libraries and team?

Thanks again for the AMA!

collinjackson14 karma

The inspiration for Apportable is that I saw Angry Birds on my housemate's iPad and was frustrated that I couldn't play it on my Android device, despite it having been released on iOS for 10 months. I started emailing top game developers and asking why they were all iOS exclusive, and found out that in most cases they wanted to support Android, but porting was slow and expensive.

genymode8 karma

apportable seems to be in an interesting position--advocating that the Apple iOS development environment/tools are the standard, but using that environment and toolset to go to Android. obviously, google is a strong partner of yours, but how does Apple feel about your company? how do you navigate this strange space?

collinjackson7 karma

We use a lot of open source Apple code, but we don't publish any apps in the App Store, so we haven't really interacted with them yet.

genymode6 karma

obviously, reimplementing iOS's libraries is a pretty daunting task--Apple has thousands of engineers! How many engineers does Apportable have, and how has it managed to accomplish such a seemingly monumental undertaking?

collinjackson5 karma

We have about 20 engineers right now. Fortunately, we were able to leverage a lot of open source code to get the platform up and running, and have been building in support for the missing iOS APIs incrementally. Currently most of our customers are game developers, and we're now adding support for more APIs used by non game developers.

Programm3r5 karma

What criteria does Apportable generally look at when you decide to take on an app such as Biophilia?

collinjackson6 karma

We'll let anyone download our SDK and do it themselves. Our enterprise services can be bought with fame or money.

SebPark4 karma

What was the hardest part of the development of Android version of Biophilia?

collinjackson7 karma

The app is overlaying several transparent videos on top of each other, which required a major overhaul of our video support. Fortunately it's a one-time cost that will benefit all future apps using our platform.

onoffkonoff3 karma

Biggest startup lesson from when Apportable was just you and Ian?

Biggest lesson for other startups now that you're a much bigger team?

collinjackson6 karma

1) Listen to your customers. We started out porting iOS apps to the web, because I used to work on the Google Chrome team and browsers are what I know. But while having a web version of their app was a "nice to have," our customers were clamoring for an Android version, so even though I'd never developed for Android, it was more important to go there first.

2) Listen to your engineers. Our customers often ask about Windows Phone support, but our team has their hands full with Android. We'll get around to it eventually.

gameofthronesfanatic3 karma

I created a small tool like this a few years ago but thought nothing of it. I guess I really jumped the shark on that one

collinjackson11 karma

I don't think that's what "jumped the shark" means.

hypergolic5 karma

Maybe "missed the boat"?

collinjackson1 karma

Yeah, that sounds better.

It's reasonably straightforward to demonstrate a simple proof of concept of Objective-C running on Android, but supporting everything that's on iOS is a huge and ongoing task.

mathpirate3 karma

Do you run into issues when the app "thinks it's running on iOS" in terms of tacit assumptions that programmers make about background processing, system resource contention, etc., that work differently on Android?

Congrats on the announcement and the funding!

collinjackson6 karma

Generally our platform appears a lot like an iOS device to the app, but there are a few differences. For example the screen size won't match a real iOS device. Biophilia was hard coded assuming iPhone or iPad screen sizes, so we had to fix that. We also had to add support for the Android back button using the Apportable UIKit extensions. Here's a screencast showing how we did it.

mathpirate3 karma

Neat! Back button sounds like kind of a nightmare. When you say "we had to fix that" does that involve reaching in and changing other people's source, or do you tell them what changes are needed, or some of both...?

collinjackson5 karma

In this case, we got the source code from the original developer and showed them how to fix it. But many of our customers do it themselves.

theediblethong3 karma

How is the work atmosphere in such an interesting niche. Big or small company? Growing or staying put? Engineers to non engineers ratio? Sorry its more than just 1 question.

collinjackson9 karma

Here's what our office is like: http://www.themuse.com/companies/apportable

We have about 20 engineers and 10 non engineers in the office, and we have doubled in size in the last few months. We have a decentralized, engineering centric culture with very few meetings. We play lots of Starcraft.

Fabien42 karma

Here's what our office is like

Feels noisy. Earplugs?

collinjackson1 karma

We have some smaller quiet areas for team members who want that.

b3ll2 karma

You're forced to replace all your engineers with Pokémon. Which do you choose and why?

collinjackson8 karma

That's a hard one. I couldn't replace all the engineers with the same Pokemon. So now I've got to think of 20 different Pokemon...

kingofbigmac2 karma

Have you ever ported anything from iOS to Android for the hell of it? This game looks fun wish it was for Android...

collinjackson3 karma

Yes, we do a lot of indie games that have no chance of breaking into the top grossing charts but are amazingly fun to work with.

Georules2 karma

I personally really dislike iOS-styled android applications, and found many of them to be slow - although I do not think they were doing something as sophisticated as Apportable for conversion. Regardless of performance, do you think the uncommon UI experience could eventually cause a problem with retaining the consumers to these ported applications?

collinjackson3 karma

It's good to optimize the look and feel of your app for Android, and we provide ways to do that, but a lot of devs today are struggling to get an Android app working at all. That's not good, and even iOS users suffer if they can't interact with their Android friends.

asusa52f2 karma

Any plans to do it in reverse--port Android apps to iOS? I've made a couple of small time Android apps that I'd like to port but I don't want to invest all the time and resources to learning Objective-C and a whole new platform (not to mention I don't even have an iPhone to develop on). Also, what was your experience at YC like?

collinjackson3 karma

Here are some tools that go the other way:

http://www.javaworld.com/javaworld/jw-03-2013/130327-open-source-java-iphone-tools-compared.html

YC was (and is) great. As a first-time entrepreneur I found it helpful to have a support network to turn to for help and advice. I still meet with YC partners on a regular basis.

farmisen2 karma

What's your opinion on Sprite Kit? Do you think it's going to be the demise of cocos2d?

collinjackson10 karma

We are the primary financial sponsor of cocos2d-iphone, CocosBuilder, and cocos3d, and employ several developers working full time on these projects. I think there are some advantages to using an open source engine and we have big plans for the next cocos2d-iphone release. That said, we also plan to support SpriteKit and are working closely with the developers of the SpriteKit-based game framework KoboldKit while we wait for Apple to lift their NDA. Basically if it's Objective-C, we probably want to support it.

Dolkthor2 karma

What do you think about HTML 5 native-esque apps (like those built with PhoneGap, etc)? What do you consider to be the timeframe (if ever) that more native support will be available for HTML 5, potentially offering "easier" multi-platform capability?

collinjackson7 karma

HTML is always improving, but because it needs to be reviewed and standardized by multiple vendors I think it will always be at least a few years behind native APIs in performance and functionality.

Fabien41 karma

I believe the point of PhoneGap is to avoid waiting for browser vendors, i.e. giving the JS code direct access to the phone's features.

collinjackson2 karma

Perhaps I misread the question. If you're using the PhoneGap API to access native features, I feel like you're not really using HTML5 any more, you're using a cross-platform mobile development framework that happens to be JavaScript based. There are perfectly legitimate reasons to want to develop apps in JavaScript, but I do think that mobile OS vendors like Apple will continue to innovate and give us reasons to develop using native APIs.

eat-more1 karma

[deleted]

collinjackson3 karma

I met my co-founder through my research, and I'm currently on leave as an assistant research professor at CMU, where I have an office on the Silicon Valley campus. The university has been very supportive and several of our team members were formerly my students.

mycall1 karma

What could I read up on its current limitations?

collinjackson1 karma

Start with http://docs.apportable.com/. If there's something you'd like to see added, let us know on the mailing list.

mr_cs1 karma

[deleted]

collinjackson5 karma

It's runs the same as iOS on equivalent hardware. We did have to improve our audio support to make sure that the audio wouldn't skip on lower-end devices. We decided not to support Android 2.3 (Gingerbread) and below for this release since there's a wider variety of hardware running that operating system.

JJB3661 karma

Will you ever make something that will work in the same way, but to Windows phone 8?

collinjackson1 karma

We might.

myFriendThe1 karma

how hard was good audio support?

does native code make android as versatile and real time capable as iOS?

collinjackson2 karma

Implementing audio support in our platform was challenging, and because we had to wrestle with the fragmentation of hardware capabilities on Android. We've been working on our open source OpenAL implementation for over a year.

carmooch1 karma

As the founder of a pre-funding startup myself, I was wondering how much progress and momentum were you able to make for Apportable yourselves before acquiring seed funding, and what would be your tips for gaining the attention of investors?

collinjackson3 karma

We were "off the record" at YC demo day in 2011, but we had a working demo that helped us land the first few seed investors on good terms. Since then, we've been focused on selling to successful (top 100) developers, which made it easier to fund our early growth out of revenue.

FireFromTheWire1 karma

As a game dev working in unity, I understand this. Do you provide something that's not just for porting existing apps?

collinjackson2 karma

You can use it to develop new apps and release on iOS and Android at the same time.

ThatOnePerson1 karma

What kind of socks do you wear?

collinjackson7 karma

I put my socks on just like the rest of you -- one foot at a time. Except, once my socks are on, I ship bestselling Android apps.

mrsix1 karma

OK so I'm late here...

Absolutely not. All source is running on bare metal. We compile source to ARM shared libraries, which is the way iOS apps are compiled.

What do you plan to do when the eventual x86-based Android devices begin to take off. If the Bay Trail performance is really as good as the alleged leaked benchmarks, I think you'll quickly run in to this.

collinjackson2 karma

Right now it seems that most x86-based Android devices have ARM emulation, and it actually works quite well for native apps such as those built with Apportable. We have gotten x86 builds working in the past and we'll start recommending a "fat binary" approach if x86 really takes off.

robotdevilhands1 karma

How did you place the story in the Wall Street Journal? Did you use a PR firm, or were you able to reach out through your investors?

collinjackson3 karma

Our investor Alexis put us in touch with a reporter there.

mtrimpe1 karma

[deleted]

collinjackson1 karma

Our video recording support is incomplete at this point, but we're working on it.