Your browser (Internet Explorer 7 or lower) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.

X

Instant Search on iOS App Store!

If you have an iOS device you probably search the App Store regularly for apps you have heard about. Following the recent AppGratis ousting from the AppStore, there were claims that the App Store search is broken. That was our trigger to try something ourselves that could serve both as a good demo and help us to explore new use-cases! Check it out!

Obtaining the data

So first, we needed to obtain the data. Apple provides an API to accredited developers, but given that this can be fairly difficult to attain, we considered other solutions. Crawling was our second option, but that approach has its own caveats: you need to play nice with their servers or you get banned (very) quickly. We didn’t want to spend days implementing our own distributed crawler and definitely didn’t have the time to do a sequential and polite crawling. It is in these moments that you are glad to have an external team to do the job for you.

Continue reading…

Algolia Search Offline SDK now supports Cocoapods

We have great news for our iOS and OS X users: our Offline SDK is now available as a CocoaPods dependency.

Cocoapods is a popular dependency management tool that lets you specify the libraries (dependencies) you want to use for your project in an easy-to-edit text file (Podfile). It then fetches all the required libraries and sets up your Xcode workspace.

You can now set up Algolia Search Offline in your iOS project with this line in your Podfile:
pod 'AlgoliaSearchOffline-iOS-SDK'

You can also set up Algolia Search Offline in your OS X project with this line:
pod 'AlgoliaSearchOffline-OSX-SDK'

Once you’re done, simply use the “pod install” command to set up Algolia Search Offline in your project. Now it’s easy to manage library dependencies for iOS and OS X projects!

Why Android APK Format is a Mistake

When I started to develop for Android it appeared to me that an APK file was just an archive, a simple approach that you can find in many systems today. Files are extracted from the archive at installation and you can access them via the file-system.

This seemed even more reasonable since Android uses Linux which is very good in respect to POSIX standards.

But I was completely wrong! An APK is not a mere archive: the application starts from and uses the APK at runtime! This is a horrible decision that will probably hurt Android for a long time…

[Edit 28-Jan-2013] The goal of this post was to express my point of view about the bad properties of using directly the APK file at runtime versus relying on the file system. I used memory-mapped file to illustrate this but the post is incorrect on that topic. There is in fact a way to memory-map a file directly from the APK: you can use an extension for which files are stored uncompressed inside the APK (mp3, jpg, …) and use the AssetManager.openFD() or Resources.openRawResourceFD() to have offset/length inside the APK file.

All my thanks to Jay Freeman for his excellent feedback. His comments helped me to understand my mistake and to improve our Android integration!
[/Edit]
Continue reading…

Android NDK: How to Reduce Binaries Size

When we started Algolia Development for Android, binary size optimization was not one of our main concerns. In fact we even started to develop in JAVA before switching to C/C++ for reasons of performance.

We were reminded of the importance of binary size by Cyril Mottier who informed us that it would be difficult to integrate our lib in AVelov Android Application because its size. AVelov is 638KB and Algolia was 850KB, which would mean that AVelov would more than double in size with Algolia Search embedded.

To address this problem we managed to reduce Algolia binary size from 850KB to 307KB. In this post we share how we did it.
Continue reading…

Simplicity is the most Complex Feature!

I’ve been convinced for a long time that simplicity is the most important property of a product. Long-gone are the 90s when a product was admired for its complexity. But I am also convinced that this is the most complex property to achieve and maintain as time passes by.

A good example of an over-complex product is Atlassian JIRA, a bug tracker that also do scrum management and plenty of other things via dozens of plugins. It’s basically a toolbox to create the bug tracker adapted to your company.

In my previous job, I faced an uncomfortable situation with JIRA because of its complexity. We used it for bug tracking and scrum management and I tried to upgrade our old version to the latest one. After some long hours to upgrade our setup on a test server, I finally got the latest version working but most of our installed plugins were not available anymore because the authors did not port their plugins to the new plugin API. Of course each plugin was there for a reason and I was in a tricky situation: keep the old version with security issues or upgrade to a new version without our plugins. Continue reading…

Never, Ever, Hinder the Use of your Products!

One of the worst user experience I had with a software is with the Sony PS3. I kind of like this product, I found the user interface very nice and well organized… but they are much too agressive on upgrades! They simply block features until the upgrade is done!

A few weeks ago I wanted to watch a VOD movie with my wife. I launched the Playstation Store that asked me to upgrade the OS to the latest version. That’s 45 minutes before to be able to access the Playstation again! But wait! Once the new OS was installed, I tried to launch  the Playstation Store again… This time this was the Playstation Application that was not up to date ! Continue reading…

Why Autocomplete in Twitter Mobile App Sucks

Autocomplete seems very easy, isn’t it? But most of mobile apps that implement it offer a pretty poor user experience.

Let’s look at the twitter mobile application. It proposes autocompletion when you create a new tweet. The idea is to make suggestions after the ‘#’ and ‘@’ characters. It’s actually very nice to gain time, especially when you’re tweeting with a small virtual keyboard… but it sucks!

Avoid Roundtrips to Server for Autocompletion

The first reason is that when you’re on the go, latency is often too high on mobile, leading to unusable autocomplete – well except if you’re very slow to type. Twitter developers chose to develop this functionality server-side, probably with lucene, and to expose it via APIs to their mobile app. That’s good for reusability but not so much for usability…

Beware of the Suggestions Ranking

The second reason is the ranking is just obscure. Yesterday I sent a tweet to @cocoanetics and the screenshot on the left shows the suggestions I got when typing “@c”. I would greatly prefer to see twitter handles before names and it would never come to my mind to look for “Marie Cecile” with “@c”! Continue reading…

The Ordeal of Obtaining an Apple Developer Professional Account

I recently had a pretty bad user experience when I upgraded my personal apple developer account into a professional one.

To sum up, we officially created Algolia in early October and I decided to convert my personal Apple Developer Account in order to have our applications published under the “Algolia” name. This process is not available online but after a quick call people at Apple sent me the link for the process. It is actually pretty simple: they just need you to fill some information about your company and to accept their EULA. Continue reading…