• Posted on

    Welcome Librairie App

    Librairie is my new iOS app. You can find it here:

    Librairie on the App Store

    It’s an ebook reading app that scans your Dropbox account to find your epub files. They’re automatically classified and available for streaming or download from the app.

    More coming soon …

  • Posted on

    Thougths about iOS apps upgrade, a case study - Reeder

    There has been a lot of discussions recently about the strategies app developers may use to upgrade their apps to a new version. The argument is along the lines of the following points :

    • The app devs rigthfully expect to be able to charge for the work they do to upgrade their apps in the long run
    • An part of the apps users understand this and are willing to pay regularly for upgraded apps
    • An other part of the apps users feels that they have already paid for an app and that should be enough

    At first, I thought I was strongly in the camp of the users feeling that we should pay for upgrades. After all, I am a professional developer (even though I’m not an app dev … yet) so I can very easily see the point of a dev who needs to bill customers for a living :)

    But then, the case of one of my most beloved app came into light : Reeder.

    I’m a longtime fan and daily user of Reeder. I had bought the iPhone version, the iPad version and then the OSX version. Enough to say that I was very pleased with all those versions and never regretted to shell out good euros for those.

    But then came the Google Readerapocalypse …

    Silvio Rizzi, the Reeder developer, quickly released an update for the iPhone version allowing to sync your RSS feeds to feedbin, fever and (later I think) a few other services. But the iPad and OSX users were left in the cold, waiting for an update that would turn the stale pile of bits that those apps had become to a once again useful state. Unfortunately, that update never came.

    Today he release Reeder 2, a new paid universal version of his iOS app. The problem is not to upgrade to a new paid version. The problem is twofold :

    1. The app description does not make a good case of why I should upgrade. It states that Reeder 2 is a feedbin / fever / whatever … client and that you can share things with a lot of services. But that’s exactly what was the previous Reeder iPhone version. So why I’m upgrading exactly ??
    2. I feel kind of strong-armed here. Because the iPad version never got an update to allow to sync with anything else that Google Reader I kind of have to upgrade if I want to continue (or start again in this case) to use Reeder.

    So, what’s the takeaway from this exactly ?

    I think there is a big difference between an application and a service. If I buy an application, I expect it to work for as long as the underlying OS allows it to run. If I buy a service I expect it to function as long as I pay. The way M. Rizzi handled this upgrade makes me feel I’m paying for a service, not for an app. The fact that there’s no additional functionality described (except that the app is now running again on iPad) reinforce this feeling.

    I understand that it was not his fault if Google Reader passed away and the iPad version broke. But then why update the iPhone version back to a functioning state before the upgrade and not the iPad one ?

    Of course, I bought the new version anyway but I cannot help to feel that there’s a lot of goodwill lost in a case like this. And honestly, I’m not sure I’m going to buy the new OSX version when it will come out later this year. It was the version I used the least and I bought it mainly as a sign of support for the developer.

    I think that in this brave new iOS app store world, an app upgrade needs to articulate clearly what the value proposition is for the customer. If you need a recurring income to support your service, ask for a subscription.

  • Posted on

    So cute

    From TheVerge:

    “When Mike Mika saw the disappointment on his daughter’s face when she realized Pauline wasn’t a playable character in Donkey Kong, he felt a call to action. Thankfully Mika happens to be a competent developer, and after a few late-night hours spent hacking the NES version of Nintendo’s classic, he accomplished the role reversal his daughter had wished for. Mario was now under Donkey Kong’s control, and Pauline was tasked with rescuing the plumber in distress. Following the successful endeavor, Mika shared some details of how he swapped the characters on a YouTube page demonstrating the hack. “I’ve redrawn Mario’s frames and I swapped the palettes in the ROM,” he wrote. “I replaced the M at the top with a P for Pauline.”

    Pauline Donkey Kong

    As a father (of a Mario loving boy so I saved myself the trouble …), I can only think of one word for this man : Respect.

  • Posted on

    Sublime 3 build system for Django

    I’m a longtime user of Sublime Text. If you’ve never tried it I really advise you to give it a look, it’s really worth it. The beta version of Sublime 3 has been out for a few weeks now and I’m using it in parallel with the stable version 2 to test the new features. While those new features are interesting by themselves trying a new version is also the moment where I dig in the documentation to understand the features I have not used yet in the previous versions. And one of those features is the build systems.

    In Sublime I mostly code in Python so I’ve never been attracted to this build concept … how wrong I’ve been ! You can type a script in a file in Sublime and just by hitting Ctrl+B have your script run in a python interpreter and the result displayed inside your editor. What a time saver.

    No more going back and forth between Sublime and that pesky windows command prompt (yes, I use windows at work …) to test my code.

    But there was still a problem : I do a lot of django coding and the default python build system does know how to import my django models. After a few more digging in the docs I came up with the following solution :

    {
        "working_dir": "c:/path/to/your/django/project",
        "path": "c:/path/to/your/python/binary;c:/path/to/site-packages",
        "env": {
             "DJANGO_SETTINGS_MODULE": "your.settings.module",
         },
        "cmd": ["python", "manage.py", "shell", "<", "$file"],
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
        "selector": "source.python",
        "shell": true
    }
    

    Et voilà !



subscribe via RSS