Projekti: Henkilökohtainen ohjauspaneeli
Olen seurannut itsen henkilökohtaiseen mittaamiseen ja seurantaan keskittyvää Quantified Self (QS) -blogia ja aiheeseen liittyvää liikehdintää jo jonkin aikaa. En kuitenkaan ole vielä päässyt kiinni asiaan kunnolla. Uusien mittavempainten ostaminen ja ohjelmistojen hankkiminen, asentaminen ja käytön opettelu voisi toki olla ihan kivaa, mutta kalenteri on jo täynnä eikä uusille harrastuksille ole tällä hetkellä tilaa. Jotta pääsisin eteenpäin, tulisi ensiaskeleideni olla pieniä, helppoja ja yhteneviä sen kanssa mitä jo teen muutenkin.
Tajusin hiljattain, että oma kiinnostukseni tietokoneavusteiseen oppimiseen on itse asiassa hyvinkin linjassa quantified self -ajatuksen kanssa. Mittaus, raportointi ja analytiikka taas on tullut tutuksi niin verkkopalvelujen kuin taloushallinnonkin puolelta. Enää puuttui idea siitä mistä lähteä liikkeelle. Sellainen tuli vastaan viime viikolla.
Quantified Self -blogista löytämäni video toi puuttuvan elementin ajatuksiini ja sai minut heti innostumaan ja aloittamaan uuden (sivu-)projektini. Videolla esiintyvä David Joerg käyttää sähköpostin inboxin mailien lukumäärää stressitason mittarina. Tyhjä inboksi on terveyden merkki. Taisi hän puhua jostain muustakin, mutta tämä oli jotain josta pääsisin heti liikkeelle itsekin.
Viimeisen vuoden ajan olen pyrkinyt tyhjään postilaatikkoon tähtäävään inbox zero -ajatteluun. Olen huomannut saman kuin Joerg: kun on liikaa meneillään, postilaatikko alkaa täyttyä. Laatikkoon jäävät mailit ovat yleensä joko todo-listaa tai tekemättömiä päätöksiä. Ne ovat käsittelemättömiä asioita, jotka kuormittavat mieltä.
Olen syksyn mittaan muutenkin työskennellyt IMAP-protokollan kanssa, joten se tuntui helpolta valinnalta tiedon hakemiseen. Gmail tarjoaa IMAP-rajapinnan, jota kautta voi käsitellä postilaatikoiden sisältöä. Postilaatikon viestien lukumäärän hakeminen on suoraviivaista:
import imaplib, getpass
from datetime import datetime
user = "myaccount@gmail.com"
M = imaplib.IMAP4_SSL("imap.gmail.com")
M.login(user, getpass.getpass())
response = M.select()
inboxcount = response[1][0]
with open("inboxcount.csv", "a") as myfile:
myfile.write("%s;%s\n" % (datetime.now(), inboxcount))
M.close()
M.logout()
Tämä koodi käyttää salasanatunnistautumista IMAP:in kanssa. Google tulkitsee ohjelman tämän vuoksi “vähemmän turvalliseksi”, ja vaatii erillisen hyväksynnän, mistä tulee ilmoitus sähköpostitse. OAuth 2.0 -protokolla olisi tämän hetken virallinen oikea tapa tunnistautua Googlen palveluihin. Kokeilutarkoitukseen salasanatunnistus riittää kuitenkin hyvin ja on huomattavasti yksinkertaisempi toteutukseltaan.
Ohjelma pulauttaa csv-tiedostoon uuden päivätyn rivin.
2014-12-23 09:12:58.180230;35
Hups, 35 viestiä inboxissa. Joulusiivouksen paikka. Tämän tiedon perusteella voi ohjauspaneeliin sytyttää oikeanvärisen liikennevalon tai tietojen kertyessä piirtää kuvaajan pidempiaikaista seurantaa varten.
Mitä seuraavaksi? Ideoita on paljonkin, mutta ensimmäisenä jonossa lienevät:
- Web-käyttöliittymä ohjauspaneelia varten
- OAuth 2.0 tunnistautuminen Googlen web apeihin
- Google Analytics -liitäntä ohjauspaneeliin
Kirjoittelen näistä projektin edetessä.
Linkit
- http://quantifiedself.com — Self knowledge through numbers
- http://quantifiedself.fi/ — Quantified Self & Biohacking Finland
- http://quantifiedself.com/2014/12/david-joerg-building-personal-operating-system/ — Operating system for me, David Joerg (10 min video)
- https://docs.python.org/2/library/imaplib.html — imaplib, IMAP4 protocol client for Python
- https://developers.google.com/gmail/oauth_overview — GMail Platform: IMAP and SMTP