Le Lab

How to Repair Corrupt Sqlite Databases

In 321Run I use sqlite to keep all data. It’s a 2.0 app, and I never migrated to coredata… and probably never will.

From time to time, a user contacts me because their database is empty: no more history, and all former runs (sometimes more than 200) have disappeared.

It’s usually a corrupt database problem.

What I do now is ask for the file itself (it’s available through iTunes file sharing), and then try to repair it. This command has usually given very good result:

echo “.dump” | sqlite3 trainer.sqlite | sqlite3 trainernew.sqlite

Cool, heh? Hope it works for you if you have the same kindof issue.

If you are a user, please contact me so I can try, as it’s not certain it will work and is more for the expert user.

MetaEditor 3.1 Borked

I noticed that I had two regressions on the 3.1 version. Sorry about that. I should know that I need to test all old features whenever I send a new version. I pulled the app from the store for the moment, until I solve this stupid bug.

MetaEditor 3.1

Actualités de Meta Editor

La version 3.1 de MetaEditor vient d’être publiée par Apple dans l’AppStore. Elle contient encore quelques nouveautés pour améliorer votre productivité et rendre l’application plus utile. Une ou deux autres applications de photographie font maintenant aussi l’édition de tags et des infos IPTC. Il était temps de modifier un peu plus encore les fonctionnalités pour faire de Meta Editor une application différente et ne pas être en concurrence sur le prix.

J’ai introduit dans la version 3.0 la sélection multiple de photos (en plus des différents albums etc). Un utilisateur m’a fait remarquer que je n’allais pas assez loin. Aussi j’ai privilégié les fonctionnalités qui permettent de traiter les infos en lots. Il est maintenant possible d’importer tout un album de photos. Bien que l’opération soit encore longue, elle est plus efficace que vous tapant sur chacune des images. Cela vous permet maintenant de traiter un import de photos depuis une carte le plus rapidement possible. Cette opération reste lente. En effet, je suis toujours obligé de copier les fichiers et de générer les prévisualisations à la volée. J’espère pouvoir bientôt faire autrement.

Second changement pour être plus rapide: il est maintenant possible de sélectionner toutes les images d’un album d’une seule pression sur un bouton. Là aussi, c’est tout simple, il fallait y penser et cela doit vous permettre d’être plus rapide pour éditer vos données. J’ai corrigé quelques bugs aussi, par exemple dans la gestion des mots clés. L’autre grande nouveauté est l’utilisation de Dropbox pour exporter vos images une fois l’édition finie. Personnellement, j’adore Dropbox et je l’utilise plusieurs fois par jour. C’est notamment très pratique pour partager du contenu avec des collaborateurs, ou à plusieurs sur un projet. Petit bonus, il est maintenant possible d’importer un nombre conséquent de mots-clés depuis le presse papiers. Par exemple, copiez vos mots clés habituels dans un email, séparés par des lignes (un mot par ligne), et envoyez ce mail sur votre iPad. Vous pouvez ensuite copier cette liste, aller dans meta editor et taper dans “importer” dans la gestion des mots clés. C’est une fonctionnalité avancée et pour le moment mal documentée.

Qu’y a-t-il dans le futur?

Tout d’abord, j’ai prévu de passer MetaEditor en application universelle (iPad + iPhone). C’est long à faire car il faut remettre à plat l’interface, simplifier certaines choses, etc. Mais cela me permettra de toucher plus rapidement un grand nombre d’utilisateurs. Et il parait qu’il y a aussi des lecteurs de cartes pour l’iPhone. Il y a aussi iOS 5 et iCloud. J’ai l’intention de supporter les nouveautés que ces deux apportent très rapidement. Elles sont en effet très pertinentes pour les photos. Ne serait ce que les photos streams qui se mettent à jour en permanence. Mais plein d’autres petites choses qui vont vous rendre l’application plus pratique, mais dont je n’ainpas le droit de vous parler. Tous les commentaires sont bienvenus et vos remarques et demandes me permettent d’orienter mes efforts sur des fonctionnalités vraiment pratiques. Par exemple, je ne sais pas aujourd’hui si une intégration avec 500px serait utile, j’ai du mal à apprécier quels sont les réglages qui vous manquent sur l’export vers flickr. Alors envoyez moi un email ou laissez un commentaire. Je ne fais pas tout ce qu’on me demande, mais j’écoute toujours attentivement.

Update MetaEditor

J’ai mis à jour Meta Editor en corrigeant les crashs rencontrés par plusieurs personnes, et que ces utilisateurs m’ont remontés par le crash reporter. Merci. I updated Meta Editor to 3.0.1 after correcting some of the crashes that most people came accross. Thanks to those who reported the crashes with the crash reporter.

Meta Editor for iPad 3.0

Meta Editor for iPad has reached version 3.0. It will be released very soon, hopefully next week. This new version adds a lot of features, of course. The goal is to make the tool more useful and more solid for users. So I first took into account the comments received: - “I want to edit multiple pictures at once” - “this application crashes too often”

More is better, multiple is best

The newest version is now able to select and make editable several pictures at once. This means that you can add several images from the photo library at once: tap the plus sign, and select as many pictures as you’d like, one by one but without having to tap again the plus sign. Much faster process. You can also change mode and go into multiple edit mode. This mode allows you to select more than one picture at once from your list to edit the IPTC fields. You can then upload (except for mail) that list of pictures. A new feature that I hope you’ll like is the addition of albums. This is becoming more than necessary when you have more than a bunch of pictures. There is still a “all pictures” choice of course.

Bugs

To make sure that the app worked better, with less crashes and less bugs, I spent quite some time making some beta versions, reaching out for people to provide their feedback and correcting quickly the issues that were found to keep the discussion going on. I also added a developer feature that allows me (with your permission) to receive the crash reports that are automatically produced by the system to find where and how the crashes are happening. As one of my fellow developers said: you should solve bugs from Crash reports before the user tells you about it. But of course you need crash reports. So next time you crash on Meta Editor, please send the crash, it will help me make a better app.

New way to export

I’ve added the Flickr upload to the different ways of saving your edited and tagged pictures. If you have a Flickr account, please try it and comment on it, preferably by direct email.

Meta = Exif + GPS + IPTC

One of the meta information sets I totally overlooked in the 2.0 version was Exif. This big error has been corrected. I hope Meta Editor in its third version becomes more useful for you and helps you be more productive with your iPad quickly. Please help me making it better by spreading the word so that I can spend more time on it.

Giving Back, One App at a Time

Of course, there is the iPad 2. I live in France, so I can only wait for it to arrive here (if it does in time). There’s also this message from Twitter that they are looking at third party developers with a bad feeling, and that developing clients is no more acceptable. That’s rocking my world and my relations on Twitter these days. How futile… In the meantime, hundreds, probably thousands of people in Japan have died in a terrible earthquake, and others are facing a delicate nuclear situation, in a country where the only atomic bombs have detonated to kill people. You can pray for Japan and for people you know there.

But helping them requires money. Even in one of the richest nations of the world.

So I decided that I’d give all the money I make from my app 321run for this week end to a fund that would help save lives (and by all, I mean all).

That’s not a lot, but you can make it more. And that’s what I can do. I don’t know yet which fund will get that money, probably MSF, or the red cross.

But it will be to help save lives. If you already have 321Run, or else, don’t hesitate to give to your local organization. Money will be more helpful than prayers.

Becoming a Mac OS X Developer, the Easy Way

(Cet article est aussi disponible en français)

Ever since I own a computer, I want to become a firefighter… errh , no, I want to become a Mac OS X developer. To me it means creating apps, coding them, selling them and making enough money out of it that I can make other apps , even better ones. And on, and on. That wish is about to come true. But first, why didn’t I start before? I did actually. When Mac OS X 10.0 was released, I was not totally stranger to the platform, having developed in WebObjects for several years. I mostly created small utilities for friends or for myself, getting to know the tools and the platform. I hope nobody finds these apps on the internet, it would be embarrassing.

When iOS 2.0 was released (at that time, it was the iPhone SDK), the virus bit me again, on the iPhone this time. So I developed several apps since june 2008, both for me (321Run, GPSRecorder, MetaEditor) or for clients.

Thanks to Apple and to the AppStore, my bad marketing skills were taken care of, and I was able to make enough money to one day consider becoming a full time indie. Since I did code for the iPhone,the itch to code for the Mac grew stronger. But making an app for the Mac is much harder. I was joking about it saying to Daniel Jalkut”When I grow up, I’ll become a Mac developer, like you” (tweet unreachable, thanks Twitter!).

Except it is much more complex and you need to make a bigger effort to release an app that compares in features and design with the other apps on the market. First of all, the UI is bigger, AppKit is at the same time bigger and older and also more complete (too complete?). The Mac software history is also something to take into account: users have expectations. The grand debut of Mac OS X was a time to restart all clocks, but since then there’s been new apps, new APIs, new uses. If you want an app that compares, you have to be on the same level of features, and thus the first attempt is harder to make.

So I took a shortcut: I bought an app, to code it some more and publish it, make it mine.

Deck

Deck

I asked Kristof Van Landschoot to sell me his app he launched one year ago Deck, and he accepted. Why this one, and not another one? Simply because I like it and I like what it does: playing music. Finding an app that belonged to my centers of interest was key. I have to like it, and use it, even if I’m the only one who ever uses it. Deck is leveraging your iTunes library to allow you to play your music as albums, one by one, as if you were playing them on a deck. Deck is a new way to appreciate and rediscover your music, without launching iTunes and all its features (iTunes Store, AppStore, Video rentals…). An app that does one thing, but does it well: play your music.

Buying an application

Buying an application isn’t easy, nor is it so difficult. It’s just risky, and a jump into the unknown. Luckily, I didn’t do it without advices several stories of apps that have been sold/bought have arisen since 2006, and the app market exists. Daniel Jalkut was one of the first one to tell he was about to do it, and he did it (twice) with success (I’m using MarsEdit to write this post btw). I contacted him while I was watching his C4 presentation. He gave me sound advice and comforted me in my opinions regarding the valuation of the app. Justin Williams also told his stories, but him as a seller. I tried to get into his mind while reading his slides from 360iDev. Ortwin Gentz also bought his first iPhone app, leveraging the boost it gave him to become a successful publisher/developer. His story too was interesting, and he wrote the numbers in plain sight (as did Daniel).

Still it didn’t make finding a price so easy, as each case is different. The usual model to value an app is how much it made during two years. And in that case it was not working: Kristof seems to be as good a marketer as me and the sales of Deck have not been what he expected. At the same time, he spent a lot of time creating an app which worked, so he couldn’t sell it for nothing. So I decided to buy a forecast, my own forecast of what the app should become to be profitable, and pay him some royalties on that fair scenario, and if I over-succeed, I pay him too a fair share. He is therefore interested in my success: the faster I reach my sales, the more he makes. If I don’t reach my own goals, it is 7 000 euros that I have to give him over the course of several years, and I already gave him a part of that money. I don’t have all that money yet, so I need to make a successful launch.

Future plans

It’s been almost three weeks that I received the keys to the app. I had little issues to solve, things that were not working as I wanted (for example, the app included podcasts as albums). In that time I corrected those little things, and got to now the app better, which is vital too for support. I localized in french too, and prepared it for the Mac App Store, as I don’t intend to sell it directly. All this makes a 1.1 which I sent to Apple for review to the AppStore (or not). Immediate future plans are to be ready for that launch (my first launch). I quickly want to extend to other languages the localization efforts. It is key for us European developers I think, as we need to be close to our local markets. The UI is next on the upgrade path. As soon as I have money to pay a gaphic designer. Of course, I need to add some expenses in PR and advertising to make sure the app has coverage and sales.

I’ll continue to keep you updated on my efforts, strategies etc. If you have questions, don’t hesitate to comment.

Devenir Un Développeur Mac OS X

(This post is also available in English)

Depuis que je suis tout petit, je veux devenir pompier… euh non, développeur Mac OS X. Pour moi, cela veut surtout dire développer des applications, les vendre, en vivre pour faire d’autres applications encore mieux. Et recommencer, et continuer. Ce souhait est en passe de se concrétiser. Développer des applications pour Mac OS X, je l’ai déjà fait au début du siècle, quand Mac OS X est sorti. J’avais un passé de développement avec WebObjects, donc je n’étais pas totalement étranger à la chose. J’ai surtout fait de tous petits utilitaires pour des copains, pour m’occuper. J’espère qu’il n’en reste plus de trace sur Internet, ce serait embarrassant.

En 2008, avec le SDK Cocoa Touch, le virus a fait un retour, d’abord sur l’iPhone. J’ai développé depuis plusieurs applications, à la fois pour moi (321Run, GPSRecorder, MetaEditor) ou pour des clients.

Grâce à Apple et à l’AppStore, j’ai pu compenser mes maigres talents de marketeur et gagner un peu d’argent pour payer quelques frais, pas encore de quoi en vivre. Depuis que j’ai recommencé à développer pour l’iPhone, mon envie de développer pour le mac s’est aussi réveillée. Mais développer pour le Mac c’est juste beaucoup plus dur. J’en rigolais avec Daniel Jalkut à l’époque en disant que quand je serais grand je deviendrais moi aussi développeur Mac (tweet introuvable, merci Twitter). Sauf que devenir grand s’avère plus complexe. D’abord, l’interface du Mac est beaucoup plus dure à maîtriser, avec cette surface non finie et de taille différente qu’est l’écran. AppKit est beaucoup plus complet, mais parfois aussi beaucoup plus “daté” que UIKit. L’historique sur le mac est beaucoup plus important. Mac OS X a été l’occasion de remettre un certain nombre de compteurs à zéro et de recommencer. Mais 10 ans ont passé, et les couches des différentes applications se sont accumulées, nouveaux usages, nouvelles API. Pour avoir une application qui ne dépare pas, il faut composer avec tout ce qui existe en termes de fonctionnalités, et la première marche est beaucoup plus haute. Alors j’ai pris un raccourci: J’ai acheté une application pour la développer et l’éditer sous mon nom, en faire la mienne.

Deck

Deck

J’ai proposé à Kristof Van Landschoot de racheter l’application qu’il a sortie l’année dernière, Deck. Pourquoi celle ci et pas une autre? Parce que je l’aime, parce que j’aime ce qu’elle fait: jouer de la musique. Trouver une application qui soit dans un de mes centres d’intérêts est essentiel. Il faut que je l’utilise, quitte à être le seul utilisateur. Deck s’appuie sur votre librairie iTunes et vous permet de jouer vos albums de musique, un par un, comme si vous aviez encore une platine (Deck) platine disque ou platine CD. Deck se présente comme une nouvelle façon de consulter et d’apprécier votre bibliothèque de musique, sans lancer iTunes et toutes ses fonctions supplémentaires (Store, vidéo, appstore…). Une application qui fait une seule chose et le fait bien: vous faire redécouvrir votre musique.

Acheter une application

Acheter une application n’est pas facile. Ce n’est pas difficile non plus. C’est juste un saut dans l’inconnu, un de plus. Heureusement, il y a déjà eu plusieurs expériences qui ont été racontées. Daniel Jalkut notamment a été un des premiers à dire qu’il allait le faire, et à le faire avec succès (j’écris ces mots dans MarsEdit, d’ailleurs). Je l’ai contacté en même temps que je regardais sa présentation à C4.

Ses quelques conseils m’ont conforté dans l’opinion que j’avais déjà. Justin Williams a aussi raconté publiquement ses expériences en tant que vendeur. J’ai lu et relu ce qu’il en disait, notamment lors d’une présentation récente à 360iDev.

Enfin, Ortwin Gentz a acheté sa première application iPhone lui aussi, bénéficiant lui aussi de l’effet d’accélération que cela représente.

Reste que trouver un prix n’a pas été très facile. Surtout que les modèles habituels d’évaluation ne s’appliquent pas. Car Kristof l’admet lui aussi: la vente d’applications n’est pas son fort. Et en conséquence, les ventes réelles de Deck étaient faibles. Ce qui n’empêche qu’il a passé beaucoup de temps à faire une application, et que celle ci fonctionne bien. Donc il ne pouvait pas non plus la vendre pour zéro. J’ai donc acheté un potentiel. J’ai évalué combien je pouvais en vendre et combien je devais en vendre pour que l’application soit un relatif succès et s’autosuffise: coûts de développement, hébergement, support, etc. Et j’ai déterminé avec Kristof le prix sur la base d’un pourcentage des ventes sur les prochaines années. Il a ainsi particulièrement intérêt à ce que je réussisse à vendre l’application.

Mais même sans cela, c’est près de 7 000 euros que je dois lui verser sur plusieurs années pour dire que l’application est à moi. Une somme que je n’ai pas aujourd’hui devant moi, il faut donc que ce lancement se passe bien.

Futurs plans

Cela fait bientôt 3 semaines que j’ai l’application et son code source. J’avais de petits griefs quant à la façon dont elle fonctionnait, et j’ai corrigé ceux ci. J’ai appris à connaître un peu mieux l’application, découvrir ses arcanes et son fonctionnement pour toutes les parties, ce qui est aussi important pour le support. J’ai localisé en français aussi, parce que je ne pouvais pas laisser l’application en anglais seulement. Et je l’ai préparée pour l’AppStore Mac. Tout ça fait une version 1.1 qui a été envoyée à Apple pour validation (ou pas) et publication sur l’AppStore.

Le futur immédiat, c’est donc le lancement de l’application sur cet AppStore. A moyen terme, la localisation dans d’autres langues est importante: néerlandais, allemand et espagnol font partie des langues que je veux rapidement ajouter. L’interface utilisateur est amenée à évoluer, dès que j’aurais de quoi payer un graphiste. Par ailleurs, j’ai prévu d’accompagner le lancement de l’application avec pas mal de dépenses de marketing pour qu’elle soit plus connue et acquière plus de visibilité. C’est là aussi un gros poste de dépenses pour les mois à venir.

Je continuerai à vous tenir au courant de l’évolution de cet achat et de ce lancement.

Couvertures Inrocks

Le retour de la revanche… Je dois mettre à jour les anciennes version, mais j’ai remis en ligne quelques pochettes des inrocks, notamment Objectif 2011 2011 Objectif
2011

Best of 2010 2011 Best Of
2010

Une rentrée 2010 2010 Une rentrée
2010