Att etablera en vana

Först och främst vill jag utfärda en varning för att detta inlägg innehåller en god dos amatörpsykologi och generaliserande (fast inte så många onödiga parenteser som man skulle kunna tänka sig) vilket gör att känsliga läsare därmed gör klokt i att sluta läsa här. Inlägget är dock berättigat i och med att underrubriken för denna hittills svammelfria (!) blogg är “tankar och svammel”.

Lite allmänt teoriflum
Många av oss har vid ett eller flera tillfällen försökt att etablera en vana, vanligen ett försök att utföra en handling (eller serie av handlingar) som uppfattas som övervägande positivt med större frekvens än tidigare. Inte sällan har denna strävan blivit oss övermäktiga och klingat av. De mekanismer som styr oss i detta avseende är troligen högst varierande med avseende på personlighet och vad tillvänjningen gäller. Frågeställningen för dagens spaning lyder oavsett, hur etablerar man en sund vana? Naturligtvis presenteras även ett tillfredsställande svar lite längre ner.

Mitt konkreta fall
Personligen står jag i begrepp att försöka etablera en vana att simma på onsdagmorgnar på Valhallabadet. Starten har som vanligt varit lovande och efter två lyckade onsdagar tycker jag mig kunna skönja ett embryo till vana. I morse när jag var klar med simproceduren och checkade ut från badhuset märkte jag hur jag utan eftertanke hade valt skåp i samma område som förra gången, samma bana i bassängen, samma dusch etc.

Det kan troligen finnas många olika anledningar till varför jag gjorde samma val som tidigare men en anledning skulle kunna vara trygghetssökande i en något ovan situation. Typ “detta funkade bra förra gången och verkar vara ett säkert kort, det tar vi”. Man kan även tänka sig att min strävan att etablera en vana undermedvetet styrde mina val och hjälpte mig på traven genom att göra det så likt som förra gången för att skapa ett upprepningsbart mönster. Eller så blev det bara så, men det håller jag för alltför osannolikt.

The bottom line
Man kan argumentera för att mitt empiriska material är en aning tunt och subjektivt men det hindrar mig inte från att förmedla en sk ad hoc-teori-teori som till fullo (lite oklart hur men ändå) bygger på ovanstående egenupplevda betraktelse: För att etablera en vana ska man upprepa handlingen, eller den serie av handlingar, som ska tillvänjas så likt som det är möjligt som förra gången med avseende på tid, plats och utförande. Detta syftar till att den tillvänjande inte ska behöva fundera på när, var och hur så att andra alternativ hindras från att smyga sig in och sabotera vanan.

Jag kan möjligen tänka mig att tillfoga en förutsättning/kommentar som går ut på att detta endast gäller i de fall då det första tillfällets utfall upplevdes som lyckat.

Jag har nu för avsikt att bevisa ovanstående teoris riktighet genom att etablera onsdagssimningsvanan, vilket iofs för in ytterligare problematik rörande bevisningen av teorin. Detta väljer jag dock att bortse ifrån då kraven på en ad hoc-teori ligger tämligen lågt i det avseendet.

Posted in motion, vardag | Tagged , | 2 Comments

En uppdatering på pyTrainer-fronten

Tänkte inte skriva så mycket mer om pyTrainer på ett tag eftersom det kan bli lite enahanda men känner ändå för att knyta ihop påsen en aning.

Igår upptäckte jag att det finns ett nystartat sourceforge-projekt som ska driva utvecklingen av pyTrainer framåt. Det har gått lite trögt så det kan nog vara en bra idé och jag har tänkt engagera mig där eftersom jag gillar mjukvaran. Om du kör Linux (någon Windows-version har jag inte sett men det borde vara hyggligt enkelt att ta fram) och tränar eller vill träna med pulsklocka är det läge att spana in projektet.

Igår kväll ordnade jag övrigt så att höjdförändrings- och pulsgraferna kommer med vid bloggpublicering vilket gjorde att jag återpublicerade söndagens skatås-runda för att demonstrera funktionaliteten.

Posted in linux, motion, programmering | Tagged | Leave a comment

En kväll med pyTrainer

Jag har ägnat kvällen åt pyTrainer och börjar känna mig någorlunda nöjd nu. Jag började med att fundera på om jag skulle försöka lägga till en pulsgraf och sen hittade jag ett källkodsförråd hos launchpad som var synkat med originalrepot (som var nere då men som verkar vara online sporadiskt).

Efter att ha hämtat hem den senaste källkoden med kommandot bzr branch lp:pytrainer var det läge att provköra och se vad som skiljde mellan 1.5.0.0.1 och 1.5.0.3 (som verkar motsvara “trunken”).

Till min stora glädje fanns redan den pulsgraf jag efterfrågade. Innan jag kom så långt att jag kunde konstatera detta fick jag dock lov att lösa ett antal puckar. Till en början gick det inte ens att starta programmet då en inställning saknades (enligt incheckningskommentarerna är stödet för det amerikanske måttsystemet endast påbörjat) och det gick heller inte att spara träningspass när man valde att spara i en MySQL-databas (id:t för den senast sparade posten returnerades inte) istället för sqllite. Jag ordnade även lite kosmetiska detaljer samt gjorde så att mer information om träningspasset överförs till bloggen. Jag kunde även konstatera att den buggen jag beskrev i ett tidigare inlägg, där en namespace-definition saknades, inte var fixad.

Jag har skrivit till han som utvecklat pyTrainer och erbjudit mina patchar. Får se om han finner något intresse i det. I vilket fall funderar jag på att ordna så att puls- och höjdskillnadsgraferna förs över till bloggen.

Posted in datorer, motion, programmering | Tagged , | Leave a comment

10 km på Skatås

Beskrivning:
Strålande väder och perfekta förhållanden. Mycket skön löptur där jag öppnade försiktigt och släppte på lite mer eftersom.

Aktivitet: Löpning Datum: 2008-09-21
Sträcka: 10.01 Tid (hh, mm, ss): (0, 45, 31.0)
Maxhastighet: 21.51 Medelhastighet (km/h): 13.2
Maxtempo (min/km): 2.79 Medeltempo (min/km): 4.55
Maxpuls: 178 Medelpuls: 161
Ack. stigning: 588 Ack. sänkning: 592

Karta:

Gpx-format Kml-format (GoogleEarth)


Posted in motion | Leave a comment

Liten runda i Skatås

Beskrivning:
Soligt och fint!

Aktivitet: Löpning Datum: 2008-09-20
Sträcka: 6.08 Tid (hh, mm, ss): (0, 30, 2.0)
Medelpuls: 143.0 Medelhastighet (km/h): 12.15
Ackumulerad stigning: 442.0 Ackumulerad sänkning: 405.0

Karta:

Gpx-format Kml-format (GoogleEarth)

Posted in motion | Leave a comment

Mer härj om pyTrainer

Det finns ett plugin till pyTrainer som gör att man kan publicera resultatet av sina ansträningar (nåja, en del iaf) i sin blogg. Dock var det lite si å så med vissa detaljer så det funkade inte alls. Efter lite fulhackande i Python verkar det dock funka nu (se föregående inlägg). Kanske detta är den motivation som krävs för att jag ska börja använda min Forerunner mer frekvent?

Tillägg lördagen den 20:e september
För den som försöker få ordning på wordpress-tillägget till pyTrainer kanske det kan vara värdefullt med några tips. För den som är totalt ointresserad av just pyTrainer kanske förklaringen nedan kan tjänstgöra som beskrivning i hur det kan fungera när man handskas med strulande mjukvara.

Jag kör pyTrainer 1.5.0.0.1 och efter att jag aktiverat och konfigurerat “Pytrainer wordpress extension” blev mina försök fruktlösa. Det första jag gör i såna lägen är förstås att se vad som skrivs ut i terminalen. Kanske kan eventuella felmeddelanden ge en hint om vad som går snett?

Detta är vad som spottades ut:

File "gpx.py", line 39, in __init__
File "gpx.py", line 75, in _getValues
File "/usr/lib/python2.5/xml/dom/minidom.py", line 1915, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.5/xml/dom/expatbuilder.py", line 924, in parse
result = builder.parseFile(fp)
File "/usr/lib/python2.5/xml/dom/expatbuilder.py", line 207, in parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: unbound prefix: line 14, column 12

Detta sa mig inte mer än att vi verkar ha problem med en XML-struktur som ska parsas (tolkas). Som synes finns information om vilka klasser, metoder och radnummer som är problematiska och efter lite rotande i gpx.py i (/usr/lib/python2.5/site-packages/pytrainer/lib/) var det tydligt att xml-filen producerades av gpsbabel, sparades som /tmp/gpx.txt och försöktes tolkas av minidom.

Efter att ha spanat i xml-filen (som inte togs bort utan låg kvar i tmp-katalogen) gick det även att förstå vad minidom hade problem med. På rad 14, som det stod i stacktracen ovan, refereras till ett prefix “gpxdata” som är okänt för minidom.

Det borde gå att ändra den mall som gpsbabel använder som utformat men efter att ha rotat lite la jag ner den möjligeten och bestämde mig för en pragmatisk lösning, att helt enkelt justera filen, och lägga till namnrymden gpxdata, innan vi matar minidom med den.

Metoden _getValues, runt rad 74 i gpx.py börjar numera enligt nedan (observera radnumren längst till vänster och att de för Python så viktiga “indragen” har förvanskats ):


74 def _getValues(self):
75 if not os.path.isfile(self.filename):
76 return None
77
78 # Test if file already contains gpxdata attribute
79 found = False
80 for line in fileinput.FileInput(self.filename,inplace=1):
81 if "xmlns:gpxdata" in line:
82 found = True
83 print line.rstrip('n');
84
85 # If file don't has gpxdata attribute: add namespace
86 if not found:
87 for line in fileinput.FileInput(self.filename,inplace=1):
88 if "xmlns:xsi" in line:
89 line=line.replace('xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"','xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gpxdata="http://www.cluetrust.com/XML/GPXDATA/1/0"')
90 print line.rstrip('n');
91
92 dom = xml.dom.minidom.parse(self.filename)
93 content = dom.toxml()

Den som är van att läsa kod (och Python-kod i synnerhet) ser att vi ersätter innehållet på en viss rad i filen identifierad av “self.filename” (dvs medlemsvariabeln filename på aktuellt objekt).

Sådärja, då var minidom nöjd och kunde hacka i sig innehållet. Nästa steg var att wordpress inte accepterade att filer av filtypen gpx och kml laddades upp. Detta löstes genom att installera ett plugin i wordpress som gör att man kan lägga till fler filtyper.

Sista steget var att ersätta de spanska termerna som användes i mallen som skapade blogginläggen samt ändra så att inläggen publicerades direkt istället för att läggas upp som utkast. Jag ändrade även så att medelpuls visas istället för kalorier. Detta kan hårdkodas i /usr/share/pytrainer/extensions/wordpress/main.py

Tyvärr är webbplatsen för pyTrainer nere vilket gör det lite problematiskt att se om följande defekter är välkända och eventuellt till och med redan fixade i en nyare version. Faran med den här typen av fulhack är förstås att ändringarna löper stor risk att bli överskrivna när en ny version installeras (vilket iofs inte kommer att ske automatiskt eftersom pyTrainer inte finns i några av de repositories jag använder).

Posted in datorer, elektronik, motion, webbprojekt, webbservern | Tagged , | 10 Comments

Löptur till jobbet

Beskrivning:
Solen sken och jag provade höstens löparkostym med Under Armour-kläderna jag köpte i San Francisco i våras.

Aktivitet: Löpning Datum: 2008-09-18
Sträcka: 6.41 Tid (hh, mm, ss): (0, 32, 6.0)
Kalorier: 0 Medelhastighet (km/h): 11.98
Ackumulerad stigning: 238.0 Ackumulerad sänkning: 293.0

Karta:

Gpx-format Kml-format (GoogleEarth)

Posted in motion | Leave a comment

Löpning, Forerunner och pyTrainer

Igår fick jag lite dåligt samvete över att Forerunnern inte fått vara ute och röra på sig i den omfattning jag önskat/tänkt så jag bestämde mig för att göra något åt saken. Det blev en löptur till jobbet på drygt 6 kilometer vilket iaf bedövade ett dåligt samvete för stunden…

Idag har jag importerat datat i pyTrainer (deras webbplats verkar vara nere för stunden) som kan prata med Forerunnern vilket jag har skrivit om tidigare. Det är rätt festligt att pyTrainer har en integration med Google Maps så att de kan visa upp hur man har sprungit inbäddat i programmet vilket framgår av bilden nedan:

Skärmdump från pyTrainer

Skärmdump från pyTrainer

Posted in datorer, elektronik, hårdvara, linux, motion | Tagged , , | Leave a comment

Tämligen aktiv dag

Imorse var jag som utlovat förbi Valhallabadet och tog en simtur. Med taskig bröstsimteknik tog en kilometer ganska precis en halvtimme. Kan inte påstå att 2 km/h låter särskilt imponerande men det kanske går att putsa lite ifall jag lyckas simma regelbundet. En gång per vecka kanske är rimligt?

Med tanke på att det står gokart och bastu på kvällens schema har denna dag stora möjligheter att bli mer snäppet mer aktiv än genomsnittet. Då passar det bra att det står “vilodag” på träningsschemat eftersom gymmet inte hinns med…

Posted in motion, vardag | Tagged , , | 2 Comments

Simma imorrn

Jag har ännu inte utnyttjat att simning på Valhallabadet ingår i mitt Fysiken-kort men imorrn bitti skulle kunna vara en lämplig premiär. Jag litar inte fullt ut på mig själv på den punkten men genom att skriva här om mina intentioner sätter jag lite extra press på mig själv. Eftersom simhallen öppnar klockan 6:30 hinner jag utan problem simma innan jobbet om jag bara tar mig upp i tid.

I nuläget följer jag med stort intresse premiären i Champions League och ser Panathinaikos – Inter på teve och Marseille – Liverpool på datorn. Gerrard gjorde en mäktig vändning i första halvlek lagom till att jag slog på.

Posted in motion, sport, tv | Tagged , | Leave a comment