Open sourcing Remixthem, my first Android app

10 years ago, the iPhone re-defined what a mobile phone could be. But because I was an open source enthusiast, invested into the Google ecosystem and knew Java, I bought an HTC Magic, the second Android phone in the market. I was at the time an intern in Paris working on 3D software, and I had some free time in the evenings. This is when I decided to dive into Android development.

I downloaded the Android SDK, started some samples and read the docs, which, from what I remember, were quite good. I learnt about a few fundamental concepts of the Android OS: Intents, Activity, resources (and alternative resources), UI layouts, Drawables

At the same time, Google launched the second Android Developer Challenge, promising some large amount of money to winners of each category. This was, in my opinion, a great way to bootstrap the Android app ecosystem, and was for me an ideal target to get started on a real app.

The app

I previously used Photoshop (or more likely GIMP) to blend two faces together for fun. This was quite tedious to do by hand, and I always believed the process could be automated. “Remixthem” was born. The purpose was simple: the user would snap pictures of two faces and the app would blend them into one. I later realized that it was also fun to edit the features of a single face, so I added this mode.

At the time, there were not a lot of resources online and GitHub was barely launched, I remember using Google Code Search to look for relevant examples inside the source code of Android itself. The app uses the built-in face detection API to get the location of the eyes in both pictures. Then it uses some alpha masks to extract these features and later blend them. The user can also edit each part manually. I had fun drawing the graphics, in particular, I remember how aweful were the guidelines fro Android icons at the time (a very strange 3D perspective).

Technically, I learnt a lot. Of course, I learnt about Android application development, but also about the Java programming language and generic image manipulation techniques.

Mistakes

I also learnt a lot about what it takes to make a “product” from start to finish. In retrospect, here are the mistakes I did with Remixthem. I realized these quite early after launching the app, but never found the time (or maybe the motivation) to fix them.

10 years later many apps implement this feature, and in a very impressive way: Snapchat does it in real time for example.

Get it

The code is very old, but there is no reason to keep it private. Find the source code on GitHub.

The app is published (without any guarantee) on Google Play.