Code signing and distributing - Swift

At Badoo we’re slowly adopting the new programming language Apple introduced last year: Swift. Even though we don’t plan to write Swift-only apps for now, we do want to write isolated modules and learn while we deliver on our products.

iOS Code Injection

Code injection is a powerful tool to modify compiled applications at run-time. It’s possible to do in iOS and it can help in many situations. It’s not such a widespread technique so I want to talk about it and give some tips on how to use it.

Using regular expressions to hack our way towards AMDfication

Badoo’s MobileWeb project started in early 2012. Due to the initial pace of development, coding conventions and modularisation weren’t given priority. Most of the ‘modules’ lived inside a global object. As the project grew it became difficult to maintain and bugs became harder to track down. So after much internal…

Can you center a grid of images using only CSS?

In this article I’d like to discuss a UI problem I was faced with in the past, which I still have no elegant solution for. It seems completely reasonable for this problem to have a simple CSS solution, yet I have not been able to discover one so far. I…

Calabash Android - Unleash the power of Query

Calabash provides query method to get views/elements from screen. But query can do more than this. In this post, I’ll go through a few operations we can perform using the query method invocation option. This can be used for a range of tasks from updating simple views to calling system…

Deobfuscating HPROF memory dumps

According to Crittercism 1, the second most common crash reported in Android apps is java.lang.OutOfMemoryError, so it stands to reason that analyzing these crashes should be one of the top priorities for any Android developer. If you are analyzing memory dumps from a debug build or if you are not…

Building a maintainable bi-directional cross platform protocol

Today I gave a talk along side Pavel Dovbush at (#jsconfeu) about our experiences building a cross platform api abstraction based on protobuf.

Android Handler Memory Leaks

Android uses Java as a platform for development. This helps us with many low level issues including memory management, platform type dependencies, and so on. However we still sometimes get crashes with OutOfMemory. So where’s the garbage collector?

A page control with style

When we set up to design the new Hot or Not version, our designers and developers came up with a really nice way to hint users that the photos they scroll horizontally, can be seen as a grid.

Localising into 46 languages

Localisation done right will earn your app loyal users in new countries. Done badly, it becomes a nagging pain like half the apps on my computer trying to correct the spelling of localisation to localization. The purpose of localisation is not only to make your app available in other languages,…

The technology of billing - how we do it at Badoo

There are many ways to monetize your project, but all of them have one thing in common – the transfer of money from the user to a company account. In this article we will discuss how this process works at Badoo.

5 Advanced Javascript and Web Debugging Techniques You Should Know About

In this article we will discuss 5 advanced techniques which web developers can use to reduce the time they spend debugging and squash challenging bugs by using new tools available to us and taking advantage of the new features offered by debuggers.

JSConfEU 2013

A few of us here at Badoo were lucky enough to travel to Berlin in October for JSConfEU. It was a fantastic conference, the quality of the talks was incredibly high covering topics from the future of JavaScript, to why sometimes you need to draw animals. There were so many…

Type Checking in JavaScript

Here at Badoo we write a lot of JavaScript, our mobile web app contains about 60,000 lines of the stuff, and maintaining that much code can be challenging. One of the trickier aspects of working with a client side JavaScript application of this scale is avoiding exceptions. In this post…

AIDA - Badoo's journey into Continuous Integration

It’s hardly news to anyone that product development and testing involves a lot of boring routine work, which can lead to human error. To avoid complications stemming from this, we use AIDA.

Scaling beyond one developer

Yesterday I gave a talk to the London iPhone Developer Group (#lidg) about the lessons we’ve learnt in the iOS team at Badoo as we’ve scaled the development team.

Fixed Headers in Mobile Webapps

Note: This techniques in this article are now out of date due to various changes to iOS Safari and Chrome becoming the default WebView for Android.