Tag: Android

How Realm has reconciliated me with mobile databases

Realms of Chaos

I’ve been developing Android apps for few years now, and even if I’m a huge fan of what the platform offers to developers, one thing has always bothered me: Databases.

I come from the web world, where you have very powerful ORMs (like Hibernate, Entity Framework…). And when you arrive to Android, what you have is… SQLite. Hard to use, painful to work with… It’s such a mess that I’ve avoided it as much as possible. Then came ORMs for Android, like ORMLite, GreenDAO, ActiveAndroid…

I had the occasion to work with most of them, and even if some are better than others, globally, they’re really, really not efficient enough. At least in my opinion. Models generation, data migrations, APIs… Most of these things are hard to work with when it comes to Android ORMs.

Here comes Realm

Then came Realm. A promising database with a nice APIs and a SQLite-like performance (or even better). It’s actually a whole new DBMS, written in C++, and available on iOS (Swif/Objective C) and Android. Besides being really fast, Realm offers an API so nice it reminds me my good old Entity Framework.

They present their product better than me, so go visit heir website: http://realm.io

It’s pretty easy to setup, and you can start making your entities in a minute. And if you doubt about speed, know that not so long ago, your data manipulation and reading had to be done on the same thread. But from what I’ve experienced, it had no major performance impact (and Joaquim Verges, creator of Falcon Pro, has the same conclusion: https://realm.io/news/joaquim-verges-making-falcon-pro-3/). Don’t worry, if you still want to read data in a background thread and display them in the UI thread (which is probably a good idea, or an absolute requirement, depending on how you see things), Realm is now offering async methods for data manipulation!

Why is it so great?

Even if Realm has been around for several years, I haven’t tried it until recently (even if I was keeping an eye on it). After all, the Android version hasn’t reached the 1.0 version!

I’ve started to use it on Condor, a Twitter client app I’ve made last summer, and to be honest, I was impressed. Since then, I’ve used it on Astonishing Comic Reader, powering some very, very huge collections of books, without any problem. And I’m basically planning to add it to use it in all my future projects.

So it’s just the most perfect library in the world?
Actually not. It has some flaws. After all, it’s still in beta.
The brand new async methods seems not that stable, at least for now ( One of my colleagues had a severe bug which stucked him for a day or so). Some parts are also a bit tedious to use, like the Realm migration API. It’s changed recently, and it’s much better, but I feel like there’s still room for improvement. But anyway, I still consider it’s one of the best libraries you can find on Android.

What are you waiting for?

Seriously, go try it. Copy/paste the Gradle dependency line, and start to play with those RealmObject. I’m sure you’ll be quickly convinced!

From Nice To Astonishing

I was in Paris two weeks ago for the 2015 edition of the Droidcon Paris. As usual, I’ve met great people and assisted to some very nice conferences.

I also had the opportunity to present a new talk, focused on app design. Mainly inspired by the great book About Face by Alan Cooper, it’s full of advices about how to make your app even better.

Slides are available on Slideshare, so enjoy, and make your apps astonishing!


Astonishing Comic Reader: Year One

A bit more than a year ago, I’ve published a comic book reader app for Android, called Astonishing Comic Reader. And last week I’ve published the 100th release. Time to summarize the experience.

The first version was very basic. There was no gestures, no fullscreen mode, and had a lot of bugs (mainly due to some devices, like Samsung tablets). But after only a week-end of work, you couldn’t expect much more. Now the app offers tons of features, like cloud integration, a nice screenshots system called Snapshots, Material Design, intelligent suggestions, Muzei and Chromecast support… There is also a web version and a Windows 8 version.

The Android app has almost 65K downloads, with more than 1400 users each day. Of course, some people are busy reading comics each week-end! More than 2500 users have rated the app, with a 4.08 global rating (and increasing). With the coming 101th release, there is more than an update each 5 days. Yes, I have a full-time job, and also have the time to work on other apps (and do other stuff as well, like reading comics 😉 ).

The app has also been featured on several websites, including several Android news websites, and LifeHacker, which describes it as “The best comic reader app for Android”. How nice is that?

 

As I’m writing this article, our Google+ community has 499 members (come on, 500th member!). And they are very active, giving me a lot of feedback, which is an absolute necessity when you’re working on an application. No feedback means you’re the only one making decisions, but maybe they’re the wrong ones. When you add a feature, you’re not sure if it’s really needed by your users. Of course, you can be on your own for a lot of things. But after a time, you need to know whan your users think. That’s why my G+ community is so important to me.

I also receive a lot of emails about the app. I don’t have numbers for that, but I generally receive at least one each day. Most of the time, it’s a bug report or some suggestions. Sometimes it’s just a “thank you for making this app”. And that’s awesome!

There is more astonishing stuff coming soon. If you don’t read comic books yet, there is no better time to start!

Download Android app

Google Plus community

 

Holo to material design – Devoxx France 2015

I was this week at Devoxx France. Apart of the amazing conferences, I was myself doing an updated talk about Material Design. Since the Droidcon Paris (where I first did this presentation), a lot of libraries have been created to achieve various parts of the design specifications, and many apps have adopted this new approach.

I’ll update this article when the video will be available on Parleys. You can however get the slides on Slideshare:

 

 

Why you have to care: design for developers

I’m a developer. I love to learn new languages, implement algorithms and debate about which framework is the best. And if you’re reading this, you’re probably like me. But most developers use that as an excuse when it comes to design.

Have you seen all these softwares, websites, mobile apps, with poor design and user experience? You see what I mean, right? For the purpose of the demonstration, let’s take a fake example: an Android app we will call AwesomeApp (how original).

AwesomeApp has great features, but it’s so hard to use that it drives the user crazy. There is too much content on screen, loading times take ages, colors are poorly chosen… Well, an app designed by developers. Of course, developers are not designers, that’s not their job. But does that mean you have to create ugly and/or not ergonomic things? From my experience, here are what the creators of AwesomeApp would probably tell you about their app design:

  • We don’t care about design for now, we focus on features. Design will come later (actually never)
  • Our design is awesome. Look, it looks like computers in Matrix, that’s so cool (Matrix is rarely a good source of inspiration for an app design)
  • We’re not designers, we don’t know anything about that weird, black magic stuff (aka “I don’t have a Photoshop license”)
  • All our developers love our iOS design applied on Android with adaptations (which means “We keep our dev team silent, it’s better for the management team mental health”)
  • Oh you’re right, our design is ugly, we’ll improve it later (you’ll probably die before a design update comes)

 

When you create something, you want to offer a nice user experience. You want to create a pleasant and beautiful stuff. That’s a primary goal when you conceive something.

During many years, one of my best friends was telling me, each time I showed him a new project, “Your design looks awful”. My reply was “That’s the best I can do, I’m not a designer”. Well, this excuse was wrong. After a time I’ve started to care about design, and slowly, I’ve acquired some basic notions I can use every day at work.

Through years, I’ve learned how to use colors, when to apply margins, how to choose the size for a button… There are definitely a lot of things to learn. It’s a complete and different job, and for developers, it’s a whole brand new world. But the first thing you have to learn is to care. Care about your app (or software, or whatever product) design. Care about the final user experience. And start to care from the very beginning. Design is not a coat of paint applied at the end of the development (even if it’s a really popular trend in France).