Google MyTracks drops support for third party access

Update: The latest version of PebbleMyTracks, that checked the correct MyTracks version, and initiated the installation of the correct version is abandoned from the Play store. In the mean time, PebbleMyTracks is available for download from Dropbox.

https://www.dropbox.com/s/9ifbblpfkjicrmv/PebbleMyTracks.apk

The last update of Google MyTracks dropped support for third party access, and instead of that added support for Google Wear devices. Also Google is planning to remove the source code of MyTracks from the repository. This is, politely speaking, an unpleasant event.

From a commercial perspective, I can understand the decision of Google: stimulate the  acceptance of the Google Wear platform, by blocking all paths to may lead to other alternatives.

It is my opinion that it is much better to take a more positive decision: Put your effort in creating the best platform for wearable apps, instead of this negative choice. This decision only stimulates developers and users to turn their back on the Android platform.

As the developer of PebbleMyTracks. I’ll do my best to get a workaround for this ‘inconvenience’ as soon as possible. Therefore I created a version of the app, that checked for the correct version of MyTracks, and if needed, initiated a downgrade so that all requirements were met.

Unfortunately, this version was abandoned by Google from the Play store because the app uninstalled/installed other apps (which is true). So the app is not available from the Play store for the moment. While I’m working on a new version (without the uninstallation) the latest version can be download from dropbox.

https://www.dropbox.com/s/9ifbblpfkjicrmv/PebbleMyTracks.apk

 

Scratch Extensies

Scratch is een programmeertaal voor kinderen, of anderen die willen kennismaken met het programmeren van een computer. Zoals ik eerder schreef wordt het pas echt leuk op het moment dat je vanuit je Scratch programma iets buiten je computer kan besturen. In deze post heb ik beschreven hoe dit kan met de offline versie van Scratch. Extensies (JavaScript extensie) blijken echter ook prima te werken in de online versie van scratch.

Hoe dat moet? Dat beschrijf ik hier in het onderstaande stapppenplan.

    1. Ga naar de scratch website: http://scratch.mit.edu
    2. Klik op ‘Create’.
    3. Als de ‘Scratch Project Editor’ is gestart druk je op de F12 toets. Nu verschijnt er onderin je webbrowser een nieuw scherm (zie screenshot).
      Screenshot from 2014-10-10 09:31:35
    4. Type het onderstaande commando op de onderste regel van van het scherm (zoals is te zien in de screenshot hieronder), en druk op enter. Op deze manier wordt een JavaScript extensie geladen.
      ScratchExtensions.loadExternalJS("https://raw.githubusercontent.com/LLK/scratch-extension-docs/master/weather_extension.js")

      Screenshot from 2014-10-10 09:35:05

    5. Druk wederom op de F12 toets om de ‘developer tools’ te sluiten. En klik op ‘more blocks’. Er is nu een extra blokje zichtbaar geworden wat zojuist is geladen (zie screenshot).Screenshot from 2014-10-10 09:38:17
    6. Het nieuwe blokje kan worden gebruikt in een Scratch programma. In dit geval wordt het weer (de temperatuur in Fahrenheit) bepaald. Wederom, zie onderstaande screenshot voor een voorbeeld programmaatje (wanneer op het vlaggetje geklikt wordt roept het katje de huidige temperatuur in Boston).Screenshot from 2014-10-10 09:42:06
    7. Een scratch programma waarin extensie worden gebruikt kan normaal worden opgeslagen op de Scratch website. Omdat er gebruik wordt gemaakt van extensies, die nu nog experimenteel zijn, is het niet mogelijk om deze Scratch programma’s via de Scratch website te delen.
    8. Bij het opnieuw laden van het Scratch programma moeten stap 3, 4, 5 opnieuw worden uitgevoerd. Dit kan worden opgelost door gebruik te maken van GreaseMonkey, een plugin voor de firefox webbrowser (er is vast ook wel een vergelijkbare tool voor andere browsers) waarmee extra JavaScript (het laden van een paar extensies bij het openen van Scratch) kan worden uitgevoerd.

Op dit moment zijn de Scratch extensies nog experimenteel. Voor zover ik kan beoordelen is het Scratch team zeer zorgvuldig met het toevoegen van nieuwe functionaliteit, wat bij dit soort extensies helemaal belangrijk is. De laatste berichten zijn dat extensies in 2015 worden toegevoegd aan de officiele versie van Scratch.

 

Scratch

Scratch (link) is een omgeving voor kinderen om kennis te maken met programmeren.Het is een visuele programmeertaal waar je doormiddel van het slepen, en aan elkaar koppelen van allerlei blokjes een programma kan maken. Bijvoorbeeld om een animatie te besturen, of een eenvoudig spelletje te maken. Scratch draait in een webbrowser (geen extra software nodig), maar kan ook als een offline programma draaien.

Scratch is leuk, maar het wordt pas helemaal leuk als je vanuit je scratch programma kan samenwerken met dingen buiten je computer:  een website, een robot, een thermometer, noem maar op. De offline versie van Scratch heeft voor dit doel de HTTP extensie waardoor het mogelijk wordt om speciale blokjes te maken die informatie uitwisselen met websites.

Omdat de HTTP extensie experimenteel is in de huidige versie van Scratch, en deze daarom nogal verborgen zit in de software beschrijf ik hierbij hoe een HTTP extensie kan worden gemaakt.

De HTTP extensie bestaat uit een JSON document waarin de nieuwe blokjes worden gedefinieerd, en de locatie van de webserver wordt opgegeven. Bijvoorbeeld:

{ 
  "extensionName": "Mijn module",
  "useHTTP":true,
  "host": "192.168.1.44",
  "extensionPort": 1880,
  "blockSpecs": [
    [" ", "Sonos %s", "scratchSonos", "Hallo Scratch"]
  ]
}

Een meer gedetailleerde specificatie is ook beschikbaar (link). In het kort is de betekenis dat het gaat om een extensie met de naam ‘Mijn module’. Het is een HTTP extensie (useHTTP is true), die beschikbaar is op ip adres 192.168.1.44, en poort 1880. In blockSpecs staat een lijst van blokjes, met per blokje een lijstje parameters per blokje. Achtereenvolgens zijn dat type, format, functie, gevolgd door 0 of meer default waarden.

Op het moment dat Scratch dit blokje gaat uitvoeren wordt een HTTP GET call gedaan naar adres:

http://192.168.1.44:1880/scratchSonos/Hallo%20Scratch

De JSON extensie kan in de offline versie van Scratch worden geladen door het menu ‘Bestand’ te klikken terwijl de linker shift-toets is ingedrukt. Door het indrukken van de linker shift-toets verschijnt de extra menu optie ‘Import experimental HTTP extension’ die dan ook moet worden gekozen.  Selecteer nu het JSON bestand, en klik op OK. Onder ‘Meer blokken’ is nu het nieuwe blok te vinden. Zie bijgevoegde screenshots.

scratch1
Klikken op Bestand met de linker shift toets ingedrukt geeft de extra optie ‘import external scratch extension’ waarmee het mogelijk wordt om een HTTP extensie te laden.
Na het succesvol laden van de HTTP extensie zijn nieuwe blokjes zichtbaar in de categorie 'Meer blokken'
Na het succesvol laden van de HTTP extensie zijn nieuwe blokjes zichtbaar in de categorie ‘Meer blokken’

Een snelle voorbeeld scratch applicatie is die waar door klikken op de ‘kat’ wordt gevraagd om je naam in te vullen. De ingevulde naam wordt vervolgens via de HTTP extensie naar een text-to-speech engine gestuurd die via Sonos (een draadloos speakersysteem) de tekst weer uitspreekt. Dit laatste is niet beschreven in deze post, dat komt vast een andere keer.

scratch3
Een scratch programma waarin een blokje uit de HTTP extensie wordt gebruikt.