Saturday, September 12, 2015

Kobo Aura review


About 6 months ago, I was given a Kobo Aura as a gift. It replaced the Nook Simple Touch that I had bought refurbished several years ago. Now that I've had the Kobo Aura for a while, I thought it would be a good time to write a review of it.

This isn't primarily a comparison with the Kindle Paperwhite, but being that the Paperwhite is the defacto standard for eReaders these days, a couple notes:
  • The specs of the Kobo Aura and the 2014 Kindle Paperwhite (the same year the Kobo Aura was released) are nearly identical (screen size and resolution, backlight, processor, storage, battery life).
  • I was happy to get a Kobo and not a Kindle, because the Kindle devices can effectively only read eBooks from Amazon, and if I were to buy my eBooks on Amazon, I wouldn't be able to read them on any other eReader other than a Kindle. I buy my eBooks from Google Play, Kobo, Barnes and Noble, and other publishers. I like having choices :)
Enough about that. Here are the things I love about the Kobo Aura:
  • The interface can be set to one of a number of languages, and it includes dictionaries as well as translations for multiple languages.
  • It has integrated Pocket support, which I love and use on a regular basis
  • When I first got the device there were a couple minor bugs, and I was pleasantly surprised to see they were fixed with a software update shortly after
  • It's priced competitively, cheaper than the Kindle Paperwhite and without ads
  • The backlight works great and can be turned off, unlike on the Kindle Paperwhite
  • The battery life is amazing
  • The Kobo store features are more subtle and less annoying than the Barnes and Noble features on the Nook Simple Touch
  • It has a micro SD card slot, which is nice although I haven't needed to use it yet. The Kindle Paperwhite doesn't have this.
Cons:
  • The bezels are flush with the screen. It looks nice, but because they're so thin it can be difficult to hold the device without accidentally touching the screen.
  • The screen doesn't always register touches. Most of the time pressing the screen once or twice will turn the page, but there have been times when I've had to touch the screen three or even four times before it would respond. If the device had physical page turn buttons this wouldn't be as big a deal, but pretty much all eReaders these days have eschewed them.
    Edit: I originally had a screen protector on my device and I believe it was causing touches not to register as well. Since I've removed it I rarely have to touch more than once or twice.
  • The screen backlight has a lot of blue light. To be fair, it's the same as all other eReaders, so it's more of a suggestion than a huge complaint. But I think it would make much more sense to have a more reddish light on an eReader that will be less disruptive to sleep cycles. Because of this, I normally leave the built-in backlight turned off, especially if I'm reading before bed.
Overall I'm quite happy with the Kobo Aura, despite its few shortcomings. I'd probably give it a 9/10.

If I were to buy an eReader right now, I'd go for the Kobo Glo HD:
  • Display is slightly recessed (unlike the Kobo Aura)
  • Improved resolution, matches the 2015 Kindle Paperwhite
  • Same retail price as the Kobo Aura
  • Although no advertised micro SD card slot, storage is expandable

Kobo Aura : mon avis


Il y a environ six mois, on m'a donné un Kobo Aura comme cadeau. Ça a remplacé le Nook Simple Touch que je l'avais acheté il y a plusieurs années. Maintenant que j'ai le Kobo Aura pour un certain temps, je pensais que ce serait un bon moment pour écrire mon avis.

Ce n'est pas essentiellement une comparaison avec le Kindle Paperwhite, mais étant que le Paperwhite est le standard de facto pour les liseuses ces jours, quelques notes :
  • Les spécifications du Kobo Aura et Kindle Paperwhite 2014 (la même année le Kobo Aura est sorti) sont presque identiques (taille et résoultion de l'écran, rétro-éclairage, processeur, stockage, la durée de la batterie).
  • Je suis heureux d'obtenir un Kobo et non un Kindle, parce que les appareils Kindle ne peuvent lire effectivement que des livres numériques d'Amazon, et si je devais acheter mes livres numériques sur Amazon, je ne pourrais pas les lire sur une autre liseuse autre qu'un Kindle. J'achète mes livres numériques de Google Play, Kobo, Barnes and Noble et d'autres éditeurs. J'aime avoir des choix :)
Bon, passons. Voici les choses que j'aime concernant le Kobo Aura :
  • L'interface peut être changer vers un certain nombre de langues, y compris des dictionnaires ainsi que des traductions pour des langues multiples.
  • Il inclut la fonctionnalité Pocket, que je aime et j'utilise sur une base régulière
  • Après j'ai reçu l'appareil, il y avait quelques bogues mineurs, et j'ai été agréablement surpris de voir qu'on les a corrigés avec une mise à jour logicielle peu de temps après
  • Il a un prix compétitif, moins cher que le Kindle Paperwhite et sans publicité
  • Le rétroéclairage fonctionne très bien et peut être désactivé, qui n'est pas possible sur le Kindle Paperwhite
  • L'autonomie de la batterie est incroyable
  • Les fonctionnalités de magasin Kobo sont plus subtiles et moins ennuyeux que les fonctionnalités de Barnes and Noble sur le Nook Simple Touch
  • Il dispose d'une fente pour cartes micro SD, ce qui est agréable bien que je n'en avais pas encore besoin de l'utiliser. Le Kindle Paperwhite ne dispose pas de ça non plus.
Les inconvénients :
  • Le bordure est au même niveau que l'écran. Il est joli, mais parce qu'il est si mince, il peut être difficile de tenir l'appareil sans toucher accidentellement l'écran.
  • L'écran n'enregistre pas toujours les touches. La plupart du temps appuyer sur l'écran une ou deux fois va tourner la page, mais il y a eu des moments où il fallait toucher l'écran trois ou même quatre fois avant qu'il répondait. Si l'appareil avait des boutons physiques pour tourner les pages ce ne serait pas un tel gros problème, mais à peu près tous les liseuses de ces jours ne les comprennent pas.
    Mise à jour : initialement j'avais un protecteur d'écran sur mon appareil et je crois qu'il a empêché les touches d'enregistrer aussi bien. Depuis que je l'ai enlevé, il faut rarement toucher l'écran plus d'une ou deux fois.
  • Le rétroéclairage de l'écran a beaucoup de lumière bleue. Pour être juste, il est le même que tous les autres liseuses, c'est donc plus une suggestion qu'une plainte énorme. Mais je pense que ce serait beaucoup plus logique d'avoir une lumière plus rougeâtre sur une liseuse qui sera moins perturbateur pour les cycles de sommeil. Pour cette raison, je laisse normalement éteint le rétro-éclairage, surtout si je lis avant de se coucher.
En général, je suis très heureux avec le Kobo Aura, malgré ses quelques inconvénients. Je le donnerais probablement un 9/10.

Si je devais acheter une liseuse en ce moment, je chercherais le Kobo Glo HD :
  • L'écran est légèrement en retrait (contrairement au Kobo Aura)
  • Amélioration de la résolution, correspond au Kindle Paperwhite 2015
  • Même prix ​​de détail que le Kobo Aura
  • Même si aucune fente pour carte micro SD annoncé, le stockage est extensible

Sunday, May 24, 2015

Moto G OTA update error


If you get an OTA (over-the-air) update for your Moto G and it fails, here's what you can do. First, a few requirements:

  • A Moto G. This may work with the Moto E or X as well. YMMV.
  • Retail Android. This goes without saying, but you won't get an OTA update unless you're running one of the stock/retail ROMs.
  • Your phone has been rooted or otherwise customized (custom boot logo, custom recovery, etc). This isn't a strict requirement, but it's probably the reason the update is failing in the first place.
  • These instructions were written for Linux, but they should run with minor adjustments on Mac and a few not-so-minor adjustments on Windows.
There are two main ways to go about resolving this:

Method 1: recommended
This method is the easiest and probably the fastest:
  1. (Recommended) Back up your phone in case something goes wrong

  2. Get the model number for your phone
    Settings → About phone → Hardware SKU

    Or:

  3. Get the build number for your phone
    SettingsAbout phoneBuild number

  4. Download the retail firmware for your phone corresponding to the phone's model and build numbers. You can download them from here:
    http://www.filefactory.com/folder/c6cdedc45a775d27

    For me, I had the Moto G XT1034 with build number KXB21.14-L1.61, so I downloaded this file:
    AWSRETAIL_XT1034_4.4.4_KXB21.14-L1.61_cid9_CFC.xml.zip

  5. Once the retail firmware has finished downloading, extract it

  6. Install the Android SDK tools

  7. Put your phone into fastboot mode. To do so, power off the phone, press and hold the volume down button, press power button, hold both for about 3 seconds and then let go

  8. Go to the folder where you extracted the retail firmware. Now we're going to restore the stock firmware without erasing the data partition (where all of your apps, settings, etc are stored):

    sudo fastboot flash boot boot.img
    sudo fastboot flash recovery recovery.img
    for file in system.img_sparsechunk.*; do sudo fastboot flash system $file; done
    sudo fastboot reboot


    If you're using Windows, you'll have to flash the system.img_sparsechunk files on at a time, for example:

    fastboot flash system system.img_sparsechunk.0
    fastboot flash system system.img_sparsechunk.1


    ... and so on.

  9. Now try the update again
    SettingsAbout phone → System updates

  10. If the update fails again, you have one of two options. If you don't mind wiping your phone and starting from scratch (which will erase everything), the easiest thing to do is to do fully restore the stock firmware. You'll put your phone into fastboot mode as before, but this time you're going to overwrite everything:

    sudo fastboot flash partition gpt.bin
    sudo fastboot flash motoboot motoboot.img
    sudo fastboot flash logo logo.bin
    sudo fastboot flash boot boot.img
    sudo fastboot flash bootloader bootloader.img
    sudo fastboot flash recovery recovery.img
    for file in system.img_sparsechunk.*; do sudo fastboot flash system $file; done
    sudo fastboot flash modem NON-HLOS.bin
    sudo fastboot erase modemst1
    sudo fastboot erase modemst2
    sudo fastboot flash fsg fsg.mbn
    sudo fastboot erase cache
    sudo fastboot erase userdata
    sudo fastboot reboot


    If, however, you don't want to completely wipe your phone and you don't mind getting your hands dirty, read on.

Method 2: advanced
  1. At a minimum, you will need to make sure the stock recovery is flashed. Follow the instructions above, flashing only the recovery:

    sudo fastboot flash recovery recovery.img
    sudo fastboot reboot

  2. Now try to apply the OTA update. If it fails, now the fun begins! First of all, if your phone isn't rooted, you'll need to root it to get access to the update log files. If you flash a custom recovery to root, then flash the stock recovery back (the OTA will fail with a custom recovery).

  3. Once your phone is rooted, connect to it using adb and look at the update log, which will be located in /cache/recovery/last_log

    adb shell
    su
    more last_log

  4. Look particularly at the end of the log file to see what went wrong. This is what mine said:

    script aborted: "/system/etc/install-recovery.sh" has unexpected contents.
    "/system/etc/install-recovery.sh" has unexpected contents.
    E:Error in /cache/Blur_Version.210.12.61.falcon_umts.AWSRetail.en.US.zip
    (Status 7)
    Installation aborted.


    You can see that apparently the file /system/etc/install-recovery.sh had been modified, probably from when I rooted the phone.

  5. If the file causing errors is in this list:
    • /system/bin/app_process32
    • /system/bin/app_process64
    • /system/bin/install-recovery.sh
    • /system/etc/install-recovery.sh

    • Then the problem is SuperSU itself, which modifies a bunch of files when it's installed. You'll need to restore the files from backup:

      cp /system/bin/app_process32_original /system/bin/app_process32
      cp /system/bin/app_process64_original /system/bin/app_process64
      cp /system/bin/install-recovery_original.sh /system/bin/install-recovery.sh
      cp /system/etc/install-recovery_original.sh /system/etc/install-recovery.sh

  6. If another file has been modified, you need to replace the original file. This will take some work. First, you'll need a special utility called simg2img. You can probably find a pre-built binary for your system. I just compiled it myself:

    sudo apt-get -y install build-essential git zlib1g-dev
    git clone https://android.googlesource.com/platform/system/core
    cd core/libsparse
    gcc -o simg2img -Iinclude simg2img.c sparse_crc32.c backed_block.c output_file.c sparse.c sparse_err.c sparse_read.c -lz
    sudo cp simg2img /usr/local/bin

  7. Go to the folder where you extracted the retail firmware, and you should have one or more files starting with system.img_sparsechunk. The next step is to combine them using simg2img:

    simg2img system.img_sparsechunk* system.raw.img.tmp

  8. Now we're going to extract the ext4 partition from the image file we made:

    offset=`LANG=C grep -aobP -m1 '\x53\xEF' system.raw.img.tmp | head -1 | awk '{print $1 - 1080}'`
    dd if=system.raw.img.tmp of=system.raw.img ibs=$offset skip=1

  9. Getting close! Now, we'll mount the image we just created:

    sudo mkdir /mnt/system
    sudo mount system.raw.img /mnt/system

  10. Now we should have access to all of the original files from the retail firmware. The next step is to copy them to the device. Here's what I did to copy /system/etc/install-recovery.sh:

    adb push /mnt/system/etc/install-recovery.sh /sdcard/

  11. Now connect to the device and get the mount point for the /system partition:

    adb shell
    mount | grep system

  12. Finally, remount /system as read-write, copy the file, and then remount /system as read-only. Don't forget to replace the mountpoints in my example (/dev/block/platform/msm_sdcc.1/by-name/system) with the mountpoint you got from the previous step:

    mount -o rw,remount /dev/block/platform/msm_sdcc.1/by-name/system /system
    cp /sdcard/install-recovery.sh /system/etc/install-recovery.sh
    mount -o ro,remount /dev/block/platform/msm_sdcc.1/by-name/system /system

  13. If you've made it this far, congratulations! Try the update again. Hopefully, as in my case, it will now work. If not, you'll have to look at the update log file again and see if there's anything else you missed. Thankfully it'll go much quicker now that you've already done all the prep work.

Moto G erreur de mise à jour OTA


Si vous recevez une mise à jour OTA (over-the-air) pour votre Moto G et il échoue, voici ce que vous pouvez faire. Tout d'abord, quelques exigences :

  • Un Moto G. Cela peut marcher avec le Moto E ou X ainsi.
  • Logiciel Android officiel. Vous ne recevez pas une mise à jour OTA sauf si vous avez Android officiel / stock.
  • Votre téléphone a été rooté ou autrement modifié (logo de démarrage modifié, recovery modifié, etc). Ce n'est pas une exigence stricte, mais c'est probablement la raison pour l'échec de la mise à jour en premier lieu.
  • Ces instructions ont été écrites pour Linux, mais ils doivent fonctionner avec des ajustements mineurs sur Mac et quelques ajustements pas si mineures sur Windows.
Maintenant les étapes :
  1. (Recommandé) Sauvegardez les données de votre téléphone au cas où quelque chose va mal

  2. Obtenez le numéro de modèle de votre téléphone
    1. Moto G 1st generation models
    2. Moto G 2nd generation models

  3. Obtenez le numéro de build pour votre téléphone
    ParamètresÀ propos du téléphoneNuméro de build

  4. Télécharger le firmware officiel pour votre téléphone correspondant au modèle du téléphone et le numéro de build. Vous pouvez le télécharger ici :
    http://www.filefactory.com/folder/c6cdedc45a775d27

    Pour moi, j'ai le Moto G XT1034 avec le numéro de build KXB21.14-L1.61, donc je l'ai téléchargé ce fichier :
    AWSRETAIL_XT1034_4.4.4_KXB21.14-L1.61_cid9_CFC.xml.zip

  5. Une fois le téléchargement du firmware officiel a fini, l'extrayez

  6. Télécharger Motorola fastboot (mfastboot), et l'extraire dans le même dossier que le firmware officiel
    https://www.androidfilehost.com/?fid=95916177934532795

  7. Mettez votre téléphone en mode fastboot. Pour ce faire, éteignez le téléphone, appuyez et maintenez le bouton d'alimentation, appuyez le bouton volume bas, tenir les deux à la fois pendant environ 3 secondes, puis lâcher

  8. Allez dans le dossier où vous avez extrait le firmware officiel. Maintenant, vous devez flasher ce que vous avez modifié. Dans mon cas, j'avais flashé un logo personnalisé et une recovery personnalisée, donc c'est ce que je faisais :

    chmod +x linux-fastboot
    sudo ./linux-fastboot flash logo logo.bin
    sudo ./linux-fastboot flash recovery recovery.img

  9. Si vous utilisez OS X, vous utiliserez osx-fastboot au lieu de linux-fastboot, et pour Windows, c'est mfastboot.

  10. Maintenant, essayez à nouveau la mise à jour
    Paramètres → À propos du téléphone → Mise à jour logicielles système

  11. Si la mise à jour échoue à nouveau, vous avez l'une des deux options. Si ça ne vous dérange pas d'effacer tous les données de votre téléphone et de partir de zéro, la meilleure chose à faire est de restaurer entièrement le firmware stock. Vous mettez votre téléphone en mode fastboot comme avant, mais cette fois vous allez écraser tout :

    sudo ./linux-fastboot flash partition gpt.bin
    sudo ./linux-fastboot flash motoboot motoboot.img
    sudo ./linux-fastboot flash logo logo.bin
    sudo ./linux-fastboot flash boot boot.img
    sudo ./linux-fastboot flash recovery recovery.img
    sudo ./linux-fastboot flash system system.img_sparsechunk.0
    sudo ./linux-fastboot flash system system.img_sparsechunk.1
    sudo ./linux-fastboot flash system system.img_sparsechunk.2
    sudo ./linux-fastboot flash modem NON-HLOS.bin
    sudo ./linux-fastboot erase modemst1
    sudo ./linux-fastboot erase modemst2
    sudo ./linux-fastboot flash fsg fsg.mbn
    sudo ./linux-fastboot erase cache
    sudo ./linux-fastboot erase userdata
    sudo ./linux-fastboot reboot


    Si vous avez des fichiers system.img_sparsechunk supplémentaires, assurez-vous de les tous flasher, par exemple :

    sudo ./linux-fastboot flash system system.img_sparsechunk.3
    sudo ./linux-fastboot flash system system.img_sparsechunk.4


    ... etc.

    Si, toutefois, vous ne voulez pas complètement effacer votre téléphone et ça ne vous dérange pas se salir les mains, lisez la suite.

  12. Maintenant, ça devient amusant ! Tout d'abord, si votre téléphone n'est pas rooté, vous aurez besoin de le rooter pour obtenir l'accès aux fichiers journals de la mise à jour.

  13. Une fois que votre téléphone est rooté, le connecter avec adb et regarder le journal de la mise à jour, qui sera situé dans /cache/recovery. Il y aura plusieurs fichiers journaux dans ce dossier, donc commencer avec le fichier le plus récent jusqu'à ce que vous trouviez celui que vous cherchez :

    adb shell
    su
    cd /cache/recovery
    ls -l
    more last_log.1

  14. Regardez en particulier la fin du fichier journal pour voir ce qui a mal tourné. Voici ce que le mien a dit :

    script aborted: "/system/etc/install-recovery.sh" has unexpected contents.
    "/system/etc/install-recovery.sh" has unexpected contents.
    E:Error in /cache/Blur_Version.210.12.61.falcon_umts.AWSRetail.en.US.zip
    (Status 7)
    Installation aborted.


    Vous pouvez voir que, apparemment, le fichier /system/etc/install-recovery.sh avait été modifié, probablement quand j'ai rooté le téléphone.

  15. Si comme moi votre journal d'erreur mentionne un fichier qui a été modifié, vous devez remplacer le fichier d'origine. Cela va prendre un certain travail. D'abord, vous aurez besoin d'un outil spécial appelé simg2img. Vous pouvez probablement trouver un binaire pré-construit pour votre système. Je l'ai simplement compilé moi-même :

    sudo apt-get -y install build-essential git zlib1g-dev
    git clone https://android.googlesource.com/platform/system/core
    cd core/libsparse
    gcc -o simg2img -Iinclude simg2img.c sparse_crc32.c backed_block.c output_file.c sparse.c sparse_err.c sparse_read.c -lz
    sudo cp simg2img /usr/local/bin

  16. Allez dans le dossier où vous avez extrait le firmware officiel, et vous devriez avoir un ou plusieurs fichiers commençant par system.img_sparsechunk. La prochaine étape est de les combiner à l'aide de simg2img :

    simg2img system.img_sparsechunk.* system.raw.img.tmp

  17. Maintenant, nous allons extraire la partition ext4 du fichier d'image que nous avons fait :

    offset=`LANG=C grep -aobP -m1 '\x53\xEF' system.raw.img.tmp | head -1 | awk '{print $1 - 1080}'`
    dd if=system.raw.img.tmp of=system.raw.img ibs=$offset skip=1

  18. Nous y sommes presque ! Maintenant, nous allons monter l'image que nous venons de créer :

    sudo mkdir /mnt/system
    sudo mount system.raw.img /mnt/system

  19. Maintenant, nous devrions avoir accès à tous les fichiers originaux du firmware officiel. La prochaine étape est de les copier sur le périphérique. Voici ce que j'ai fait pour copier /system/etc/install-recovery.sh :

    adb push /mnt/system/etc/install-recovery.sh /sdcard/

  20. Maintenant connecter à l'appareil et obtenir le point de montage pour la partition /system :

    adb shell
    mount | grep system

  21. Enfin, remonter /system en lecture-écriture, copier le fichier, puis remontez /system en lecture seule. Ne pas oublier de remplacer les points de montage dans mon exemple (/dev/block/platform/msm_sdcc.1/by-name/system) avec le point de montage que vous avez obtenu à l'étape précédente :

    mount -o rw,remount /dev/block/platform/msm_sdcc.1/by-name/system /system
    cp /sdcard/install-recovery.sh /system/etc/install-recovery.sh
    mount -o ro,remount /dev/block/platform/msm_sdcc.1/by-name/system /system

  22. Si vous avez rendu à ce point, félicitations! Essayez à nouveau la mise à jour. Espérons que, comme dans mon cas, il va maintenant travailler. Si non, vous devez regarder à nouveau le fichier journal de la mise à jour et voir si il y a autre chose que vous avez manqué. Heureusement ça va aller beaucoup plus vite maintenant que vous avez déjà fait tout le travail de préparation.

Saturday, November 8, 2014

Android: The import javax.annotation cannot be resolved


I was trying to compile some code from AOSP (Android Open Source Project), and I ran into this error:

The import javax.annotation cannot be resolved

Caused by this code:

import javax.annotation.concurrent.GuardedBy;
import javax.annotation.concurrent.ThreadSafe;


The solution was actually really easy:
  1. Go here:
    http://mvnrepository.com/artifact/com.google.code.findbugs/jsr305

  2. In the Version column click on the latest version number

  3. Click Download ( JAR )

  4. Copy the downloaded JAR file to the libs folder in your Android project (create the libs folder if it doesn't already exist).

Android: The import javax.annotation cannot be resolved


J'essayais de compiler du code de AOSP (Android Open Source Project), et je suis tombé sur cette erreur :

The import javax.annotation cannot be resolved

Causée par ce code :

import javax.annotation.concurrent.GuardedBy;
import javax.annotation.concurrent.ThreadSafe;


La solution était en fait très simple :
  1. Rendez-vous ici :
    http://mvnrepository.com/artifact/com.google.code.findbugs/jsr305

  2. Dans la colonne Version cliquez sur le dernier numéro de version 

  3. Cliquez sur Download ( JAR )

  4. Copiez le fichier JAR téléchargé au dossier libs dans votre projet Android (créez le dossier libs si elle n'existe pas déjà).

Saturday, November 1, 2014

Using Exchange without Outlook


There are some good alternatives to Microsoft Exchange, for instance Zimbra. If your experience is like mine, however, most places use Exchange. Up until now, there haven't been many good options for using Exchange without Outlook. Support for Exchange calendar integration in particular has been lacking. But now there's a great option for using Exchange without Outlook, and you can set it up in less than 15 minutes:

  1. Install Thunderbird

  2. Install the Lightning calendar extension
    1. Download it from here:
      https://www.mozilla.org/projects/calendar/

    2. To install, open the downloaded .xpi extension file with Thunderbird. If that isn't an option:
      1. Open Thunderbird and go to the Tools menu → Add-ons

      2. Click the button to the left of the Search bar → Install Add-on From File

      3. Browse to the extension file and select it → Open

      4. Click Install Now

      5. Click the Restart Now button near the top right

      6. When Thunderbird reopens, close the Add-ons Manager tab

    3. You can also install it as a package in Debian/Ubuntu/Elementary (I normally prefer to download it to get the latest version):
      sudo apt-get -y install xul-ext-lightning

  3. Install the Exchange EWS Provider extension
    1. Download it from here:
      https://github.com/Ericsson/exchangecalendar/releases

    2. Unzip it

    3. Follow the instructions above for installing the Lightning extension to install the Exchange EWS Provider extension

  4. Set up your Exchange email
    1. If you haven't set up your Exchange email address yet, you can do so by using the following instructions. You may need to get the server addresses (IMAP/POP/SMTP) from your system administrator or IT department:
      https://support.mozilla.org/kb/manual-account-configuration

  5. Set up your Exchange calendar
    1. Open Thunderbird and then open the Calendar tab (Events and Tasks menu → Calendar)

    2. Right-click in the Calendar section in the lower-left side of the screen → New Calendar

    3. Select On the Network → Next

    4. Select Microsoft Exchange 2007/2010/2013 → Next

    5. Give it a name, select your email address, and click Next

    6. Check Use Exchange's autodiscovery function, enter your primary email address, Active Directory username, and Active Directory domain name. Then click Perform autodiscovery

    7. Enter your password when prompted

    8. The EWS server URL should automatically be detected. When it is, click Select

    9. Enter your password again if prompted

    10. You should be brought back to the Create New Calendar dialog. Click Next → Finish

    11. Your calendar should now be populated with your Exchange calendar events

  6. Set up your Exchange address book
    1. In Thunderbird go to the Tools menu → Address Book

    2. Click Add Exchange contact folder

    3. Give it a name

    4. Check Add global address list to search results (otherwise, it will only use your personal address book in Exchange)

    5. Check Use Exchange's autodiscovery function

    6. Enter your primary email address, Active Directory username, and Active Directory domain name, then click Perform autodiscovery

    7. The EWS server URL should automatically be detected. When it is, click Select

    8. You should be brought back to the Exchange Contact Settings dialog. Click Save

    9. Now you can search for a contact in Exchange by selecting Exchange contacts on the left and then using the search box in the upper right. Contacts will also be auto-populated when composing new emails.
There are other options out there for Outlook alternatives. One I tried is DavMail Gateway. Compared to Exchange EWS Provider, however, it used a lot of memory because it ran as a Java application in the background. It also didn't handle calendar events as well; for instance, if a calendar event was moved to a different time, it would show up under the new time as well as the old time.

Utiliser Exchange sans Outlook


Il y a quelques bonnes alternatives à Microsoft Exchange, par exemple Zimbra. Si votre expérience est comme la mienne, cependant, la plupart des entreprises utilisent Exchange. Jusqu'à présent, il n'y a pas eu beaucoup de bonnes options pour utiliser Exchange sans Outlook. Le support pour l'intégration des agendas d'Exchange en particulier a fait défaut. Mais maintenant il y a une excellente option pour utiliser Exchange sans Outlook, et vous pouvez le configurer en moins de 15 minutes :

  1. Installez Thunderbird

  2. Installez l'extension d'agenda Lightning
    1. Téléchargez-le ici :
      https://www.mozilla.org/projects/calendar/

    2. Pour l'installer, ouvrez le fichier d'extension .xpi téléchargé avec Thunderbird. Si ce n'est pas une option :
      1. Ouvrez Thunderbird et allez dans le menu Outils → Modules complémentaires 

      2. Cliquez sur le bouton à gauche de la barre de recherche → Installer un module depuis un ficher

      3. Trouver le fichier d'extension et le sélectionnez → Ouvrir

      4. Cliquez sur Installer

      5. Cliquez sur le bouton Redémarrer maintenant en haut à droite

      6. Lorsque Thunderbird rouvre, fermer l'onglet Gestionnaire de modules complémentaires

    3. Vous pouvez aussi l'installer comme un paquet dans Debian/Ubuntu/Elementary (je préfère normalement à le télécharger pour obtenir la dernière version):
      sudo apt-get -y install xul-ext-lightning

  3. Installez l'extension Exchange EWS Provider
    1. Téléchargez-le ici :
      https://github.com/Ericsson/exchangecalendar/releases

    2. Le décompressez

    3. Suivez les instructions ci-dessuspour l'installation de l'extension Lightning pour installer l'extension Exchange EWS Provider

  4. Configurez votre courriel Exchange
    1. Si vous ne l'avez pas encore mis en place votre courriel Exchange, vous pouvez le faire en suivant les instructions suivantes. Vous devrez peut-être obtenir les adresses de serveur (IMAP/POP/SMTP) de votre administrateur système ou votre département informatique :
      https://support.mozilla.org/kb/manual-account-configuration

  5. Configurez votre agenda Exchange
    1. Ouvrez Thunderbird et puis ouvrez l'onglet Agenda (menu Évènements et tâches  Agenda)

    2. Faites un clic droit dans la section Agendas dans le coin en bas à gauche de l'écran → Nouvel agenda

    3. Sélectionnez Sur le réseauSuivant

    4. Sélectionnez Microsoft Exchange 2007/2010/2013Suivant

    5. Entrez un nom, sélectionnez votre adresse courriel, et cliquez sur Suivant

    6. Cochez Utiliser la fonction de découverte automatique d’Exchange, entrez votre adresse courriel principale, nom d'utilisateur Active Directory, et nom de domaine Active Directory. Puis cliquez sur Lancer la découverte automatique

    7. Entrez votre mot de passe lorsque vous êtes invité

    8. L'URL du serveur EWS doit être détecté automatiquement. Puis cliquez sur Sélection

    9. Entrez de nouveau votre mot de passe si vous êtes invité

    10. Vous devez être ramené à la boîte de dialogue Créer un nouveau agenda. Cliquez sur Suivant → Terminer

    11. Votre agenda doit maintenant être rempli avec les événements d'agenda Exchange 

  6. Configurez votre carnet d'adresses Exchange
    1. Dans Thunderbird allez dans le menu Outils Carnet d’adresses

    2. Cliquez sur Ajouter un ficher de contacts Exchange

    3. Entrez un nom

    4. Cocher Ajouter la liste globale d’adresses aux résultats de recherche (sinon, il ne utiliser que votre carnet d'adresses personnel dans Exchange)

    5. Cocher Utiliser la fonction de découverte automatique d'Exchange

    6. Entrez votre adresse courriel principale, nom d'utilisateur Active Directory, et nom de domaine Active Directory. Puis cliquez sur Lancer la découverte automatique

    7. L'URL du serveur EWS doit être détecté automatiquement. Puis cliquez sur Sélection

    8. Vous devez être ramené à la boîte de dialogue Exchange Contact Settings. Cliquez sur Sauvegarder

    9. Maintenant, vous pouvez rechercher un contact dans Exchange en sélectionnant Exchange contacts sur la gauche, puis en utilisant la boîte de recherche en haut à droite. Les contacts seront également généré automatiquement lors de la composition de nouveaux courriels.
Il y a d'autres options qui existent pour les alternatives Outlook. L'un d'eux que j'ai essayé est DavMail Gateway. Par rapport à Exchange EWS Provider, cependant, il utilise beaucoup de mémoire car il fonctionne comme application Java en arrière-plan. Il n'a pas non plus géré les événements d'agenda bien; par exemple, si un événement d'agenda a été replanifié à un autre moment, il se présenterait sous la nouvelle heure ainsi que l'ancien heure.

Saturday, October 25, 2014

HERE Maps: The best free map/navigation app


I've long been an advocate of phone apps that work with no internet connection. When it comes to map/navigation apps, there are several important reasons for offline use:
  1. Like myself, there are people who—gasp—don't have a data plan on their phone
  2. Others have limited data plans, and map apps can use a lot of data
  3. Even for those with unlimited data plans, there are still many places where cellular coverage is bad or even nonexistent
  4. Lastly, it's really nice to have if you travel outside of your country and have no cellular service
Unfortunately, the most popular maps app—Google Maps—is terrible when it comes to offline use:
  1. You can download portions of maps for offline use, but the size of the area you can download is limited (you can't download an entire US state, for instance)
  2. Navigation doesn't work offline at all
  3. When offline you won't see any place names like businesses, parks, etc.
There are some free map apps out there that can be used offline, but they have limited capabilities and often ads. So that means if you want offline use, your best option is to pay for an expensive premium maps app.

But as of this week, there's a premium maps app that works offline, and it's free! I give you: HERE Maps.

HERE Maps has actually been around for a long time under other names (NAVTEQ/Ovi Maps/Nokia Maps). They're actually one of only four big map sources (the others being Google, OpenStreetMap, and TomTom), and they license their maps to many others, like Garmin and Yahoo.

Here are some of the features that HERE Maps offers:
  • Download countries and regions ahead of time for offline use
  • Maps in nearly 200 countries, and turn-by-turn navigation in nearly 100 countries
  • Full street addresses
  • Alternate routes
  • Points of interest
  • Traffic
  • Public transit
  • Speed limits
Ready to try it? Go here to read how to get it and install it:
HERE for Android unleashed on more smartphones!

Once you've got it installed, here are some great tips for getting started:
Getting started with HERE for Android: the basics

If you have an iPhone, HERE Maps should be available for you before the end of 2014.

HERE Maps : La meilleure appli gratuit de cartes/navigation


J'ai longtemps été un défenseur d'applications téléphoniques qui fonctionnent sans connexion internet. Quand il s'agit des applis de cartes/navigation, il y a plusieurs raisons importantes pour l'utilisation hors connexion :
  1. Comme moi, il ya des gens qui—oui—ne pas ont un plan de données sur leur téléphone 
  2. D'autres ont les plans de données limités, et les applis de cartes peuvent utiliser beaucoup de données 
  3. Même pour ceux qui ont des plans de données illimités, il y a encore beaucoup d'endroits où la couverture cellulaire est mauvaise, voire inexistante
  4. Enfin, il est vraiment agréable de l'avoir si vous voyager à l'extérieur de votre pays et n'ont pas de service cellulaire 
Malheureusement, l'appli de cartes le plus populaire—Google Maps—est terrible quand il s'agit de l'utilisation hors ligne :
  1. Vous pouvez télécharger des parties de cartes pour l'utilisation hors ligne, mais la taille de la zone que vous pouvez télécharger est limité (vous ne pouvez pas télécharger un état des États-Unis tout entier, par exemple) 
  2. La navigation ne fonctionne pas du tout hors ligne
  3. En mode hors ligne, vous ne verrez pas de noms de lieux comme les entreprises, les parcs, etc. 
Il y a quelques applis gratuits qui peuvent être utilisés hors ligne, mais ils ont des capacités limitées et souvent des publicités. Ça signifie donc que si vous voulez l'utilisation hors connexion, votre meilleure option est de payer pour une appli de cartes haut de gamme coûteuse.

Mais à partir de cette semaine, il y a une appli de cartes haut de gamme qui fonctionne hors ligne, et c'est gratuit! Je vous présente: HERE Maps.

HERE Maps en réalité existait depuis longtemps sous d'autres noms (NAVTEQ / Ovi Maps / Nokia Maps). Ils sont en fait l'une des quatre grandes sources de cartes (les autres étant Google, OpenStreetMap, et TomTom), et ils vendent leurs cartes à beaucoup d'autres, comme Garmin et Yahoo.

Voici quelques-unes des caractéristiques qui HERE Maps incluent :
  • Télécharger les pays et les régions à l'avance pour l'utilisation hors connexion 
  • Les cartes dans près de 200 pays, et la navigation tour-par-tour dans près de 100 pays 
  • Les adresses de rue complète
  • Les routes alternatives
  • Les points d'intérêt 
  • La circulation
  • Le transport en commun 
  • Les limites de vitesse
Prêt à l'essayer? Allez ici pour lire comment l'obtenir et l'installer :
HERE for Android unleashed on more smartphones!

Une fois que vous l'avez installé, voici quelques conseils pour commencer :
Getting started with HERE for Android: the basics

Si vous avez un iPhone, HERE Maps devrait être disponible pour vous avant la fin de l'année 2014.

Saturday, October 11, 2014

The Moto G one year on


I've never owned a brand-new smartphone. For those like me who opt for contract-free, inexpensive phone service, buying a new smartphone is cost prohibitive when the carrier isn't subsidizing the price in order to lock you in to a contract with a high monthly rate.

A little under a year ago, Motorola changed that when they announced the Moto G. Even before I bought one for a family member, I could tell it was the phone I'd been waiting for for a long time. No bells, no whistles, just things I cared about: performance, durability, battery life, and up-to-date software. All this at a price that meant someone like me could actually afford a brand-new smartphone that was actually worth buying.

Since that time, at my recommendation, a handful of friends and family members have also bought the Moto G, and they've all been quite happy. It lived up to my expectations, and continues to do so. Here are my impressions almost a year on:
  • Motorola has kept their word, and up to this point the Moto G is still running the latest version of Android
  • It's lightning fast, especially with ART enabled
  • The battery life is incredible, often going 2-3 days in between charges (with data off, which helps)
  • The price to this day remains competitive, and I've seen it sell for as little as $50 through carriers
  • It's quite durable, and I haven't had any need to take advantage of the included one-year warranty
  • Motorola has gone above and beyond by periodically providing fun boot animations
In case you're considering picking one up, there are currently 3 models:
  • First-generation Moto G
    • The original. This is the model that most carriers are selling. Unfortunately they're also mostly selling the 8 GB model, which isn't much storage. I would only recommend this one if your priority is saving money, or if you're sure you won't need the extra storage.
  • Moto G 4G
    • Released in June, identical to the first-gen Moto G but with an added SD card slot and LTE. This is the model I recommend for those that want to be able to use their phone with one hand.
  • Second-generation Moto G
    • Just released, the camera is upgraded, the speaker is moved to the front, an SD card slot is added, and the screen size is increased to 5 inches. I'd recommend this model to anyone who wants a big screen and doesn't necessarily need to use it with one hand.

Le Moto G un an après


Je n'ai jamais possédé un smartphone flambant neuf. Pour ceux comme moi qui optent pour un service de téléphone bon marché et sans contrat, l'achat d'un nouveau smartphone est prohibitif lorsque l'opérateur ne subventionne pas le prix afin de vous enfermer dans un contrat avec un taux mensuel élevé.

Il y a un an presque, Motorola a changé ça quand ils ont annoncé la Moto G. Même avant j'en ai acheté un pour un membre de la famille, je pourrais dire que c'était le téléphone que j'avais attendu depuis longtemps. Sans fanfreluches et tralalas, seulement des choses que je voulais : la performance, la durabilité, l'autonomie, et le logiciel à jour. Tout ça à un prix qui signifiait que quelqu'un comme moi puisse se permettre un tout nouveau smartphone qui était une vrai valeur d'achat.

Depuis ce temps, sur ma recommandation, une poignée d'amis et de membres de la famille ont également acheté le Moto G, et ils ont tous été très heureux. Il était et est à la hauteur de mes attentes. Voici mes impressions presque un an après :
Dans le cas où vous envisagez d'en acheter un, il y a actuellement 3 modèles :
  • Moto G de première génération
    • L'original. C'est le modèle que la plupart des opérateurs vendent. Malheureusement, ils aussi vendent le modèle de 8 Go pour la plupart, ce qui n'est pas beaucoup de stockage. Je recommanderais celui-ci seulement si votre priorité est de vous faire économiser de l'argent, ou si vous êtes sûr que vous n'aurez pas besoin de stockage supplémentaire. 
  • Moto G 4G 
    • Sorti en juin, identique au Moto G de première génération mais avec un emplacement pour une carte SD et le LTE ajouté. C'est le modèle que je recommande pour ceux qui veulent utiliser leur téléphone avec une seule main. 
  • Moto G de deuxième génération
    • Vient de sortir, l'appareil photo est mis à niveau, le haut-parleur est déplacé vers l'avant, une fente pour carte SD est ajouté, et la taille de l'écran est augmentée à 5 pouces. Je recommande ce modèle-ci à tous ceux qui veulent un grand écran et ne doit pas nécessairement l'utiliser avec une seule main.

Saturday, October 4, 2014

Android device keeps asking for adb authorization


My Android device kept asking me for authorization every time I would plug it into a certain computer. I knew it wasn't the device, because it worked fine with other computers.

Here's what worked:

  1. Delete the ADB key on the local machine
    rm ~/.android/adbkey*

  2. Restart the ADB server to recreate the key
    adb kill-server && adb start-server
That's it! The next time I connected to that computer, it asked me for authorization (since I had a new key), but it hasn't asked me since.

Appareil Android ne cesse de demander d'autorisation adb


Mon appareil Android n'arrêtait pas de me demander l'autorisation chaque fois que je le brancher sur un ordinateur donné. Je savais que ce n'était pas l'appareil, car il a bien fonctionné avec d'autres ordinateurs.

Voici ce qui a fonctionné :

  1. Supprimez la clé ADB sur l'ordinateur locale
    rm ~/.android/adbkey*

  2. Redémarrez le serveur ADB pour recréer la clé
    adb kill-server && adb start-server
C'est tout ! La prochaine fois que j'ai connecté à cet ordinateur là, il m'a demandé l'autorisation (puisque j'ai eu une nouvelle clé), mais il ne me l'a pas demandé depuis.

Friday, September 26, 2014

Using your gamepad with Steam games


So I recently picked up a game called Brothers: A Tale of Two Sons. I noticed that it said it requires a controller to play, but it also said "full controller support," so I thought it'd work fine with my old Gravis gamepad. So I started the game, and there was no controller option at all. What gives?

Well, Steam doesn't make this very clear, but buried in the support page for Big Picture mode, apparently full controller support only applies to two controllers: the Xbox 360 controller, and the Logitech F710 controller. Not only that, but apparently it only means that the controllers are guaranteed to work in Big Picture mode. So controller support for games is on a game-by-game basis. Great...

Thankfully, there's a solution! Here goes:

  1. First of all, just start your game and see if your controller works. Who knows, maybe it's supported. Of course, if it worked, you probably wouldn't be here...

  2. If you have a Playstation 3 controller, there's a special tool just for you called the MotionInJoy DS3 Tool.

  3. For the rest of us, there's a tool called x360ce that allows gamepads to emulate the Xbox 360 controller. So go to the x360ce downloads page and download the file that starts with  x360ce.App as well as one of the lib files. Most games are 32-bit, so you'll want the lib32 file. If you know if your game is 64-bit, however, download the lib64 file.

  4. Now open the game folder. The easiest way to do this is open Steam, right-click the game → Properties → Local Files → Browse Local Files. From there you'll need to browse to the folder where the main executable is to the game. This varies by game, but it's often a file with the same name and icon as the game.

    For Brothers: A Tale of Two Sons, the full path to the main executable (unless you install Steam in a non-standard location) is C:\Program Files (x86)\Steam\steamapps\common\Brothers - A Tale of Two Sons\Binaries\Win32

  5. Open the lib zip file you downloaded and copy the xinput1_3.dll file inside of it to the folder with the game executable that you just opened.

  6. Now open the app zip file that you downloaded, copy the x360ce.exe file inside of it also to the game executable folder, then run it.

  7. Plug your controller in if it isn't already plugged in.

  8. Click Yes when prompted to create the x360ce.ini file.

  9. You should get a popup to search the internet for settings for your controller, so click Next → Finish.

  10. Click OK if you get a warning message about the version of the configuration file. Unfortunately this message will pop up every time you start the game. If it annoys you too much, you can delete the xinput1_3.dll file and reopen x360.exe to recreate an older version of the file, but this may cause problems for certain controllers (it did for mine).

  11. On the controller tab that pops up, try out your controller and make sure it matches up with what's on the screen. If for some reason it doesn't (left and right were reversed on my left analog stick), click the Settings Database tab and then the Global Settings tab within that tab. Double-click on one of the settings to apply it, then go back to the controller tab to see if it worked. Repeat until you find one that works. If you don't find one that works, you'll have to adjust the settings manually.

  12. Once you've found settings that work for your controller, click Save and then close the window.
If you've done everything right, you should now be able to use your controller in your game. Open it up and give it a shot!

Utilisez votre manette de jeu avec des jeux Steam


J'ai récemment acheté un jeu appelé Brothers: A Tale of Two Sons. J'ai remarqué qu'il a besoin d'une manette de jeu, mais il a aussi dit « support manette complet, » alors j'ai pensé que ça fonctionnerait très bien avec ma vielle manette Gravis. Alors j'ai commencé le jeu, et il n'y avait pas d'option de manette de jeu du tout. Mais qu'est-ce qui se passe là ?

Eh bien, Steam ne le fait pas très clair, mais enfoui dans la page de soutien pour le mode Big Picture, apparemment support manette complet s'applique uniquement aux deux manettes: la manette de la Xbox 360, et la manette de Logitech F710. Non seulement ça, mais apparemment, ça signifie seulement que les manettes sont garantis de marcher en mode Big Picture. Donc, le soutien de manette dépend complètement du jeu individuel. Super ...

Heureusement, il y a une solution! On y va :

  1. Tout d'abord, commencer votre jeu et voir si votre manette fonctionne. Qui sait, peut-être elle va marcher. Bien sûr, si ça fonctionnait, vous ne seriez probablement pas ici ...

  2. Si vous avez une manette Playstation 3, il y a un outil spécial pour vous qui s'appelle MotionInJoy DS3 Tool.

  3. Pour le reste d'entre nous, il y a un outil appelé x360ce qui permet aux manettes d'émuler le contrôleur Xbox 360. Alors, allez à la page de téléchargements de x360ce et télécharger le fichier qui commence par x360ce.App ainsi que l'un des fichiers lib. La plupart des jeux sont 32 bits, de sorte que vous aurez besoin du fichier lib32. Si vous savez si votre jeu est en 64 bits, cependant, téléchargez le fichier lib64.

  4. Maintenant, ouvrez le dossier du jeu. La meilleure façon de le faire est d'ouvrir Steam, cliquez avec le bouton droit sur le jeu → Propriétés → Fichiers locaux → Parcourir les fichiers locaux. De là, vous aurez besoin de naviguer dans le dossier où se trouve le fichier exécutable principal. Ça varie selon le jeu, mais il est souvent un fichier avec le même nom et l'icône que le jeu.

    Pour Brothers: A Tale of Two Sons, le chemin complet de l'exécutable principal (sauf si vous installez Steam dans un emplacement non-standard) est C:\Program Files (x86)\Steam\steamapps\common\Brothers - A Tale of Two Sons\Binaries\Win32

  5. Ouvrez le fichier zip de lib vous avez téléchargé et copiez le fichier xinput1_3.dll dedans au dossier de l'exécutable du jeu que vous venez d'ouvrir.

  6. Maintenant, ouvrez le fichier zip de l'application que vous avez téléchargé, copiez le fichier de x360ce.exe dedans également au dossier exécutable du jeu, puis exécutez-le.

  7. Branchez votre contrôleur s'il n'est pas déjà branché.

  8. Cliquez sur Yes lorsque vous êtes invité à créer le fichier x360ce.ini.

  9. Vous devriez voir une fenêtre pour rechercher sur l'Internet pour les paramètres de votre contrôleur, alors cliquez sur Next → Finish.

  10. Cliquez sur OK si vous voir un message d'avertissement à propos de la version du fichier de configuration. Malheureusement, ce message apparaîtra à chaque fois que vous démarrez le jeu. Si ça vous ennuie trop, vous pouvez supprimer le fichier de xinput1_3.dll et rouvrir x360.exe pour recréer une version plus ancienne du fichier, mais ça peut causer des problèmes pour certains contrôleurs (il l'a fait pour le mien).

  11. Dans l'onglet de contrôleur qui apparaît, essayer votre manette et vous assurer qu'il correspond avec ce qui est sur ​​l'écran. Si pour quelque raison ce n'est pas le cas (la gauche et la droite ont été renversée sur mon stick analogique gauche), cliquez sur l'onglet Settings Database, puis sur l'onglet Global Settings dans cet onglet. Double-cliquez sur l'un des paramètres à appliquer, puis revenir à l'onglet du contrôleur pour voir si ça a fonctionné. Répétez jusqu'à ce que vous trouviez les paramètres qui fonctionnent. Si vous ne trouvez pas les paramètres qui fonctionnent, vous devrez ajuster les paramètres manuellement.

  12. Une fois que vous avez trouvé les réglages qui marchent pour votre manette, cliquez sur Save, puis fermez la fenêtre.
Si vous avez tout fait correctement, vous devriez maintenant être en mesure d'utiliser votre contrôleur dans votre jeu. Ouvrez-le et tenter le coup!

Saturday, September 6, 2014

The best task/to-do app for Android

I blogged a while back about there not being a viable replacement for the amazing Astrid Tasks task/to-do list app. Fortunately, that is no longer the case. I present to you: Tasks. Simple name, serious app.

Tasks essentially is the next version of Astrid. Since the Android version of Astrid was open-source, someone has picked up where Astrid left off after it was acquired by Yahoo, which means we still have a decent task/to-do list app for those of us who need more than the watered-down alternatives out there.

You can read my afore-mentioned post to see which specific apps I tried, but suffice it to say none of them had the features that Astrid did. In particular, I couldn't find these two features in any other app:

  • The ability to hide tasks until a certain date
  • The ability to repeat tasks based on when they were completed (instead of just when they were originally due)
What makes Astrid (and now Tasks) incredible is it hides all of those powerful features under a nice, clean interface, which makes it actually enjoyable to use.

So what are you waiting for? You can get Tasks for Android now from the Google Play Store.

Unfortunately, while Astrid was available for Android and iOS, the iOS version of Astrid wasn't open-source. So for those of you with an iPhone/iPad, you'll have to look elsewhere for a great task/to-do list app.

La meilleure appli de liste des tâches pour Android

J'ai blogué il y a longtemps qu'il n'y avait aucun remplacement viable pour l'appli Astrid liste de tâches. Heureusement, ce n'est plus le cas. Je vous présente: Tasks. Nom simple, une appli sérieuse.

Tasks est essentiellement la prochaine version d'Astrid. Depuis la version Android de Astrid était open-source, quelqu'un a repris où Astrid a lâché après son acquisition par Yahoo, ce qui signifie que nous avons encore une appli décente de liste de tâches pour ceux d'entre nous qui ont besoin de plus que les alternatives édulcorés qui sont nombreuses.

Vous pouvez lire mon post mentionné ci-dessus pour voir quelles applis spécifiques j'ai essayé, mais il suffit de dire qu'aucun d'eux n'avait les fonctionnalité que Astrid a eu. En particulier, je ne pouvais pas trouver ces deux fonctions dans toute autre application:

  • La capacité de masquer les tâches jusqu'à une certaine date 
  • La capacité de répéter des tâches basée sur quand ils ont été complétés (au lieu de simplement quand ils étaient à l'échéance) 
Ce qui rend Astrid (et maintenant Tasks) incroyable, c'est qu'il cache l'ensemble de ces fonctionnalités puissantes sous un interface beau et propre, ce qui le rend réellement agréable à utiliser.

Alors qu'attendez-vous ? Vous pouvez obtenir Tasks pour Android maintenant du Google Play Store.

Malheureusement, alors que Astrid était disponible pour Android et iOS, la version iOS de Astrid n'était pas open-source. Donc, pour ceux d'entre vous avec un iPhone / iPad, vous aurez à chercher ailleurs une tellement super appli des tâches.

Sunday, August 31, 2014

Installing Android KitKat (4.4) on a Canadian Galaxy S II (I9100M)

I love my Galaxy S II (I9100). I don't have much to say for anything Samsung's released since then, but the Galaxy S II is one of the nicest phones I've ever owned. Unfortunately, Samsung's version of Android (called TouchWiz) is terrible, and they haven't released any updates for the phone in well over a year.

Determined to squeeze some more life out of my I9100, I installed Android KitKat, but for some reason the Bluetooth audio would not work at all. It would connect to the phone just fine, but whenever I placed a call I couldn't hear anything. I tried several different ROMs (CyanogenMod, OmniROM, SlimROM), and they all had the same problem.

I finally figured out my problem. For some reason the software on the Canadian version of the I9100 (the I9100M) is slightly different. To fix it, all I had to do was flash the stock I9100 software from Samsung onto my phone first. Now it works great with every custom KitKat ROM I've tried.

Okay, so first of all, these instructions are specific to Linux, but they should work fine on Mac and Windows. On Mac they'll be nearly identical, but they'll need to be tweaked to work on Windows (for example, you won't use the sudo command but may need to open the command line as an administrator). On Windows you'll probably also need some extra tools, like the Samsung USB Driver and 7-Zip for extracting tar files.

Second, a couple useful procedures:

Boot to recovery mode:
  1. If the phone is plugged into a USB cable or charger, unplug it
  2. Power off the phone
  3. Press and hold the volume up, home, and power buttons (you can let go once you see the I9100 screen)
Preparing for flashing using Heimdall:
  1. If the phone is plugged into a USB cable or charger, unplug it
  2. Power off the phone
  3. Boot the phone to download mode by pressing and holding the volume down, home, and power buttons (you can let go once you see the warning screen)
  4. Press the volume up button to continue past the warning screen
  5. Plug your phone into your computer using a USB cable
  6. Make sure heimdall can see your phone
    sudo heimdall detect
And now the steps to install KitKat:
  1. Download prerequisites
    1. The big thing you'll need is a stock I9100 (not I9100M) ROM. I used I9100XWMS2, but I'm not sure it matters which one you download (although it should be a Jelly Bean 4.1 ROM):
      http://www.sammobile.com/firmwares/3/?download=24707

    2. Heimdall, which is an open-source tool for flashing stock Samsung firmware (ROMs)

    3. This ClockworkMod kernel image:
      https://www.androidfilehost.com/?fid=24539867161559149

    4. The KitKat ROM you wish to install. There are many to choose from. I personally like CyanogenMod, which is the most popular and has been the most stable in my experience. OmniROM is a new up-and-coming ROM that looks promising, but when I tried it it was a little too buggy for my preference.

    5. The latest PA Google apps. Download the pico modular package (you can install other Google apps manually through the Play Store):
      http://forum.xda-developers.com/showthread.php?t=2397942

  2. Next, you need to be rooted. There are lots of ways to accomplish this, but I used Root_SuperSU.0.96-Busybox.1.20.2-S2-signed.zip from here and it worked fine:
    http://forum.xda-developers.com/galaxy-s2/orig-development/04-12-2012-universal-rooting-phones-rom-t1746794. You can flash it by copying it to your SD card and using recovery mode (see above).

  3. Now, back up any apps and data you wish. My preferred method for this is Titanium Backup.

  4. Copy the KitKat ROM and the PA Google apps package to either your SD card or internal storage on your phone.

  5. (Optional but highly recommended) Do a Nandroid backup, just in case
    1. Prepare your phone for Heimdall by following the instructions at the top of this post.

    2. Go to where you downloaded the ClockworkMod kernel image and flash it:
      sudo heimdall flash --KERNEL cwmr6047.img --no-reboot

    3. If for some reason it fails, redo the steps for preparing your phone for Heimdall and try again.

    4. Put the phone into recovery mode by following the instructions at the top of this post.

    5. Once you're in recovery mode, use the volume down button to highlight backup and restore. Once you've highlighted it, press the power button to select it. Then select Backup.

  6. Flash the stock Samsung ROM (if your phone isn't a Canadian Galaxy SII I9100M, you can skip this part)
    1. Extract the stock Samsung ROM
      unzip I9100XWMS2_I9100VODLSF_VOD.zip
      mkdir I9100XWMS2
      cd I9100XWMS2
      tar xvf ../I9100XWMS2_I9100BULS3_I9100VODLSF_HOME.tar.md5

    2. Prepare your phone for Heimdall by following the instructions at the top of this post.

    3. Flash the stock Samsung firmware by running this command from the same folder you extracted the firmware to:
      sudo heimdall flash --BOOT boot.bin --CACHE cache.img --FACTORYFS factoryfs.img --HIDDEN hidden.img --MODEM modem.bin --PARAM param.lfs --SBL1 Sbl.bin --KERNEL zImage --no-reboot

    4. If for some reason it fails, redo the steps for preparing your phone for Heimdall and try again.

    5. Once it's finished, put the phone into recovery mode by following the instructions at the top of this post.

    6. Once you're there, use the volume down button to highlight wipe data/factory reset. Once you've highlighted it, press the power button to select it. Then select Yes. Now select reboot system now.

    7. When it's finished booting, power the phone off.

  7. Flash the KitKat ROM
    1. Prepare your phone for Heimdall by following the instructions at the top of this post.

    2. Go to where you downloaded the ClockworkMod kernel image and flash it:
      sudo heimdall flash --KERNEL cwmr6047.img --no-reboot

    3. If for some reason it fails, redo the steps for preparing your phone for Heimdall and try again.

    4. Put the phone into recovery mode by following the instructions at the top of this post.

    5. Once you're there, use the volume down button to highlight install zip. Once you've highlighted it, press the power button to select it. Then select choose zip from /storage/sdcard0 (if you copied the KitKat ROM to internal storage) or choose zip from /storage/sdcard1 (if you copied the KitKat ROM to the SD card). Select the file for the KitKat ROM and select Yes to install. Do the same thing for the PA Google apps package.

    6. Now select wipe data/factory reset → Yes. Wait for it to finish.

    7. Finally, select reboot system now.

  8. Your new KitKat ROM should now boot successfully. At this point, one of the first things I'd do is install Titanium Backup and restore your app backups. After that, a few suggested tweaks:
    1. To save battery life, go to SettingsWi-FiMenuAdvanced → Uncheck Scanning always available

    2. To save even more battery life, disable apps you don't use: Settings → Apps → swipe to the right until you get to the All tab → click on each app you don’t use → Disable

    3. For better performance, enable ART runtime
      1. SettingsAbout phone
      2. Scroll all the way down and tap on Build number until it says You are now a developer
      3. Settings → Developer options → Select runtime (near the bottom) → Use ART → OK

Installation d'Android KitKat (4.4) sur un Galaxy S II canadien (I9100M)

J'aime bien mon Galaxy S II (I9100). Je n'ai pas grand chose à dire au sujet de n'importe quoi Samsung a produit depuis, mais le Galaxy S II est l'un des téléphones les plus agréables que j'ai jamais possédé. Malheureusement, la version Samsung d'Android (appelé TouchWiz) ​​est terrible, et ils n'ont pas publié les mises à jour pour le téléphone depuis plus d'un an.

Déterminé à prolonger la vie de mon I9100, j'ai installé Android KitKat, mais pour quelque raison l'audio Bluetooth ne voudrais pas marcher du tout. Il a connecté au téléphone très bien, mais chaque fois que j'ai placé un appel je ne pouvais pas entendre rien. J'ai essayé plusieurs différentes ROMs (CyanogenMod, OmniROM, SlimROM), et ils ont tous eu le même problème.

J'ai finalement résolu mon problème. Pour quelque raison le logiciel sur la version canadienne de l'I9100 (la I9100M) est légèrement différente. Pour résoudre ce problème, tout ce que j'avais à faire était de flasher le logiciel stock I9100 de Samsung sur mon téléphone en premier. Maintenant, il fonctionne très bien avec tous les ROMs personnalisés de KitKat que j'ai essayé.

Bon, tout d'abord, ces instructions sont spécifiques à Linux, mais ils devraient fonctionner correctement sur ​​Mac et Windows. Sur Mac, ils seront presque identiques, mais ils auront besoin d'être modifié pour fonctionner sur Windows (par exemple, n'utilisez pas la commande sudo, mais peut-être vous aurez besoin d'ouvrir la ligne de commande en tant qu'administrateur). Sous Windows, vous aurez probablement aussi besoin de quelques outils supplémentaires, comme le pilote USB Samsung et 7-Zip pour extraire les fichiers tar.

Deuxièmement, deux procédures utiles:

Démarrer en mode de récupération (recovery mode):
  1. Si le téléphone est branché à un câble USB ou le chargeur, débranchez-le 
  2. Éteignez le téléphone 
  3. Appuyez et maintenez les boutons volume haut, accueil, et d'alimentation (vous pouvez lâcher une fois que vous voyez l'écran I9100)
Préparation à flasher en utilisant Heimdall: 
  1. Si le téléphone est branché à un câble USB ou le chargeur, débranchez-le 
  2. Éteignez le téléphone 
  3. Démarrez le téléphone en mode de téléchargement (download mode) en appuyant sur les boutons volume bas, accueil, et d'alimentation (vous pouvez lâcher une fois que vous voyez l'écran d'avertissement)
  4. Appuyez sur le bouton volume haut pour continuer au-delà de l'écran d'avertissement 
  5. Branchez votre téléphone à votre ordinateur à l'aide d'un câble USB
  6. Assurez-vous que Heimdall peut voir votre téléphone
    sudo heimdall detect
Et maintenant, les étapes d'installation de KitKat:
  1. Téléchargez des logiciels prérequis
    1. La grande chose dont vous aurez besoin c'est un ROM stock I9100 (pas I9100M). J'ai utilisé I9100XWMS2, mais je ne suis pas sûr que vous avez besoin de la même version (bien que ça devrait être un ROM Jelly Bean 4.1):
      http://www.sammobile.com/firmwares/3/?download=24707

    2. Heimdall, qui est un outil open-source pour flasher le firmware stock de Samsung (ROM)

    3. Cette image du noyau ClockworkMod:
      https://www.androidfilehost.com/?fid=24539867161559149

    4. Le ROM KitKat que vous souhaitez installer. Il ya beaucoup de choix. Personnellement, j'aime CyanogenMod, qui est le ROM le plus populaire et a été la plus stable dans mon expérience. OmniROM est une nouvelle ROM qui semble prometteur, mais quand je l'ai essayé, c'était un peu trop bogué pour ma préférence.

    5. Les dernières applications PA Google. Téléchargez le pico modular package (vous pouvez installer d'autres applis Google manuellement dans le Play Store):
      http://forum.xda-developers.com/showthread.php?t=2397942

  2. Ensuite, vous devez être rooté. Il ya beaucoup de façons de le faire, mais j'ai utilisé Root_SuperSU.0.96-Busybox.1.20.2-S2-signed.zip d'ici et il a bien fonctionné: http://forum.xda-developers.com/galaxy-s2/orig-development/04-12-2012-universal-rooting-phones-rom-t1746794. Vous pouvez le flasher en le copiant sur votre carte SD et utilisant le mode de récupération (voir ci-dessus).

  3. Maintenant, sauvegardez toutes les applications et les données que vous souhaitez. Ma méthode préférée pour ça est Titanium Backup.

  4. Copiez le ROM KitKat et l'ensemble des applications PA Google sur votre carte SD ou le stockage interne de votre téléphone.

  5. (Facultatif mais fortement recommandé) Faites une sauvegarde Nandroid, juste au cas où
    1. Préparer votre téléphone pour Heimdall en suivant les instructions en haut de ce post.

    2. Allez là où vous avez téléchargé l'image du noyau ClockworkMod et flasher:
      sudo heimdall flash --KERNEL cwmr6047.img --no-reboot

    3. Si pour quelque raison il échoue, refaire les étapes pour préparer votre téléphone pour Heimdall et essayez à nouveau.

    4. Mettez le téléphone en mode de récupération (recovery mode) en suivant les instructions en haut de ce post.

    5. Une fois que vous êtes en mode de récupération, utilisez le bouton volume bas pour souligner backup and restore (la sauvegarde et la restauration). Une fois que vous l'avez souligné, appuyez sur le bouton d'alimentation pour le sélectionner. Ensuite, sélectionnez Backup (la sauvegarde).

  6. Flasher la ROM stock de Samsung (si votre téléphone n'est pas un Galaxy SII canadienne I9100M, vous pouvez passer cette partie)
    1. Extraire le ROM stock de Samsung
      unzip I9100XWMS2_I9100VODLSF_VOD.zip
      mkdir I9100XWMS2
      cd I9100XWMS2
      tar xvf ../I9100XWMS2_I9100BULS3_I9100VODLSF_HOME.tar.md5

    2. Préparer votre téléphone pour Heimdall en suivant les instructions en haut de ce post.

    3. Flasher le firmware stock de Samsung en exécutant cette commande dans le même dossier que vous avez extrait le firmware:
      sudo heimdall flash --BOOT boot.bin --CACHE cache.img --FACTORYFS factoryfs.img --HIDDEN hidden.img --MODEM modem.bin --PARAM param.lfs --SBL1 Sbl.bin --KERNEL zImage --no-reboot

    4. Si pour quelque raison il échoue, refaire les étapes pour préparer votre téléphone pour Heimdall et essayez à nouveau.

    5. Une fois que c'est terminé, mettre le téléphone en mode de récupération (recovery mode) en suivant les instructions en haut de ce post.

    6. Une fois que vous y êtes, utilisez le bouton de volume bas pour souligner wipe data/factory reset (effacer les données / réinitialisation d'usine). Une fois que vous l'avez souligné, appuyez sur le bouton d'alimentation pour le sélectionner. Ensuite, sélectionnez Yes. Maintenant, sélectionnez reboot system now (redémarrer le système maintenant).

    7. Quand il a fini de démarrer, éteignez le téléphone.

  7. Flasher la ROM KitKat
    1. Préparer votre téléphone pour Heimdall en suivant les instructions en haut de ce post.

    2. Allez là où vous avez téléchargé l'image du noyau ClockworkMod et flasher:
      sudo heimdall flash --KERNEL cwmr6047.img --no-reboot

    3. Si pour quelque raison il échoue, refaire les étapes pour préparer votre téléphone pour Heimdall et essayez à nouveau.

    4. Mettez le téléphone en mode de récupération (recovery mode) en suivant les instructions en haut de ce post.

    5. Une fois que vous y êtes, utilisez le bouton de volume bas pour souligner install zip (installer zip). Une fois que vous l'avez souligné, appuyez sur le bouton d'alimentation pour le sélectionner. Sélectionnez ensuite choose zip from /storage/sdcard0 (si vous avez copié la ROM KitKat au stockage interne) ou choose zip from /storage/sdcard1 (si vous avez copié la ROM KitKat à la carte SD). Sélectionnez le fichier pour la ROM KitKat et sélectionnez Yes pour l'installer. Faites la même chose pour l'ensemble des applications PA Google.

    6. Maintenant, sélectionnez wipe data/factory reset (effacer les données / réinitialisation d'usine) → Yes. Attendez qu'il ait fini.

    7. Enfin, sélectionnez reboot system now (redémarrer le système maintenant).

  8. Votre nouvelle ROM KitKat devrait maintenant démarrer avec succès. À ce stade, l'une des premières choses que je fais est d'installer Titanium Backup et restaurer vos sauvegardes de l'application. Ensuite, quelques modifications suggérées:
    1. Pour économiser l'autonomie de la batterie, sélectionnez ParamètresWi-FiMenuOptions avancées → décochez Recherche toujours disponible

    2. Pour économiser encore plus l'autonomie de la batterie, désactivez les applications que vous n'utilisez pas: ParamètresApplications → glisser vers la droite jusqu'à ce que vous arriviez à l'onglet Tous → cliquer sur chaque application que vous n'utilisez pas → Désactiver

    3. Pour de meilleures performances, activez le runtime ART
      1. ParamètresÀ propos du téléphone
      2. Glisser vers le bas et appuyez sur Numéro de build jusqu'à ce qu'il dit Vous êtes maintenant un développeur
      3. ParamètresOptions pour les développeursSélect. moteur d'exécution (près du fond) → Utiliser ARTOK