Ny ficklampa: P7

På det klassiska temat ”min flickvän tycker jag har för prylar” har jag skaffat en LED Lenser P7. Faktum är att jag och Illern köpte när Conrad hade den på Söndagserbjudande och den gick med typ 45% rabatt 🙂 Skaffade i samma veva Va dyrarta Professional CR123A batterier till min andra ficklampa. Får ta någon grott-cache eller nått för att testa ficklamporna snart.

Får hoppas jag inte slarvar bort lamporna nu, minns fortfarande min gamla Gerber LX 3.0 som bara var borta en vacker dag.

Watchmen

Filmen var grym! Mycket av känslan från originalet hade lyckat överförts till filmen. Handlingen var mer eller mindre identiskt, väldigt lite trixande utan troget följfes novellen. En av världens mest färgstarka serienoveller blev en mycket mycket färgstark film. Bra skådisar, bra effekter, väl genomfört.

Skall nått negativt sägas? Hmm, några övervåld scener var borta, t.ex att bryta fingrarna på folk man bara har vaga skäl att misstänka. Hjältarna var kanske gnuttan mer dekis och mentalt nergångna i serien.

Men men, hur som helst lätt en klassiker som utklassar det mesta i denna filmkategori.

Hur man öppnar en flaska

På vägen mot matbutiken får jag se något jättemärkligt. Två unga killar verkar metodiskt och långsamt utsätta en skyllt för någon sorts mild vandalisering. Gång på gång slår de försiktigt mot den.

Går fram och får reda på vad de håller på med. De förklarar att de försöker använda skylten som en kapsylöppnare, och den mjuka aluminiumskylten flexar rejält när de slår kapsylen mot den. Den ena killen Pomac börjar spruta genom en sliten kapsyl som fortfarande sitter fast på flaskan.

Naturlagar och bondförnuft snurrar till i skallen och jag pekar på en hård rejäl kant av stålfästet till skylten. ”Den är hård. Slå där”. Den ena killen slår där och kapsylen åker av direkt, och han tittar förvånat på flaskan, mig och järnfästet.

Går muntert iväg och inser plötsligt mitt egentliga ärenden. ”Öh! Grabbar! Var rädd om skylten nu!” . ”Okej!” får jag tillbaka från Mr. Pomac och Pomac.

Mission accomplished.

Geocachare i bröllopsfotot?

Jag, TMR68, Hallén och Illern letade efter en geocache nedanför Tullbron medan en bröllopsfotografering pågick ovanför. Vi hade lite problem att hitta så fotografen hann bestämma sig för att plåta nedanför bron, och vips konstaterade han att fyra yrväder med GPS höll och detaljstuderade varenda vrå. ”Ursäkta, kan ni flytta er lite?” och det kunde vi naturligtvis. Jag passade på att knäppa av fotot ovan medan Illern han plocka fram en spoilerbild som visade var cachen låg. När fotografen bytte motiv och plåtade med familjen ovanför honom i trappan kutade en av oss ner och loggade. Fotografen som kände till skattjakt med GPS undrade roat vilken skatt vi egentligen hittat, och vi svarade glatt ”en liten filmbruk”.

Det lustiga var sen att vi såg detta paret med sin fotograf på håll vid en massa platser som hade geocacher på sig, framför allt i närheten av en multi på temat konstverk. Fast som tur var så var de på platserna innan eller efter vi skulle jaga cacher där, så ingen störde den andra men det var så lustigt att bröllopsparets fotoresa verkade gå från cache till cache.

Och slutligen kom en liten veteranbil  med flaggor körandes runt och tutade för glatta livet, precis när vi höll på att packa bilen för avresa från Falkenberg. Vi skämtade glatt ”det är nog dom som gift sig” och skrattade till när det faktiskt var dom, och de såg förvånade ut också.

På något sätt så tror jag att det här paret kommer minnas fyra udda men artiga Göteborgare med GPS, med uppdrag att söka efter filmburkar i var och varannan millimeter av Falkenberg 🙂

I’m back on track!

Idag har det känts ungefär som om jag var bakfull. Huvudet har värkt och kroppen känner sig lite lätt mörbultad.

Dubbelkollade vad Hallén loggat idag, och upptänkte att jag igår missade jag att logga en av cacherna vi hittat. Så där trillade en ny Found logg in. Godkänner Ninjatummen mina svar på frågorna till Glommen earthcache så blir det en till där.

Så insåg jag plötsligt att jag börjat komma ikapp mitt 1 cache / dag mål igen. Med 96 cacher / 80 dagar hamnar vi på 1.2 cacher om dagen detta år. En ganska rejäl skräll med tanke på att januari och februari var usla månader.

Event i Falkenberg & Powercaching

Jag, Illern, TMR68 och Hallén stack på powercaching tur mellan Göteborg och Falkenberg med ett antal sidospår. Start klockan 9, caching från 10.15, mellanlandning på event klockan 15, hemma någon gång runt 01. På eventet var dessutom flertalet aktiva i Göteborg, ett lemmeltåg av cachare hade vallfärdat till Falkenberg.

Jaja, mer intelligent att säga någon annan dag, nu är det snart läggdags. Loggarna får kanske tala för sig själva.

Needs Maintenance 3/20/2010 blaufish reported Bolsestugan (Traditional Cache) needs maintenance Halland Visit Log
Didn't find it 3/20/2010 blaufish couldn’t find Morup (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found VBGSTN (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Briggen (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found H2O #5 Reningsverk(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found H2O #4 Hushåll och Industrier (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Sommarlek (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Stranninge – ”City”(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Stranninge – Stranninge/Gård (farm) (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found The Brothers’ mound – Brödrahögarna (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Grod-dammarna /Frog ponds(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Kärleksbänken (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Havsutsikt (Traditional Cache) Halland Visit Log
Write note 3/20/2010 blaufish posted a note for Glomstenen(Earthcache) Halland Visit Log
Found it 3/20/2010 blaufish found The pier and the lighthouse(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Glomstenen eller Glumstenen / Glomstone or Glumsto (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Morups IP (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Guldfågeln (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Kvarnenolofsbo (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Hundbadet (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Centrumhuset (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Förbandsstugan (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Här var det stopp! / Dead end! (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Trollet i trollskogen(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Olofsbo Hamn / Torsviks småbåtshamn (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Havsutsikt 2 (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found The Shark (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Göingegårdens kvarn(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Bolsestugan (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found TB Hotell E6 exit 63(Traditional Cache) Västra Götaland Visit Log
Found it 3/20/2010 blaufish found Welcome to GBG #1(Traditional Cache) Västra Götaland Visit Log
Found it 3/20/2010 blaufish found Elsas barncache (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Falkenberg Skatepark(Traditional Cache) Halland Visit Log
Attended 3/20/2010 blaufish attended Fika event på G i Falkenberg (Event Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Gamla Stan (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Tullbron (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Ihåligt träd (Traditional Cache) Halland Visit Log
Didn't find it 3/20/2010 blaufish couldn’t find Falkenberg Skatepark(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Vallarnas friluftsteater(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Gustaf Adam Ehrengranat(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Dangerous water (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Laxbron (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Garvareforsen (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Hårdplast (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Stålboms konditori(Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Call home (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Falkenberg 1 (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Gamla spåret (Traditional Cache) Halland Visit Log
Found it 3/20/2010 blaufish found Falkenberg 3 (Traditional Cache) Halland Visit Log
Didn't find it 3/20/2010 blaufish couldn’t find Glommens Samlingslokal (Traditional Cache) Halland Visit Log
Needs Maintenance 3/20/2010 blaufish reported ART-i-ficial tour in Falkenberg-KONST-ig tur (Multi-cache) needs maintenance Halland Visit Log
Needs Maintenance 3/20/2010 blaufish reported Dangerous water(Traditional Cache) needs maintenance Halland Visit Log

Favoritcitat

Roliga citat är värda att överanvända. Kultrullen Crying Freeman introducerade mig till citatet ”…can smell the gun on a man, so you must kill him with the knife. Kill him with the knife!” vilket lixom aldrig blir gammalt. Om Kaprifol tar upp något stort eller litet som stört henne så kan jag lyckligt svara ”He can smell the gun on a man, so you must kill him with the knife!”. Tricket är att hitta precis lagom mängd användning så att så att är helt väntat när man kommer med det =) Uvkul helt enkelt!

Annat citat jag älskar att överbruka är ”without order there is chaos”. Och ärligt talat vet jag inte varifrån det kommer. Google:ar man så får man inga bra svar. En del använder det med referens till Edmund Burke, men det verkar inte vara ett ordspråk han själv myntat. Andra refererar till Robert’s Rules of Order (från 1915) men det framgår inte riktigt om de enbart tycker ordspråket beskriver boken eller om ordspråket finns med i boken. Undrar var jag själv lärt mig det?

Ett annat kul citat är A Dark and Hungry God Arises. Fast egentligen är det inte ens ett citat utan en boktitel. Författaren måste haft en genial dag när han kom på titeln. Tyvärr svårt att få in naturligt i samtal, men ändå ett sådant där fint citat som surrar runt i hjärnan.

En 5.11 runda till Terräng

Nu har jag allt haft lite otur…

5.11 dojjorna ATAC 6 sliter jag ut i en himla takt, och priset gör ju alltid att man funderar över om man inte skall köpa något annat. Men de dojjorna är så förbaskat sköna och sitter perfekt på foten, så det är värt att bränna ett par var nionde  månad eller så. Dessutom ser de affärsmässiga nog att bäras ihop med rock och finkläder hehe ;- )

Men att 5.11 dojjorna pajjade var inte direkt oväntat, jag hade det på känn. Att däremot ett par 5.11 byxor, som brukar hålla i oändligheten (läs: tills jag lyckas med någon hysterisk olycka, som att fastna i ett hinder eller åka rutchkana över asfalten)  visar sig vara sönder på morgonen (meh? djäkla tvättmaskin som sabbat dem?) är extrem otur.

Dessutom har jag inte tvättat på ett tag, så antalet användbara byxor var lite lågt.

Så idag bar det iväg till Terräng. Köpte ett par nya ATAC 6 som skall vaxas in osv innan jag använder dem första gången, samt alla 5.11 byxor de hade kvar i min storlek (3st). Han i kassan konstaterade att jag saknade rabattkort men fick ett gratis givet att jag handlat där mycket tidigare, det syntes om inte annat på hur jag var klädd (hehe, 2x Tatonka, 1x Magnum, 1x 5.11, gissa var det är köpt?).

Aja, man kan ju alltid fråga sig om det är otur när man får ett tillfälle att shoppa. Men hur som helst så köpte jag idag inte en enda onödig pryl utan bara det jag skulle ha, byxor och dojjor. Men visst funderar jag lite på att dra dit senare och titta runt efter lite leksaker 🙂

Lite mer buggfixande i GPS Averaging applikationen

Fixat Firefox 3.6 stöd, gjort så den skriker om Geolocation API inte är stött, fixat en felaktig HTML (script-taggen fick man visst inte stänga direkt med /> utan det var tvunget att vara explicit stänga med en egen stop tag)


<!DOCTYPE html>

<!--

 Blaufish's HTML5 Geolocation API GPS Averaging

 https://blaufish.wordpress.com/

 Some rights reserved;

 http://creativecommons.org/licenses/by-nc-sa/3.0/

-->

<html>

<canvas id="canvas" width="256" height="256">

This text is displayed if your browser does not support HTML5 Canvas.

</canvas><br/>

<font face="courier" size="-3">

<output id="output">no output</output>

</font>

<!-- 

   latlon2tile.js: This is a port of Ian Dees php class to a

   javascript prototype so you can get tile information from

   a lat/lon coordinate on the client side. By Will James of

   Tekimaki.com

 -->

<script src="latlon2tile.js"></script>

<script>

   if (navigator.geolocation == undefined) {

     output.innerText = "Error: geolocation API not accessible!";

     alert("Geolocation API required!");

   }

   var cnt, avglat, avglon, avgacc, minlat, maxlat, minlon, maxlon;

 

   var output = document.getElementById('output'); 

   

   var cnvs = document.getElementById('canvas'); 

   var context = cnvs.getContext('2d');

   

   localStorage.clear(); 

   function calculateMinMaxAvg() {

      //Calculate min, max, avg

      maxlat = Number(localStorage.getItem('lat1'));

      minlat = maxlat;

      maxlon = Number(localStorage.getItem('lon1'));

      minlon = maxlon;

      var i;

      avglat = 0;

      avglon = 0;

      avgacc = 0;

      for(i = 1; i <= cnt; i++) {

         var lat = Number(localStorage.getItem('lat'+i));

         var lon = Number(localStorage.getItem('lon'+i));

         var acc = Number(localStorage.getItem('acc'+i));

         maxlat = Math.max(maxlat, lat);

         minlat = Math.min(minlat, lat);

         maxlon = Math.max(maxlon, lon);

         minlon = Math.min(minlon, lon);

         avglat += lat/acc;

         avglon += lon/acc;

         avgacc += 1/acc;

      }

      avglat /= avgacc;

      avglon /= avgacc;

     

   }

   var avgcolor = 0;

   function paintAvg() {

      if (avglat == undefined) return;

      if (avglon == undefined) return;

      // Paint average

      switch (avgcolor) {

        case 0: context.fillStyle = 'rgb(255,255,0)'; break;

        case 1: context.fillStyle = 'rgb(0,0,0)'; break;

        case 2: context.fillStyle = 'rgb(0,255,0)'; break;

        case 3: context.fillStyle = 'rgb(0,255,127)'; break;

      }

      avgcolor = (avgcolor+1)%2;

      var tile = TileUtl.getTileCoordinate(avglat,avglon,zoom);

      var bitmap = TileUtl.getBitmapCoordinate(avglat,avglon,zoom);

      var x = bitmap.x - tile.x*256;

      var y = bitmap.y - tile.y*256;

      context.fillRect(x,y,7,7);

   }

   function log10(n) { return Math.log(n)/Math.log(10); }

 

   function paintCanvas() {

     

      // Clear canvas

      context.clearRect(0,0,cnvs.width,cnvs.height);

      // Paint positions

      for(i = 1; i <= cnt; i++) {

         var lat = Number(localStorage.getItem('lat'+i));

         var lon = Number(localStorage.getItem('lon'+i));

         var acc = Number(localStorage.getItem('acc'+i));

         var tile = TileUtl.getTileCoordinate(lat,lon,zoom);

         var bitmap = TileUtl.getBitmapCoordinate(lat,lon,zoom);

         var x = bitmap.x - tile.x*256;

         var y = bitmap.y - tile.y*256;

         var color = 'rgb(255,0,0)';

         if (acc>50) color = 'rgb(255,100,150)';

         if (acc>100) color = 'rgb(255,150,150)';

         if (acc>200) color = 'rgb(255,200,200)';

         var size = 1 + Math.ceil(5*log10(acc));

 

         context.fillStyle = color;

         context.fillRect(x,y,size,size);

      }

      //paintAvg();

      output.innerHTML += '<br/>done!';

    }

    

    function fmt(latlong,ne,sw) {

       var dir = (latlong>0) ? ne : sw;

       latlong = Math.abs(latlong);

       var deg = Math.floor(latlong);

       var res = latlong - deg;

       var min = (res * 60);

       min = Math.round(min * 10000) / 10000;

       return dir + " " + deg + " " + min;

    }

    function ffmt(lat,lon) {

       var s = fmt(lat,'N','S') + ' ' + fmt(lon,'E','W');

       s += ' <a href="http://maps.google.se/maps?q=';

       s += lat+'+'+lon+'">map</a>'; 

       return s;

    }

    var zoom = 17;

    var TileUtl = new Tile();

    function setBg(lat,lon) {

      var tileCoords = TileUtl.getTileCoords( lat, lon, zoom );

      var url = 'http://mt.google.com/vt/x=';

      url += tileCoords.x + '&y=' + tileCoords.y + '&z=' + zoom;

      cnvs.style.backgroundImage = 'url('+url+')';

    }

    function scrollMap(position) {

      output.innerHTML = '';

      cnt = 0;

      if (localStorage.getItem(cnt) !== undefined) {

        cnt = localStorage.getItem('cnt');

      }

      cnt++;

      var lat = position.coords.latitude;

      var lon = position.coords.longitude;

      var acc = position.coords.accuracy;

      localStorage.setItem('cnt', cnt);

      localStorage.setItem('lat'+cnt, lat);

      localStorage.setItem('lon'+cnt, lon);

      localStorage.setItem('acc'+cnt, acc);

      calculateMinMaxAvg();

      output.innerHTML += 'cur: ' + ffmt(lat,lon);

      output.innerHTML += ' ' + Math.round(position.coords.accuracy);

      output.innerHTML +=  'm cnt:' + cnt;

      output.innerHTML += '<br/> avg: ' + ffmt(avglat,avglon);

      output.innerHTML += '<br/> min: ' + ffmt(minlat,minlon);

      output.innerHTML += '<br/> max: ' + ffmt(maxlat,maxlon);

      output.innerHTML += '<br/>';

      setBg(avglat,avglon);

      paintCanvas();

  }

  function errorCallback(e) {

    output.innerText = "Error: " + e.code + " " + e.message;

  }

  navigator.geolocation.watchPosition(scrollMap, errorCallback);

  function gcp() {

    navigator.geolocation.getCurrentPosition(

       new function(e){}, 

       errorCallback, 

       {maximumAge:500, timeout:500} 

    );

  }

  setInterval( "gcp();", 5000 );

  setInterval( "paintAvg();", 250 );

</script>

</html>