The Missing Link

-->

Programmeerdag

Gisteren heb ik me nog eens even laten gaan in het schrijven van software. Het plan is om een koppeling te maken tussen Evernote en deze blog. Evernote is een dienst waarmee je nota’s kan bijhouden, die dan automatisch gesynchroniseerd worden tussen jouw computer, je gsm, en via het internet beschikbaar zijn. Er is een API beschikbaar, dus de gegevens zijn extern beschikbaar. Gegevens in deze blog steken is ook niet moeilijk: WordPress ondersteunt de gangbare API’s, met een aantal eigen toevoegingen.

Stel dat ik niet de enige ben die deze koppeling zou willen gebruiken, zou het wel eens een belasting voor de server kunnen zijn. Daarom wou ik het geheel op de Google App Engine (GAE) draaien, waardoor je gemakkelijk heel schaalbare applicaties kan maken: je gebruikt de Google-infrastructuur, dus opslag en rekencapaciteit kunnen gemakkelijk uitgebreid worden. Op dit moment is het nog allemaal gratis, later gaan er betalende modellen komen (maar is het hopelijk nog mogelijk gratis dingen te doen).

Om die schaalbaarheid te realiseren, is de werkomgeving van de GAE beperkt. Je kan als programmeertaal enkel Python gebruiken, en (vooral) de database is geen “klassieke” relationele database waar de meeste programmeurs mee opgegroeid zijn, maar een eigen “Datastore“, waar bijvoorbeeld joins niet mogelijk zijn. Ik heb een beetje met Python gepruld, maar ben er nog niet vloeiend in, en zeker in een web-omgeving moet ik mijn weg nog vinden. Django, een web framework dat ten dele het Model-View-Controller verhaal volgt, is beschikbaar, en om niet te vaak het warm water opnieuw te moeten uitvinden heb ik geprobeerd daarmee te werken. Ook al omdat ik nu ook mijn eerste stappen in Cocoa aan het zetten ben (waarmee de meeste Mac OS X-programma’s worden gemaakt), en Cocoa ook MVC gebruikt, zou dat moeten lukken.

Het volledige synchronisatie-probleem is ingewikkeld, maar we kunnen het wel in delen proberen op te lossen. Eerst van Evernote naar WordPress bijvoorbeeld: simpel éénrichtingsverkeer. Evernote kan naar een publieke RSS-feed exporteren, dus dat moet gewoon ingelezen worden en doorgestuurd. Ah ja, en updates overschrijven de vorige versie. Dan moet ik wel bijhouden wat ik waar heb weggeschreven. Maar goed, ik heb veel ruimte om dingen bij te houden, dus dat zal wel lukken. Met bijlagen en zo moet ik wel opletten, dat die ook overgezet worden. Blijkbaar zijn er ook leuke dingen als encryptie mogelijk, maar daar heb ik (buiten de documentatie) nog geen voorbeelden van gezien.

Omgekeerd moet ook nog kunnen: blogberichten in Evernote steken. Evernote ondersteunt wel niet veel HTML-mogelijkheden, maar daar kunnen we dan een filter tussenzetten die de conversie doet. Dan zou je het ook als een soort van RSS-lezer kunnen zien. Hier is het de eerste keer dat we dingen in Evernote moeten toevoegen, en dat we dus toegang moeten hebben tot de gegevens van de gebruiker. Om je wachtwoord niet aan elke externe toepassing te moeten geven, gebruikt Evernote OAuth: heel slim, alleen wordt het blijkbaar vooral gebruikt voor toepassingen die maar even moeten werken: snel even je berichtjes bekijken, iets doen, en klaar. Je toegang is in de tijd beperkt. Voor mijn verhaal zou het een onbeperkte toegang moeten zijn (tot je de toestemming zelf terug intrekt natuurlijk). Als dat niet mogelijk is, moeten we wel het wachtwoord gaan opslaan, en daar heb ik geen zin in. WordPress ondersteunt op dit moment nog geen OAuth, misschien in de volgende versie (het stond ook al op het lijstje voor deze versie, maar zo ver zijn ze niet gekomen).

Het ultieme is natuurlijk een echte synchronisatie tussen beiden. Zodat je berichten in Evernote kan aanmaken, of on-line op je blog, en ze op beide plaatsen ziet. Maar ook nog bestaande berichten kan aanmaken! We zitten met het probleem dat er een conversie moet gebeuren om ze in Evernote te krijgen, dus ik weet niet of ik alle informatie (stijlen en zo) zal kunnen behouden. Voor eenvoudige zaken moet het lukken, maar als het ingewikkelder wordt? We zullen zien of we ooit zo ver geraken.

Om zoveel code tegelijk te beheren is mijn klassieke opstelling met de Terminal + SubEthaEdit waarschijnlijk niet krachtig genoeg, dus schakelde ik over naar Eclipse. De PyDEV omgeving had ik al, en het is redelijk gemakkelijk om GAE erbij te pakken (om er dan nog eens Django bovenop te zetten moest ik wel twee handleidingen combineren). Als version control system wou ik dan voor de eerste keer Git fatsoenlijk gebruiken (dan kan ik gemakkelijk experimenteren), maar dat is tot nu toe nog niet gebeurd (eigenlijk vooral omdat ik nog geen goed beginpunt had – stom argument eigenlijk). De plugin voor Eclipse heb ik ook nog niet aan de praat gekregen, maar via de command line moet ik mijn weg ook  vinden.

Enfin, dit om maar even uit te leggen dat ik gisteren mijn hoofd in een probleem heb gestoken, en nog niet meteen de uitgang zie. Of ik zie ze wel, maar ze ligt steeds verder weg. Misschien omdat ik onderweg nog regelmatig op een zijpad kom: om het gebruiksvriendelijk te maken wil ik zoveel mogelijk automatisch laten gebeuren (zodat de gebruiker niet teveel informatie zelf moet gaan zoeken), maar dat maakt het er niet eenvoudiger op.

Op dit moment heb ik (dit venster niet meegerekend) acht browservensters open, met alles samen 32 tabs. Ik moet immers tegelijk Evernote, WordPress, Google Apps Engine en Django leren gebruiken. Misschien dat een 30-inch scherm toch wel ooit nuttig kan zijn…

2 Reacties

  1. Christophe zegt:

    Wel veel in een keer dat je wil doen, hé? Maar ik zou even goed in zo’n situatie terecht kunnen komen.

  2. Winnesoup zegt:

    Welkom bij de club….. ff google app engine doen is er nog niet bij. De handleidingen / aanwijzingen zijn af en toe zeer beperkt. Succes!

Laat een reactie achter